Mailinglisten-Archive |
christoph lockingen wrote: Hi Christoph, Du hast ein generelles Problem in der Programmierung mit PHP. PHP ist eine Scriptsprache. Pro Request wird jede einzelne Variable, die Header, die übermittelten Werte in URL, POST, COOKIE, SESSION etc. ermittelt und entsprechend aufbereitet, der Source Code mit seinen include,include_once,require,require_once zusammengesteckt und und und. Sobald das Script seinen Dienst getan hat und am Ende angelangt, sind diese Daten komplett verloren. > Also schmeiße ich die in jedem Footer mittels > $_GET['mysessionid'] rein und kann die dann auch > mittels $_GET auslesen ... Gerade probiert. Funktioniert nicht... > $_GET ist das Array, was bei JEDEM Request von PHP auf Grund der Daten in der URL gebaut wird. Du kannst so viel da rein schmeißen wie du willst, es ist weg, wenn das Script erneut oder ein anderes geladen wird. Wenn Du die Session-ID mitschleifen willst, musst du Sie anhängen an URLS, die von Deinem Script rausgeschrieben werden und auch an Header("location: ...") muss sie angehängt werden. Das selbe gilt für $_POST (außer die Herkunft der Infos darin, diese kommen natürlich aus Formularen, die mit action=POST abgeschickt wurden). Wenn Du mal im PHP Handbuch nachgeschaut hättest, und Dir das durchlesen, was dort steht, wüsstest Du das (RTFM: Read The Fucking Manual). Soweit ich weiß kannst Du diesen Zwang umgehen, wenn Du use_trans_sid =1 in der PHP.ini eingestellt hast. > PHP kann das nur bedingt automatisch... Sind bei Dir die Cookies aus? > session_start(); > Liefert jedesmal eine andere ID, obwohl kein Browserfenster geschlossen > wurde. Shcalte ich die Cookies in der php.ini wieder ein - funktioniert > es... Weil der Browser sich die ID gemerkt hat (über den Cookie)... > > > use_trans_sid steht auf eins - gleiches Problem. > Ich würde an Deiner Stelle auch einfach mal die Session Funktionen verwenden, dann ginge das auch... > function lf_session_start() > { > global $lid; > $lid=md5(str_replace('.','/',$IP)).md5( mt_rand (10000,999999)); // > SESSION_ID > } Was Du hier tust, ist eine SessionID selber generieren. Entweder, Du kümmerst Dich selber um das SessionHandling, oder Du benutzt die Funktionalität von PHP... musst Dich entscheiden. Wenn Du die von PHP nehmen willst: Lies im Handbuch nach. session_start(), session_register() etc. Deine Funktion lf_session_id() ist übrigens ziemlich sinnlos, wozu die (eh globale) Variable $lid zurückliefern?? Totaler Unfug. Außerdem: Woher soll denn diese Variable kommen? Das kann so nur funktionieren wenn Du register_globals = on in der PHP.ini eingestellt hast. Und davon rate ich Dir ab. $lid ist auch nicht gleich $_GET['lid']. Wenn Du diese Variable unbedingt verwenden willst, dann setze ihren Wert: $lid = $_GET['lid']. -- Dennis Sterzenbach http://www.darknoise.de/
php::bar PHP Wiki - Listenarchive