Variable Werte in Variablen und SESSION
NRWler
- php
Hallo Mitglieder des selfhtml Forums,
ich habe folgendes Problem und komme irgendwie nicht weiter.
Es handelt sich um ein Kontaktformular (Affenformular) wobei ich bestimmte Ausgabewerte von Variablen gerne fest in eine Session speichern und später wieder löschen möchte. Der kleine Unterschied besteht aber das die Werte der Variablen genau um 0 Uhr automatisch verändert werden.
Also, um es mal zu verdeutlichen aus z.B. AAA wird um punkt 0 Uhr z.B. BBB.
Auszug aus dem Code:
$do = chr(date("m") * 3 + date("y") + 30) . chr(date("d") * 2 + 40);
session_start();
$_SESSION['do'] = $do;
if (isset($_POST['ed']) && $_POST['ed'] != $_SESSION['do'])
{
header("Location: $m");
exit();
}
Wenn jetzt um 23:59:59 Uhr das Formular geöffnet wird, funktioniert der Abgleich ab 0 Uhr nicht mehr und das Formular wird als Spam gewertet. Ich habe was mit session_register() gelesen, weiß aber nicht ob das dass richtige ist. Könnt Ihr mir bitte einen Tipp geben wie die SESSION['do'] nach 24 Uhr noch den alten wert behält?
Danke für alle antworten!
Gruß,
NRWler
PS: Falls Ihr es wissen möchtet; register_globals sind off, magic_quotes_gpc sind off und PHP Version ist 5.2.8
Hi,
Wenn jetzt um 23:59:59 Uhr das Formular geöffnet wird, funktioniert der Abgleich ab 0 Uhr nicht mehr und das Formular wird als Spam gewertet.
Warum?
Beschreibe bitte zunächst mal, was du vor hast.
Ich habe was mit session_register() gelesen, weiß aber nicht ob das dass richtige ist.
Nein, ist es nicht.
Könnt Ihr mir bitte einen Tipp geben wie die SESSION['do'] nach 24 Uhr noch den alten wert behält?
In dem du ihn nicht änderst.
MfG ChrisB
Hallo ChrisB und Flow,
habe jetzt herausgefunden wie eine Session variierende Werte (z.B. die Zeit) behält:
if (!isset($_SESSION['do']) || empty($_SESSION['do']))
{
$_SESSION['do'] = time ();
echo "keine Session Vorhanden";
}
else
{
echo "Aktuelle Session wurde erstellt";
echo $_SESSION['do'];
}
Ich bedanke mich für eure antwort.
Gruß,
NRWler
Hello,
habe jetzt herausgefunden wie eine Session variierende Werte (z.B. die Zeit) behält:
#> if (!isset($_SESSION['do']) || empty($_SESSION['do']))
Da Du vermutlich 0 als gültigen Wert für den Timestamp nicht mehr benutzen wirst...
if (empty($_SESSION['do']))
{
$_SESSION['do'] = time ();
echo "keine Session Vorhanden";
}
else
{
echo "Aktuelle Session wurde erstellt";
echo $_SESSION['do'];
}
reicht auch empty() für die Überprüfung, ob das Element in der Session bereits gesetzt ist.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Ich würde einfach die Zeit auch mit in der Session speichern:
$my_time = ( array_key_exists( 'time', $_SESSION ) ) ? $_SESSION['time'] : time();
$do = chr(date("m", $my_time) * 3 + date("y", $my_time) + 30) . chr(date("d", $my_time) * 2 + 40);