Design wechsel...
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
abfrage
ausgabe
code
dank
datenbank
einbinden
einlesen
file
funktion
inhalt
klartext
kopf
layout
letzte argument
minute
standard
stunden
system
versuchen
verzeichnis
-
Hi, ich hab da mal ne Frage:
Wie kann ich meine HP mir einem design wechsel machen? Also Praktisch verschiede layouts haben... einmal ein rotes / blaues / gelbes / etc. der inhalt soll gleich bleieben... nur die Bilder sollen sich ?ndern... auf knopfdruck halt...
dank???... bin ma gespannt wie schwer dat ist... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
also ich machs ?ber php mit templates.
in nem unterordner (zB themes) liegen die unterschiedlichen designs in ihren verzeichnissen.
jedesmal wenn du das layout ausgeben willst nutzte am besten ne funktion, der du das layout-verzeichnis ?bergibst...
ach am besten ich mach nen beispiel!
----------------------------------
// Falls kein Layout ausgew?hlt wurde, w?hle den Standard
if($theme == "") $theme = "standard";
function template($theme,$file,$argv) {
// Dateihandle deklarieren
$handle = fopen("themes/$theme/$file.html","r");
// Speichern des Dateipfades
$tmpl_file = "themes/$theme/$file.html";
// Einlesen der Datei in einen String und Konvertierung zu einem Array
$thefile = implode("", file($tmpl_file));
// Hinzuf?gen von Backslashes "\" zur Korrektur von doppelten Anf?hrungsstrichen
$thefile = addcslashes($thefile,'"');
// Variablendeklaration innerhalb einer vorhandenen Variable
$thefile = "\$r_file=\"".$thefile."\";";
// Ausf?hren des Variableninhalts als PHP-Code
eval($thefile);
// Ausgabe der erzeugten Variable "$r_file"*/
return $r_file;
}
function main($theme) {
// Einbinden des Kopfes der Seite
echo template($theme,header,$argv);
// Abfrage der Datenbank (SQL)
$query = "select id,name,mail,web,icq,text from user where active=1";
// Abfrage der Datenbank (Query)
$result = mysql_query($query) or die ("MySQL-Fehler: ".mysql_error());
// Einlesen der Daten in die entsprechenden Variablen
while(list($argv[0],$argv[1],$argv[2],$argv[3],$argv[4],$argv[5]) = mysql_fetch_array($result)) {
// Aufruf der template-Funktion zum Einbinden des Layouts
echo template($theme,mod_list,$argv);
}
// Einbinden des Fu?es der Seite
echo template($theme,footer,$argv);
}
switch($op) {
default:
main($theme);
break;
}
----------------------------------
irgendwo (am besten im kopf) haste dann nen auswahlelement (zB select-box) wor?ber man sein layout w?hlen kann.
damit ?nderungen auch auf anderen gelinkten seiten funzen das gew?hlte layout entweder in einer mysql-db, in sessions und/oder cookies sichern.
so ich hoffe der code is nich zu kompliziert... aber es sind ja inline-kommentare drin.
viel spass!
PS: @any mod: das thema geh?rt wohl imho eher ins php-forum... -
ja soory da ich nicht wusste wie man es umsetzt... PHP / Java / Html .... hab ich es einfach mal hier reingeschrieben...
aber schonmal danke...ich werde es mal versuchen.... thx =)
Aber wie funktioniert das mit den cokies genauer? also so dat er es sich merkt? -
einen cookie musst du unbedingt vor jeder anderen ausgabe (also echo, print etc.pp) setzen!
der syntax ist folgender:
-> setcookie("derNameDesCookies",base64_encode($inhalt),time()+3600);
- der name des cookies sollte selbst erkl?rend sein...
- in $inhalt kommt dann alles rein, was du im cookie haben willst (in deinem fall wahrscheinlich benutzerID oder -NAME und das gew?hlte Layout).
- base64_encode(), weil ansonsten der inhalt des cookies im PL (plaintext => klartext) auf dem remote-system gesichert wird. erscheit dir bei id und layout vielleicht nicht so wichtig, aber wenn einer dein cookie im klartext lesen (und dem entsprechend nachschreiben kann), k?nnte er (bei einer nich so dollen user-verwaltung) in deinen user-bereich... base64_encode ist zwar keine dolle verschl?sselung aber besser als keine! (immerhin muss sie ja auch reversibel sein... )
- und das letzte argument der funktion ist die lebensdauer des cookies. hier: time()+3600, was bedeutet, dass er in einer stunde abl?uft.
? - time() -> jetzigen zeitpunkt ermitteln (unix-timestamp)
? - 3600 -> 60 (sekunden) * 60 (minuten) (man k?nnte es auch noch weiter hochsetzen... * 24 (stunden) zB... )
wenn du das letzte argument nicht mit angibst wird der cookie mit schlie?en des browsers gel?scht. (ende der session)
in deinem fall k?nnte der code also so aussehen:
-> setcookie("meinCookie",base64_encode($userID.":".$theme),time()+3600);
und hier das auslesen:
-> $cookie = explode(":",base64_decode($_COOKIE["meinCookie"]));
-> $userID = $cookie[0];
-> $theme = $cookie[1];
soderle... hier noch nen kleinen link: www.php-center.de/de-html-manual/ imho die beste php-page mit nem klasse tut!
biba! system -
danke danke... ich werde mich mal dran setzten.. bin noch nicht so gut in php... aber werde mal php-center st?bern... gute tuts sind immer gut =)
danke nochma.. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage