2016-09-08 4 views
0

Mit einer separaten PHP-Datei "session_info.php" in eine neue Registerkarte mit dem folgenden Code navigiert, um die $ _SESSION-Array-Werte und $ _POST Array-Werte anzuzeigen, nur die $ _SESSION-Array-Werte angezeigt.

session_start(); 
echo 'SESSION VALUES'; 
echo '<pre>'; 
print_r($_SESSION); 
echo '</pre>'; 
echo '<br>'; 

echo 'POST VALUES'; 
echo '<pre>'; 
print_r($_POST); 
echo '</pre>'; 

Die print_r ($ _ POST) gibt nur

Array 
(
) 

Wenn ich eine "print_r ($ _ POST)" Zeile in der PHP-Code enthalten, der eine Datenbank mit der Form des Updates $ _POSTed Werte und Displays Die Werte in einem separaten Rahmen, die $ _POST-Werte erscheinen im Rahmen OK Also warum nicht in meiner "session_info.php" Anzeige?

+0

Wenn Sie direkt auf die Seite in einem neuen Tab navigieren, was genau erwarten Sie dann von Ihren '$ _POST'-Werten? Du postest nichts, warum wären sie alles andere als leer? – Santi

+1

Senden Sie tatsächlich POST-Daten an die Seite, die das anzeigt? Ohne POST-Daten ist das '$ _POST' nur ein leeres Array. – Machavity

+0

können Sie den Code teilen, von dem $ _POST seinen Wert erhält –

Antwort

1

$_POST Werte werden nur angezeigt, wenn Sie eine POST Anfrage an diese Seite senden. Wenn Sie eine neue Registerkarte öffnen, senden Sie eine GET Anfrage, daher wird Ihre $_POST Variable leer sein.

Ihre $_SESSION Variable wird ihren Inhalt bei jeder Art von Anfrage anzeigen, da sie nichts mit dem Typ der Anfrage zu tun hat, die Sie senden, um auf die Seite zu gelangen.


Außerdem, wenn Sie binäre Daten als $_POST Anfrage senden, werden Sie die rohen gebuchten Daten mit file_get_contents('php://input');

+0

"Wenn Sie binäre Daten senden" - JSON ist ein Textformat, kein binäres Format. – Quentin

+0

Ok, also müsste ich die Werte tatsächlich auf die Seite "session_info.php" stellen, dann ... – Skeeter

+0

Korrigieren Sie @Skeeter, geben Sie eine "POST" -Anfrage an session_info aus.PHP und Sie sollten die Daten in $ _POST – JorgeObregon

1

Wenn Sie eine Seite im Browser öffnen lesen müssen, es läuft Anforderung an den Server basierend auf Hostname und IP. Dies bedeutet, dass jede Anfrage eine neue Ausführung des von Ihnen erstellten Skripts ist. Für jede Anfrage werden eigene Daten an den Server gesendet. Wenn Sie beispielsweise ein Formular mit erstellen, senden Sie Daten mit method post an den Server. Und wenn der Server diese Anfrage bearbeitet, füllt er das $_POST Array mit den gesendeten Daten.

Wenn Sie Daten über URL (GET-Methode) senden, füllt Ihr Server $ _GET-Daten damit. Aber wenn Sie nur in das Adressfeld Ihrer URL eingeben, gibt es keine POST-Anfrage und wird es auch nie sein. Ihr POST-Array ist also leer und für den Server in Ordnung.

In Ihrem Fall gibt es überhaupt keinen Fehler. Ich empfehle Ihnen, die Dokumentation zu vordefinierten Variablen in PHP erneut zu lesen.

Verwandte Themen