Session nicht global
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
ausgegeben fehler
besucher
break
code
date
datei
datum
ende
endung
liebe gemeinde
nachricht
problem
re
session
speichern
tag
url
verfasser
zeile
-
Hallo tag/re">ref="/tag/liebe gemeinde">liebe Gemeinde,
Ich will Session() nutzen um auf jeder neuen Seite die Passwortabfrage zu prüfen.
<?php session_start(); $name1 = $_POST["nike"] ; $name2= $_POST["passw"] ; $name3 ="Frank" ; $_SESSION["nike"] = $name1; $datumheute = date("Y.m.d",time()); ?>
Hier auf der Seite kann ich mit Session auf die Variable anzeigen und nutzen.
dann wechsel ich auf die nächste Seite:
und öffne wie gefordert als erstes mit:
<?php session_start(); $_SESSION["nike"]; $datumheute = date("Y.m.d",time()); ?>
dann ist aber die Variable leer.
Auch hier wieder, komischer Weise funktioniert es auf dem Apache XAMPP.
Vielen Dank für eure Mühen,
einen schönen Sonntag abend,
Frank -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
vaterbesuch schrieb:
Die Variable steht hier nur da und tut nichts. Ich denke mal, du weißt dass du sie auch ausgeben musst (mit echo)
$_SESSION["nike"];
Dann bliebe noch zu erwähnen, dass Sessions nur auf der gleichen Domain funktionieren.
Beispiel: vaterbesuch.lima-city.de hat eine andere Session als www.vaterbesuch.lima-city.de
Falls das nicht hilft, dann poste mal ein vollständiges Skript und dazu einen Link, wo es steht. -
Hallo fuerderer,
ja das weiß ich, dass zur Ausgabe dann ein Echo dazu gehört
Beispiel: vaterbesuch.lima-city.de hat eine andere Session als www.vaterbesuch.lima-city.de :
Ich verlassen den Ordner ja garnicht, wechsel innerhalb der Adresse.
Vielen Dank erst mal für die Mühen,
Frank
-
Schreib mal
var_dump($_SESSION);
nach dem Speichern und (vor oder nach) dem Lesen.
Wird der Name überhaupt nicht ausgegeben -> Fehler beim Speichern.
Wird er nur beim Speichern ausgegeben -> Fehler bei der Übertragung, wie gesagt: prüfe die Domain. Oder du hast Cookies deaktiviert.
Wird er in beiden Fällen ausgegeben -> Fehler bei der Ausgabe.
Und wenn du nicht weiterkommst, dann poste das vollständige Skript oder den fehlerhaften Teil.
Bei dem was ich bisher sehe ist der Fehler nicht erkennbar. -
Hab var_dump eingegeben. Auf der Startsessionseite und am ende dieser und am Start der Seite, wohin er springt.
Auf der Startseite zeigt er am Anfang und zum Ende :
array(1) { ["nike"]=> string(5) "Frank" }
an.
Und auf der nächsten dann. : array(0) { }
Da ist er dann leer.
Irgendwo geht das verloren.
Hier mal das Script. Hoffe es ist nicht zu viel. Versteht sich bitte von selbst, dass der Kalenderteil nicht von mir ist. ,
<?php session_start(); $name1 = $_POST["nike"] ; $name2= $_POST["passw"] ; $name3 ="Frank" ; $_SESSION['nike'] = $name1; $datumheute = date("Y.m.d",time()); var_dump($_SESSION); ?> <html> <head> <title>Eintrag eins</title> <meta charset="iso-8859-1"/> <meta name="description" content=""/> <meta name="author" content="Frank Kohser"/> <meta name="keywords" content=""/> <meta name="generator" content="Webocton - Scriptly (www.scriptly.de)"/> <meta name="viewport" content="width=150" /> <!-- Kalender-Dateien einbinden --> <script type="text/javascript" src="inc/calendar.js"></script> <link rel="stylesheet" type="text/css" href="inc/calendar.css" /> <link href="style.css" type="text/css" rel="stylesheet"/> <style type="text/css"> body { background-color:#FFFFC0; font-style: italic ; text-align: center; width: auto; } h1 { font-size:25pt; background-color:#ccffff; color:#0A0092; border:10px double navy; height:35px; width: 100%; } h3 { font-size:25pt; background-color:#ffb2b2; color:#0A0092; border:10px double navy; height:35px; width: 100%; } p { font-size:30pt; color: #000f80} div.urot { background-color: #ff0000; color: #ffff00; } a:link { color:#0A0092; } a:visited { color:#FF0000; } a:hover { color:#FFFF00; background-color: #ff00FF; } a:active { color: #000000; } </style> </head> <style type="text/css"> a:link { text-decoration:none; font-weight:bold; color:#e00000; } a:visited { text-decoration:none; font-weight:bold; color:#800000; } a:hover { text-decoration:none; font-weight:bold; background-color:#ff0; } a:active { text-decoration:none; font-weight:bold; background-color:#cff; } a:focus { text-decoration:none; font-weight:bold; background-color:#080; } </style> </head> <body> <div align="center"> <?php if ( die Passwortabfrage steht hier drin ) { ?> <img src="Vater.png" style="float:center;" width="50%" alt="JPEG-Datei jpeg muss sein" /> <p align="center"> <table border="0" style="float:center;" bgcolor="#C5C586" cellpadding="2" cellspacing="3" summary="" width="50%" style="font-size:100%"> <tr> <td align="center" valign="middle" style="width: 20%;"><a href="++++++++.php">Startseite</a></td> <td align="center" valign="middle" style="width: 20%;"><a href="+++++++.php">Daten ändern</a></td> <td align="center" valign="middle" style="width: 20%;"><a href="++++++++.php">Nachricht<br />eingeben</a></td> <td align="center" valign="middle" style="width: 20%;"><a href="++++.html">Admin<br />bereich</a></td> </tr> </table> <?php echo "<br />"; include 'host.php' ; //Beginn der Tabellenabfrage für Nachrichten $con = mysqli_connect ($_db_host,$_db_username,$_db_passwort); mysqli_select_db($con,$_db_datenbank) ; $sql = "SELECT * FROM vaternachricht ORDER BY id DESC" ; $res = mysqli_query( $con, $sql )OR die("Error: $res <br>".mysql_error()); $num = mysqli_num_rows($res); #echo " Datensäze :$num<br /><br />" ; echo "<font size='5'>Hallo,".$_SESSION['nike'].", es gibt Nachrichten :". $num."<br /><br /></font>" ; if ($num >0) { // Tabellenbeginn echo "<table border='3' cellpadding='3' style='font-size: 15px;' width='50%'>"; // Überschrift echo " <tr bgcolor='#11ff33' size='+2' > <td size='+2'>Id</td> <td size='+2'>Datum</td> <td size='+2'>Verfasser</td> </tr> <tr> <th colspan='4'bgcolor='#11ff33' align='left' size='+2' >Nachricht</th> </tr>"; $lf = 1; while ($zeile = mysqli_fetch_array( $res)) { if ($lf<=4) { $id = $zeile['id']; $Datum =$zeile['datum']; $Verfasser = $zeile['verfasser']; $Nachricht = $zeile['nachricht']; //echo "<td>$lf</td>"; echo "<tr> <td bgcolor='#cccccc' width='10%'>".$id."</td> <td bgcolor='#cccccc' size='+2'>".$Datum."</td> <td bgcolor='#cccccc' size='+2'>".$Verfasser."</td> </tr> <tr> <th bgcolor='#eeeeee' colspan='4' align='left'size='+2'>".$Nachricht.$lf."</th> </tr>" ; $lf = $lf + 1; } } echo "</table>" ; // ende der Tabelle Nachrichtenabfrage } mysqli_free_result( $res ); mysqli_close($con); //Beginn der Tabellenabfrage $con = mysqli_connect ($_db_host,$_db_username,$_db_passwort); mysqli_select_db($con,$_db_datenbank) ; $sql = "SELECT * FROM vatertage ORDER BY datum ASC" ; $res = mysqli_query( $con, $sql )OR die("Error: $res <br>".mysql_error()); $num = mysqli_num_rows($res); #echo " Datensäze :$num<br /><br />" ; echo " Hallo, es gibt Einträge :". $num."<br /><br />" ; if ($num >0) { // Tabellenbeginn echo "<table border='3' cellpadding='3' style='font-size: 15px;' width='50%'>"; // Überschrift echo " <tr bgcolor='#11ff33' size='+2' > <td size='+2'>Id</td> <td size='+2'>Datum</td> <td size='+2'>Wochentag</td> <td size='+2'>Besucher</td> </tr> <tr> <th colspan='4'bgcolor='#11ff33' align='left' size='+2' >Notizen</th> </tr>"; $lf = 1; while ($zeile = mysqli_fetch_array( $res)) { $id = $zeile['id']; $Datum = $zeile['datum']; $DatumDe = substr ($Datum,8,2).substr ($Datum,4,4).substr ($Datum,0,4); $Besucher =$zeile['besucher']; $Nachricht = $zeile['nachrichten']; if ($datumheute<=$Datum) { $tag = date("l",strtotime($DatumDe)); switch($tag) { case "Monday": $tag = "Montag"; break; case "Tuesday": $tag = "Dienstag"; break; case "Wednesday": $tag = "Mittwoch"; break; case "Thursday": $tag = "Donnerstag"; break; case "Friday": $tag = "Freitag"; break; case "Saturday": $tag = "Samstag"; break; case "Sunday": $tag = "Sonntag"; break; } //echo "<td>$lf</td>"; echo "<tr> <td bgcolor='#cccccc' width='10%'>".$id."</td> <td bgcolor='#cccccc' size='+2'>".$DatumDe."</td> <td bgcolor='#cccccc' size='+2'>".$tag."</td> <td bgcolor='#cccccc' size='+2'>".$Besucher."</td> </tr> <tr> <th bgcolor='#eeeeee' colspan='4' align='left'size='+2'>".$Nachricht."</th> </tr>" ; $lf = $lf + 1; } } echo "</table>" ; echo "<hr />" ; } else { } mysqli_free_result( $res ); mysqli_close($con); ?> </p> <p align="center"> <table border=1 id='calendar' width='50%'> <tr style='visibility:collapse;' hidden> <td colspan=7 id='date_memory'>---</td> </tr> <tr> <td class='calendar_head'><a class='calendar_link' href='javascript:prevMonth()'> «</a></td> <td colspan=5 class='calendar_head_month' id='calendar_month'> ---</td> <td class='calendar_head'><a class='calendar_link' href='javascript:nextMonth()'> »</a></td> </tr> <tr> <td class='calendar_day'>Mo</td> <td class='calendar_day'>Di</td> <td class='calendar_day'>Mi</td> <td class='calendar_day'>Do</td> <td class='calendar_day'>Fr</td> <td class='calendar_day'>Sa</td> <td class='calendar_day'>So</td> </tr> <tr> <td class='calendar_entry' id='calendar_entry_1'>-x-</td> <td class='calendar_entry' id='calendar_entry_2'>-x-</td> <td class='calendar_entry' id='calendar_entry_3'>-x-</td> <td class='calendar_entry' id='calendar_entry_4'>-x-</td> <td class='calendar_entry' id='calendar_entry_5'>-x-</td> <td class='calendar_entry' id='calendar_entry_6'>-x-</td> <td class='calendar_entry' id='calendar_entry_7'>-x-</td> </tr> <tr> <td class='calendar_entry' id='calendar_entry_8'>-x-</td> <td class='calendar_entry' id='calendar_entry_9'>-x-</td> <td class='calendar_entry' id='calendar_entry_10'>-x-</td> <td class='calendar_entry' id='calendar_entry_11'>-x-</td> <td class='calendar_entry' id='calendar_entry_12'>-x-</td> <td class='calendar_entry' id='calendar_entry_13'>-x-</td> <td class='calendar_entry' id='calendar_entry_14'>-x-</td> </tr> <tr> <td class='calendar_entry' id='calendar_entry_15'>-x-</td> <td class='calendar_entry' id='calendar_entry_16'>-x-</td> <td class='calendar_entry' id='calendar_entry_17'>-x-</td> <td class='calendar_entry' id='calendar_entry_18'>-x-</td> <td class='calendar_entry' id='calendar_entry_19'>-x-</td> <td class='calendar_entry' id='calendar_entry_20'>-x-</td> <td class='calendar_entry' id='calendar_entry_21'>-x-</td> </tr> <tr> <td class='calendar_entry' id='calendar_entry_22'>-x-</td> <td class='calendar_entry' id='calendar_entry_23'>-x-</td> <td class='calendar_entry' id='calendar_entry_24'>-x-</td> <td class='calendar_entry' id='calendar_entry_25'>-x-</td> <td class='calendar_entry' id='calendar_entry_26'>-x-</td> <td class='calendar_entry' id='calendar_entry_27'>-x-</td> <td class='calendar_entry' id='calendar_entry_28'>-x-</td> </tr> <tr> <td class='calendar_entry' id='calendar_entry_29'>-x-</td> <td class='calendar_entry' id='calendar_entry_30'>-x-</td> <td class='calendar_entry' id='calendar_entry_31'>-x-</td> <td class='calendar_entry' id='calendar_entry_32'>-x-</td> <td class='calendar_entry' id='calendar_entry_33'>-x-</td> <td class='calendar_entry' id='calendar_entry_34'>-x-</td> <td class='calendar_entry' id='calendar_entry_35'>-x-</td> </tr> <tr> <td class='calendar_entry' id='calendar_entry_36'>-x-</td> <td class='calendar_entry' id='calendar_entry_37'>-x-</td> <td class='calendar_entry' id='calendar_entry_38'>-x-</td> <td class='calendar_entry' id='calendar_entry_39'>-x-</td> <td class='calendar_entry' id='calendar_entry_40'>-x-</td> <td class='calendar_entry' id='calendar_entry_41'>-x-</td> <td class='calendar_entry' id='calendar_entry_42'>-x-</td> </tr> </table> <script type='text/javascript'> iniCalendar(); /*0 = wie bisher, Datum wird in die Box geschrieben*/ setReturnModus(0); /*1 = neu, Eventtext wird in die Box geschrieben Das event muss in der calendar.js in der Function getEventtext definiert werden.*/ //setReturnModus(1); </script> <form action="xxxxxxxxxxx" id="myform" method="post"> oben Datum auswählen,<br /> trägt sich automatisch ein<br /> <input name="datum" style="text-align: right;"size="10"/> <br /> <br />Besucher <br /> <select name="gast" > <option ><?php echo $_SESSION['nike'] ?></option> <option >Fredy</option> <option >Steffi</option> <option >Conny</option> <option >Christian</option> <option >Christine</option> <option >Frank</option> <option >Conny/Steffi</option> </select> <br /><br /> Eine kurze Nachricht<br /> <input name="Nachricht" size="30" /> <br /><br /><br /> <input type="submit" name="submit" value="Abschicken"/> </form> </p> <?php var_dump($_SESSION); } else If ($name2=="Das Admin Passwort ist hier") { ?> <a href="Adresse Admin bereich.php"><h3 align="center">Adminbereich des Betreibers</h3></a> <?php } echo "alles richtig" ; ?> </body> </html>
Und bei Klick auf die nächste Seite beginne ich so:
<?php session_start(); $_SESSION['nike']; $datumheute = date("Y.m.d",time()); ?> <html>
und da ist nix mehr da.
-
Sind die Session-IDS bei beiden Scripts?
Setzt du den Cookie evtl. nur für den einen Pfad bzw nur ne bestimmte Gültigkeit? -
Hallo liebe Gemeinde,
ich hab das Problem gelöst. Nach dem ich noch mal im Bord gesucht hab, fand ich, dass ich dieses Problem schon mal vor 1,5 Jahren hatte. .
Damals konnte sich das auch keiner erklären, aber ich hab, auch damals dann, alle Seiten auf PHP-Script umgestellt. Sobald eine html-Seite auftaucht ist die Session leer. Auch wenn gleich am Anfang dieser mit php die Session in dieser Seite geöffnet wird. Nur auf dem "Heimserver"-xampp funktioniert das. Warum das so ist, keine Erklärung. Leider hab ich auch noch nicht in Befehls-Erklärungen gefunden, dass man das offensichtlich beachten muss.
Trotzdem vielen Dank, und vielleicht hilft das hier ja auch jemanden weiter.
Allen noch eine schöne Woche,
mit den freundlichsten Grüßen,
Frank -
vaterbesuch schrieb:
Hallo liebe Gemeinde,
ich hab das Problem gelöst. Nach dem ich noch mal im Bord gesucht hab, fand ich, dass ich dieses Problem schon mal vor 1,5 Jahren hatte. .
Damals konnte sich das auch keiner erklären, aber ich hab, auch damals dann, alle Seiten auf PHP-Script umgestellt. Sobald eine html-Seite auftaucht ist die Session leer. Auch wenn gleich am Anfang dieser mit php die Session in dieser Seite geöffnet wird. Nur auf dem "Heimserver"-xampp funktioniert das. Warum das so ist, keine Erklärung.
Hi Frank,
das ist ganz einfach erklärt:
wenn du eine Datei hast mit einer PHP-Endung, haust du dort ein PHP-Script rein. Mit der Endung PHP sagst du explizit: Der Server soll sich das anschauen und auswerten. Das heißt, deine Befehle werden verarbeitet.
Dann hast du eine Datei mit html-Endung... der Webserver schaut sich das an und liefert einfach aus... er will damit nix zu tun haben... da kannst du sonst was für tolle scripte reinpacken, da passiert nix.
Wenn du jedoch danach wieder eine PHP auf machst und die session ist weg, kann es nur bedeuten, dass das Session-Cookie auch weg ist... somit ist die session noch da, aber er kann dir die session nichtm ehr zuordnen...
das sind dann Browser-Einstellungen, die greifen, jedoch wenn es sich nur bei dir so verhält, dann hm... musst du prüfen... -
mach auf dir "nächste Seite" mal so
<?php session_start(); $datumheute = date("Y.m.d",time()); if (isset($_SESSION['nike'] )) { $nike_name = $_SESSION['nike']; } else { $nike_name = ''; } // --- Leerstring wenn Session nicht gesetzt ?> <html> <head> <title>Test</title> </head> <body> <?php print '<p>Datum: ' . $datumheute . '</p>' ."\n"; print '<p>nName: ' . $nike_name . '</p>' ."\n"; ?> </body> </html>
also du musst die Variable $_SESSION['nike'] enteder direkt ausgeben (echo/print)
oder (wie hier) einer anderen Variable zuweisen und dann diese andere ausgeben.
Beitrag zuletzt geändert: 25.3.2015 8:02:05 von einkaufen -
zum Testen der Session und der Session-variable (wenn Session ungleich sind dann sind Cookies deaktiviert oder ein Browser Addon Cookie blocker aktiv
seite1.php
<?php session_start(); echo session_id(); $_SESSION['nike'] = 'Mustermann'; echo $_SESSION['nike']; ?> <p><a href="seite2.php">Seite2</a></p>
seite2.php
<?php session_start(); echo session_id(); if(isset($_SESSION['nike'])){ echo $_SESSION['nike']; } else { echo '<b>Cookies sind deaktiviert</b>'; } ?> <p><a href="seite1.php">Seite1</a></p>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage