Session wird nicht zurückgesetzt

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
MADxHAWK
Beiträge: 132
Registriert: Mi 15.Nov, 2006 13:40
Wohnort: Bonn
Kontaktdaten:

Session wird nicht zurückgesetzt

Beitrag 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
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag 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.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
MADxHAWK
Beiträge: 132
Registriert: Mi 15.Nov, 2006 13:40
Wohnort: Bonn
Kontaktdaten:

Beitrag 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
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag 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.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten