Hallo,
ich habe versucht, Fehlermeldungen in eine Variable innerhalb der Session zu schreiben, damit das lästige (und manipulierbare) übergeben von Fehlermeldungen über die URL ein Ende hat.
Ich setzte dabei die Variable $_SESSION['error_msg'] auf einen bestimmten Wert und leite dann per header("Location: xyz.php") um. Auf der Seite xyz.php wird dann überprüft ob die Variable $_SESSION['error_msg'] nicht leer ist, um diese dann in eine normale Variable zu schreiben (sprich $msg = $_SESSION['error_msg']). Sinn und Zweck des ganzen ist es, nach dem speichern in die Variable, $_SESSION['error_msg'] wieder zu leeren, damit die Nachricht nur einmalig angezeigt wird (was ja auch Sinn des ganzen ist).
Mein Problem hierbei ist nur, dass aus irgendeinem Grund, PHP zwar $msg mit der Sessionvariable füllt, allerdings beim löschen der Sessionvariable ist auch $msg wieder leer. Kann ich PHP irgendwie dazu bewegen, den Inhalt erst reinzuschreiben und dann zu löschen?
Ein kleines (leicht unformatiertes ^^) Beispiel-Skript soll das ganze verdeutlichen:
Der Aufruf über test.php?msg=abc leitet mich auch test.php weiter, zeigt jedoch keine Nachricht an. Sobald ich die entsprechende Zeile auskommentiere, zeigt mir nach dem Weiterleiten die test.php die Nachricht an.
Ich bin für einen kleinen Denkanstoß dankbar, da ich solangsam mit meinem Latein (hier: PHP) am Ende bin.
PS: Falls es nützlich ist, ich verwende PHP 5.0.4/Win mit register_globals = off (eigentlich selbstverständlich...)
Mit freundlichen Grüßen
dtdesign
ich habe versucht, Fehlermeldungen in eine Variable innerhalb der Session zu schreiben, damit das lästige (und manipulierbare) übergeben von Fehlermeldungen über die URL ein Ende hat.
Ich setzte dabei die Variable $_SESSION['error_msg'] auf einen bestimmten Wert und leite dann per header("Location: xyz.php") um. Auf der Seite xyz.php wird dann überprüft ob die Variable $_SESSION['error_msg'] nicht leer ist, um diese dann in eine normale Variable zu schreiben (sprich $msg = $_SESSION['error_msg']). Sinn und Zweck des ganzen ist es, nach dem speichern in die Variable, $_SESSION['error_msg'] wieder zu leeren, damit die Nachricht nur einmalig angezeigt wird (was ja auch Sinn des ganzen ist).
Mein Problem hierbei ist nur, dass aus irgendeinem Grund, PHP zwar $msg mit der Sessionvariable füllt, allerdings beim löschen der Sessionvariable ist auch $msg wieder leer. Kann ich PHP irgendwie dazu bewegen, den Inhalt erst reinzuschreiben und dann zu löschen?
Ein kleines (leicht unformatiertes ^^) Beispiel-Skript soll das ganze verdeutlichen:
PHP:
<?php
session_start();
if(isset($_GET['msg']))
{
$_SESSION['msg'] = $_GET['msg'];
$msg = $_SESSION['msg'];
// ***
// *** Die Zeile hier drunter auskommentieren um den gewuenschten Effekt zu erzielen
// ***
$_SESSION['msg'] = '';
header("Location: test.php");
}
else
{
echo $_SESSION['msg'];
}
?>
Der Aufruf über test.php?msg=abc leitet mich auch test.php weiter, zeigt jedoch keine Nachricht an. Sobald ich die entsprechende Zeile auskommentiere, zeigt mir nach dem Weiterleiten die test.php die Nachricht an.
Ich bin für einen kleinen Denkanstoß dankbar, da ich solangsam mit meinem Latein (hier: PHP) am Ende bin.
PS: Falls es nützlich ist, ich verwende PHP 5.0.4/Win mit register_globals = off (eigentlich selbstverständlich...)
Mit freundlichen Grüßen
dtdesign