Seite 1 von 1

Session wird nicht zurückgesetzt

Verfasst: Do 24.Apr, 2008 20:50
von MADxHAWK
Hi,

hab n kleines problem mit ner session in der der captchacode gespeichert wird.

Folgende Funktion sollte sein:
Aufruf der Seite, das captcha wird per img tag aufgerufen, der code in $_SESSION['captcha'] gespeichert, werden nun die Daten inclusive des Captchacodes abgeschickt, werden die daten in die DB geschrieben und die Session gelöscht werden. Der User erhält einen Hinweis das die daten Gespeichert wurden und nach nen Klick auf zurück kommt er wieder zu dem Formular und eine neue Session soll gestartet werden ( Neuer code generiert und in Session abgelegt )

Ich erhalte allerdings nach dem Klick auf Weiter im formular den vorherigen Captchacode und erst einen neuen wenn ich auf Reload klicke.

hier mal die entsprechenden Codzeilen:

captcha.php (per img tag eingebunden)

Code: Alles auswählen

session_start();
unset($_SESSION['captcha']);	

$captcha_chars = "A B C D E F G H I J K L M N P Q R S T U V W 2 3 4 5 6 7 8 9";
$captcha_chars = explode(" ", $captcha_chars);
shuffle($captcha_chars);

$text = implode( '',array_slice($captcha_chars,0,5) );
$_SESSION['captcha'] = $text;
         
header('Content-type: image/png');
.
.
.
.
und die überprüfung bei der formularübergabe

Code: Alles auswählen

if ( $mode == 'add_song' && isset($_POST['submit']) ) {

	if ( $_SESSION['captcha'] != $_POST['captcha'] ) {
		
		unset($_SESSION['captcha']);
		$charts = message('INFO', 'Der eingegebene Sicherheitscode war falsch.');
		eval('print_output("' . fetch_template('charts') . '");');
	}
	
	unset($_SESSION['captcha']);
	add_song(htmlspecialchars($_POST['interpret']), htmlspecialchars($_POST['title']) );
	$charts = message('INFO', 'Der Song wurde in die Charts aufgenommen');
	eval('print_output("' . fetch_template('charts') . '");');
}
Gruss
MADxHAWK

Verfasst: Do 24.Apr, 2008 23:34
von oxpus
Welche Daten übergibst Du denn mit dem "Weiter"-Link? Hoffentlich KEINE Parameter?
Vor session_start(); wäre es auch angebracht, mit unset($_SESSION); die Sessiondaten komplett zu leeren.
Vielleicht hilft das schon.

Verfasst: Fr 25.Apr, 2008 00:34
von MADxHAWK
Hi,

danke für die antwort.

Wenn ich die Daten abgeschickt habe kommt nur ein Hinweisfenster das darauf hinweist das die Daten eingetragen wurden und 2 links enthält, einaml zurück zum forum und einmal zurück zum formular.

unset($_SESSION) wollte ich nicht einsetzten weil ich nicht weiss ob das vb ebenfalls eine Session hat die ich ja damit auch löschen würde, deshalb nur unset($_SESSION['captcha']

greetz
MAD

Verfasst: Fr 25.Apr, 2008 11:04
von oxpus
Wenn Du mit session_start() eine neue Session aufrufst, werden alle Inhalt eh neu geschrieben. Daher sollte $_SESSION auch besser vorher "gewaltsam" geleert werden, um hier eben keine "Altlasten" mit rumzuschleppen.