DFBL-Benjamin Geschrieben 3. Januar 2003 Geschrieben 3. Januar 2003 ich habe folgende Session geschrieben: <? session_start(); session_save_path('C:/TEMP/'); session_set_cookie_params(3600); $benutzer_id = session_register('benutzer_id'); ?> [/PHP] jetzt meine Frage: Wie kann ich die Session zerstören, das die Session nicht mehr gibt? ich möchte das aber nur tun, wenn der USER im Programm sich abmeldet, durch Klick! wie muss ich das schreiben in einer Schleife z. B.? noch was anderes: [PHP] session_set_cookie_params(3600); ist diese Zeile sinnvoll, weil ich nach Tagen auf meinem Lokalen Rechner immer noch eingeloggt bin! oder habe ich da was falsch geschrieben, das es nicht richtig funktioniert, das er das Cookie nach 3600 sec zerstört? Zitieren
gurkenpapst Geschrieben 3. Januar 2003 Geschrieben 3. Januar 2003 Hi, <? session_start(); session_save_path('C:/TEMP/'); session_set_cookie_params(3600); $benutzer_id = session_register('benutzer_id'); ?> [/PHP] darin solltest du etwas ändern: [PHP] <? session_save_path('C:/TEMP/'); /* solltest du nur verwenden wenn du einen anderen Pfad als den der php.ini verwenden willst. Muss ausserdem vor session_start(); */ session_set_cookie_params(3600); /* Würde ich auch vor dem session_start() machen.*/ session_start(); /* ist total super */ $benutzer_id = session_register('benutzer_id'); /* ist 1. falsche Syntax und 2. komfortabler durch $_SESSION zu lösen. Ich würde es entweder: session_register("benutzer_id"); $benutzer_id = 123; oder so: $_SESSION["benutzer_id"] = 123; machen. Bei der ersten Möglichkeit musst du darauf achten: Aus [1]: "Diese Funktion registriert eine globale Variable. Wenn Sie eine Session- Variable innerhalb einer Funktion registrieren wollen, müssen Sie sicherstellen, dass Sie sie unter Verwendung des global-Schlüsselworts oder des $GLOBALS[]- Arrays global machen " */ ?> Eine session zerstörst du mit session_destroy(); falls das nicht funktioniert: http://www.dclp-faq.de/q/q-sessions-loeschen.html gruß gurkenpapst [1]: http://www.php.net/manual/de/function.session-register.php Zitieren
DFBL-Benjamin Geschrieben 4. Januar 2003 Autor Geschrieben 4. Januar 2003 session_register("benutzer_id"); $benutzer_id = 'benutzer_id'; // benutzer_id ist dann die ID, die übergeben wurde? [/PHP] ist die Erklärung von mir so richtig? ich habe nichts gefunden ob das so OK ist! ich denke ich habs falsch erklärt? mit ist die Bedeutung nicht klar! hoffe du kannst mir das nochmal näher erklären! Zitieren
gurkenpapst Geschrieben 4. Januar 2003 Geschrieben 4. Januar 2003 Ja es ist so schon richtig (wie aus der php-doku zu entnehmen http://www.php.net/manual/de/function.session-register.php ) Ich würde an deiner stelle lieber $_SESSION["benutzer_id"] = 123; benutzen Gruß gurkenpapst Zitieren
DFBL-Benjamin Geschrieben 4. Januar 2003 Autor Geschrieben 4. Januar 2003 das letzte Beispiel ist noch besser! jetzt wirds mir klar! $_Session['benutzer_id'] = benutzer_id // das ist die Übergebene Anzahl z. B. und die $_Session['benutzer_id'] ist der Name der ID! so richtig? Zitieren
gurkenpapst Geschrieben 5. Januar 2003 Geschrieben 5. Januar 2003 richtig, auf die Variable $_Session["benutzer_id"] kannst du dann auf jeder Seite nach einem session_start() zugreifen. In der php.ini solltest du session_autostart ausstellen. Zitieren
DFBL-Benjamin Geschrieben 5. Januar 2003 Autor Geschrieben 5. Januar 2003 und wie erhalte ich dann die Variable? Auslesen des Ergebnisses? durch: $benutzer_id = $_Session['benutzer_id'] = benutzer_id; stimmt das so? oder wie geht das jetzt genau? bei mir zeigt er keine Session_id mehr an! bzw. auch kein Ergebnis mehr. ich muss irgendetwas falsch gemacht haben! meine Session: <? session_save_path('C:/TEMP/'); session_set_cookie_params(3600); session_start(); $_SESSION["benutzer_id"] = 'benutzer_id'; ?> [/PHP] Zitieren
DFBL-Benjamin Geschrieben 5. Januar 2003 Autor Geschrieben 5. Januar 2003 habs jetzt so gelöst: <? 1: session_save_path('C:/TEMP/'); 2: @session_start(); 3: session_register("benutzer_id"); 4: $benutzer_id = " ".$HTTP_POST_VARS['benutzer_id']." "; ?> [/PHP] zu Zeile 4: diese Zeile muss ich dann ja nicht überall reinschreiben, oder? nur in die Seite, wo die Logindaten überprüft werden, da wird dann die benutzer_id, in die Session_Variable reingeschrieben. wie bekomme ich dann das Ergebnis daraus? oder steht das dann auch in $benutzer_id ohne das anzugeben? Zitieren
gurkenpapst Geschrieben 5. Januar 2003 Geschrieben 5. Januar 2003 Hi, nochmal: streiche Zeile 3+4 und nutze dafür: $_SESSION["benutzer_id"] = $_POST["benutzer_id"]; /* wenn du im Formular ein input feld mit name="benutzer_id" hast und als method post verwendest */ echo $_SESSION["benutzer_id"]; // gibt dann die benutzer_id aus [/PHP] die variable $_SESSION["benutzer_id"] kannst du nach einem session_start(); dann auf jeder Seite verwenden. In deiner vierten Zeile würde ich übrigens wenn überhaupt die Anführungszeichen und die Punkte weglassen, du fügst damit nur vorher und nachher ein leerzeichen an... gruß gurkenpapst Zitieren
DFBL-Benjamin Geschrieben 6. Januar 2003 Autor Geschrieben 6. Januar 2003 die Ausgabe mit echo $_SESSION[benutzer_id] klappt mal auf der 2. PHP-Seite aber auf der 3. PHP-Seite dann wieder nicht mehr! 1. PHP-Seite Eingabe Formular 2. PHP-Seite <? session_save_path('C:/TEMP/'); session_start(); $_SESSION["benutzer_id"] = $_POST["benutzer_id"]; ?> [/PHP] 3. PHP-Seite [PHP] <?php session_start(); ?> fehlt da noch was, bei der 3. PHP-Seite? ich habe glaube ich wenn ich es noch genau weis, müsste das reichen, oder? welche Einstellungen muss ich in der PHP.INI einstellen, das es so funktioniert? Zitieren
gurkenpapst Geschrieben 6. Januar 2003 Geschrieben 6. Januar 2003 deine 3. php Seite sollte auch die Variable ausgeben. Sie sollte min. so aussehen: <?php session_start(); echo $_SESSION["benutzer_id"]; ?> [/PHP] Zitieren
DFBL-Benjamin Geschrieben 6. Januar 2003 Autor Geschrieben 6. Januar 2003 das ist mir schon klar, dass das noch rein muss! aber ich will ja nicht, das es gleich oben ausgegeben wird, sondern weiter unten in einer Mysql-Anfrage z. B.! also wie bekomme ich das Ergebnis in die nächste Seite rein bzw. ausgegeben? mit echo $_SESSION[benutzer_id] funktioniert es nicht! Zitieren
gurkenpapst Geschrieben 6. Januar 2003 Geschrieben 6. Januar 2003 Du kannst die varable in jedem Script nach einem initialen session_start(); aufrufen. In einer MySQL abfrage wäre es Beispielsweise: // ich nehme an das benutzer_id z. B. so aussieht: karl123 $dbquery = mysql_query("SELECT spaltexy, spaltez FROM tabellexyz WHERE benutzer_id = '" . $_SESSION["benutzer_id"] . "'") or die (mysql_error()); [/PHP] Ich empfehle dir dringend die php Dokumentation, welche ausserordentlich gut gelungen ist meiner Meinung nach, zu lesen/zu Hilfe zu ziehen. Dir fehlt grundlegendes Wissen über Sessions und deren Variablen. http://www.php.net/manual/de/index.php unbedingt mit beschäftigen... Zitieren
DFBL-Benjamin Geschrieben 6. Januar 2003 Autor Geschrieben 6. Januar 2003 ich habe mich damit beschäftigt, aber es will ja bei mir nicht funktionieren, so wie du das schreibst. die register_globals = ON die session.auto_start ist auf 0! muss ich noch was anders haben? Zitieren
gurkenpapst Geschrieben 6. Januar 2003 Geschrieben 6. Januar 2003 Was funktioniert nicht und welche Fehlermeldung bekommst du? Und was willst du genau machen/erreichen? Zitieren
DFBL-Benjamin Geschrieben 6. Januar 2003 Autor Geschrieben 6. Januar 2003 ich bekomme keine Fehlermeldung, das ist ja das komische daran! irgendwo muss der Fehler drin sein im Programm. <? session_start(); ?> <html> <head> <title>Termin- und Urlaubsplaner</title> <meta name="author" content="Benjamin Gaus_2"> <meta name="generator" content="Ulli Meybohms HTML EDITOR"> </head> <body bgcolor="#FFFFFF" link="#0000FF" alink="#0000FF" vlink="#0000FF"> <font size="2" color = "#0040FF"> <p align=center><img src="banner/banner_01.jpg" width="500" height="100" border="0" alt=""></p> <p align="right"> <?php // Zugangsdaten zur Datenbank $conn = mysql_connect("localhost","benjamin","*********"); // Wechsel der Datenbank mysql_select_db(projekt_bkik); // Mysql-Befehl zum Ueberpruefen der Zugangsdaten mit den Datenbank-Daten $sql = "select name from mitarbeiter where "; $sql .= "id = '".$_SESSION["benutzer_id"]."' "; $result = mysql_query($sql, $conn); $anzahl = mysql_num_rows($result); echo "Benutzer_id: $_SESSION[benutzer_id]<br>"; if($anzahl > 0) { echo "if<br>"; while($inhalt = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "while<br>"; echo "<table border=0 align=right width=20%>"; echo "<tr>"; echo "<td><font size=3 color = #0040FF>"; echo "<b>Hallo <?php echo $inhalt[name]; ?></b>"; echo "</font>"; echo "</td>"; echo "</tr>"; echo "<tr>"; echo "<td><font size=2 color = #0040FF>eingeloggt am: <?php echo date('d M Y'); ?></font></td>"; echo "</tr>"; echo "<tr>"; echo "<td><font size=2 color = #0040FF>um: <?php echo date('G:i'); ?> Uhr!</font></td>"; echo "</tr>"; echo "</table>"; } } ?> </font> </body> </html> [/PHP] es wird keine Benutzer_id ausgegeben, habe extra eine Ausgabe gemacht, egal wo es steht, wenn ich es dann so ausgeben möchte, wie du mir das gegeben hast, gibt es eine Fehlermeldung: [PHP] echo "Benutzer_id: $_SESSION["benutzer_id"]<br>"; Fehlermeldung: Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\FoxServ\www\intern\projekt_hp\top.php on line 24 wenn ich die Anführungszeichen in der []-Klammer weglasse, dann gibt es keinen Fehler! irgendwie wird die Session nicht richtig gesetzt bzw. weitergegeben! aber bei der Überprüfung der Login-Daten, da funktioniert die Session einwandfrei, aber in den drauffolgenden Seiten dann nicht mehr! Zitieren
Wolle Geschrieben 6. Januar 2003 Geschrieben 6. Januar 2003 Originally posted by DFBL-Benjamin irgendwie wird die Session nicht richtig gesetzt bzw. weitergegeben! Nö, aber falsch ausgegeben... Probiers mal so: echo "Benutzer_id: ".$_SESSION["benutzer_id"]."<br>"; Genau so in dem unteren echo-Befehlen. Wenn du php-Befehle, wie "if" oder echo im echo hast, werden die nicht funktionieren. Zitieren
DFBL-Benjamin Geschrieben 6. Januar 2003 Autor Geschrieben 6. Januar 2003 so wie du mir das gesagt hast, funktioniert es leider auch nicht! gibt mir auch kein Ergebnis aus! muss ich noch irgendetwas in PHP.ini setzten, was ich noch nicht angegeben habe? Zitieren
gurkenpapst Geschrieben 6. Januar 2003 Geschrieben 6. Januar 2003 genau, Wolle. @DFBL 1. echo "Benutzer_id: $_SESSION[benutzer_id]<br>"; ^^ ^^ ^^ /*Es kann nicht gehen weil das Array $_SESSION zum ansprechen seiner Elemente Anführungszeichen erwartet. Schreibst du bei Dir jetzt aber einfach diese hinein, denkt echo hier wäre die Textausgabe zuende. Von daher musst du die ausgabe mit . aneinanderketten*/ [/PHP] 2. Du kannst PHP Code nicht mit echo an den parser schicken. Bzw du kannst schon, er wird dann nur nicht ausgeführt/berücksichtigt Zitieren
DFBL-Benjamin Geschrieben 7. Januar 2003 Autor Geschrieben 7. Januar 2003 wo sollen den die Punkte hin? habs jetzt so: echo "Benutzer_id: ".$_SESSION["benutzer_id"]."<br>"; ^^ [/PHP] du hast noch 2 Pfeile auf die Mitte gemacht. ich habe etliche Versuche gemacht, aber bis jetzt hat noch nichts gestimmt! was muss dahin? Zitieren
DFBL-Benjamin Geschrieben 7. Januar 2003 Autor Geschrieben 7. Januar 2003 ich weis wo der Fehler war! es muss in jede Datei: session_save_path('C:/TEMP/'); rein, sonst weis die Session ja nicht, wo die Session abgelegt wurde! Zitieren
gurkenpapst Geschrieben 7. Januar 2003 Geschrieben 7. Januar 2003 falls es immer der gleiche Ort sein soll würde ich diesen Pfad in die php.ini eintragen (session.save_path "<Hier den Pfad>"), damit lassen sich dann solche Fehlerquellen minimieren. Daran hab ich gar nicht mehr gedacht, da ich es hinterher in meinen Beispielen nicht mehr verwendet hab, sorry... Die beiden Pfeile in der Mitte sollten verdeutlichen das an dieser Stelle etwas fehlte, und zwar die Anführungszeichen Zitieren
DFBL-Benjamin Geschrieben 7. Januar 2003 Autor Geschrieben 7. Januar 2003 jetzt hat es ja gefunzt! bin richtig froh, dass ich das jetzt endlich gefunden habe! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.