Globalvariable
Michi
- php
Hi Leute,
Hab grad angefangen mich mit PHP auseinander zu setzen und bin bei einer Funktion hängen geblieben!!!
Und zwar hab ich für mein php-dokument drei unterschiedliche Stylesheets in .css erstellt, die er beim aufrufen der Page nach einem Zufallsverfahren aussucht.
DAS PROBLEM: Er sucht nicht nur für die Hauptseite, sondern auch für die Unterseite nach einem Zufallsverfahren die .css aus.
Ich will aber die erste ausgesuchte .css in einer Globalvariablen ($_Post) abspeichern und an die unterseiten weitergeben, damit die erste Seite den kompletten Aufbau bestimmt und er nur beim aktualisieren der ersten Seite geändert werden kann.
Ich hoffe ich hab mich richtig ausgedrückt und hoffe dass ich bald von euch Hilfe kriege.
Mein aktueller Quellcode:
<?php
function css() {
srand((double) microtime() * 1000000) ;
$a = rand(1, 3) ;
//Zufallszahl auswerten
if ($a == 1) {
echo "rot.css" ;
} elseif ($a == 2) {
echo "blau.css" ;
} else {
echo "grau.css" ;
}
} //Ende von css()
?>
<html>
<head>
<title> Mischiii© </title>
<LINK rel="stylesheet" type="text/css" href="<?php css(); ?>">
<body> ...
Hi Leute,
Hallo Leut.
in einer Globalvariablen ($_Post)
Du bringst da was durcheinander. Informier dich nochmal über $_POST, Geltungsbereiche und - was dir weiterhilft - $_SESSION.
Gruß, Volker
Hi Leute,
Hi
Hab grad angefangen mich mit PHP auseinander zu setzen und bin bei einer Funktion hängen geblieben!!!
Ok. Das macht nichts, dazu sind wir da.
DAS PROBLEM: Er sucht nicht nur für die Hauptseite, sondern auch für die Unterseite nach einem Zufallsverfahren die .css aus.
Ist logisch, bei der Anweisung die du der Page gibst... Bei jedem Aufruf einer Seite wird ja die PHP Funktion css() aufgerufen und eben ein zufälliges Desing ausgegeben.
Ich will aber die erste ausgesuchte .css in einer Globalvariablen ($_Post) abspeichern und an die unterseiten weitergeben, damit die erste Seite den kompletten Aufbau bestimmt und er nur beim aktualisieren der ersten Seite geändert werden kann.
Globale Variable hilft dir auch nicht direkt, dann müsstest du diese immer jeder Seite weitergeben. Aber sieh dir am besten mal PHP-Sessions an...
http://tut.php-q.net/sessions.html
http://www.php-faq.de/ch/ch-version4_session.html
hi,
DAS PROBLEM: Er sucht nicht nur für die Hauptseite, sondern auch für die Unterseite nach einem Zufallsverfahren die .css aus.
Ich will aber die erste ausgesuchte .css in einer Globalvariablen ($_Post) abspeichern und an die unterseiten weitergeben, damit die erste Seite den kompletten Aufbau bestimmt und er nur beim aktualisieren der ersten Seite geändert werden kann.
Erst mal sollten wir klären, was man unter "global" versteht.
"Global" bedeutet, dass eine Variable im gesamten Script überall ansprechbar ist.
Was du hingegen willst, ist eine Variable, die über die Laufzeit einer Scriptinstanz hinaus "weiterlebt".
Dazu benutzt man im allgemeinen Sessions.
Könnte für den Fall evtl. etwas zu hoch gegriffen sein, ein einfaches Cookie täte es da vielleicht auch.
gruß,
wahsaga
Hi,
Könnte für den Fall evtl. etwas zu hoch gegriffen sein, ein einfaches Cookie täte es da vielleicht auch.
Und da ich vermute, dass du nicht weisst, was Cookies sind (nein, nicht die kleinen braunen mit Schokostücken) und wie man Sie setzt, les dir doch das mal durch:
Zugreifen kannst du auf das Cookie dann z.B. per $_COOKIE['name_des_cookies']
Bedenke aber bitte, dass:
1. nicht jeder Browser Cookies akzeptiert/annimmt
2. du das Cookie vor jedlicher Ausgabe des Scripts setzen musst (auch vor z.B. <doctype>, <html>, <head> etc.!)
Die Alternative mit den Sessions wurde schon genannt (Manual), hat aber den Nachteil, dass die Daten nicht "ewig" gespeichert werden.
Wenn du ein Cookie setzt, das 20 Jahre gültig ist, wird dieser Rechner das Cookie die nächsten 20 Jahre senden (wenn du das willst) - vorausgesetzt es wird nicht manuell vom User gelöscht.
Außerdem sind Cookies für den Server längst nicht so ressourcen- /speicherintensiv wie Sessions (wobei es in diesem Fall fast egal ist, da ich nicht davon ausgehe, dass du 10 Millionen Besucher die Stunde erwartest ;) )
Greets - parse_error;
Hi,
ich denke du hast einen Denkfehler.
Wenn eine Unterseite 2 Stunden nach der Hauptseite aufgerufen wird, wird eine neue PHP- Instanz geladen, die alten Werte wie $_POST stehen nicht zur Verfügung.
Du musst sie als Parameter übergeben von Seite zu Seite
Kalle
Hi,
Wenn eine Unterseite 2 Stunden nach der Hauptseite aufgerufen wird, wird eine neue PHP- Instanz geladen, die alten Werte wie $_POST stehen nicht zur Verfügung.
wenn der Aufruf der Unterseite 2 Nanosekunden nach dem der Hauptseite kommt, passiert übrigens exakt das selbe.
Cheatah
Hi,
wenn der Aufruf der Unterseite 2 Nanosekunden nach dem der Hauptseite kommt, passiert übrigens exakt das selbe.
Logisch. Wenn ich sagen würde: "Wenn mich die Polizei mit 50 kmh zuviel erwischt, passiert ..."
Und du könntest ergänzen: "Passiert jedem anderen auch."
Ich wollte damit andeuten, dass auch eine Session- Variable eher nicht geeignet ist. Okay, hätte ich klar schreiben müssen.
Kalle
hi,
Ich wollte damit andeuten, dass auch eine Session- Variable eher nicht geeignet ist.
Du hast aber von POST geredet - und bei POST wär's egal, ob zwei Stunden oder zwei Nanosekunden.
Bei Sessionvariablen sieht das aber anders aus (und ist auch von der Konfiguration abhängig).
gruß,
wahsaga