Formular Token Problem

S

starfoxfs

Hi zusammen,

Ich überarbeite gerade meine Formulare um diese sicherer zu machen und habe hier anscheinend ein Problem mit der Speicherung des Tokens in die Session wenn ich das richtig sehe.

Formular:
PHP:
<?php
     function generateFormToken($form){ 

          $token = md5(uniqid(microtime(), true)); 
          $_SESSION[$form."_token"] = $token; 
          return $token; 
     } 
	 
$token = generateFormToken("form1");
?>
.
.
.
<form>
<input type="hidden" name="token" value="<?php echo $token; ?>" />
</form>

Verarbeitung des Formulars:

PHP:
function verifyFormToken($form) {
	
	if (!isset($_SESSION[$form."_token"])) {
       return false;
	}

    if (!isset($_POST["token"])) {
	   return false;
    }

    if ($_SESSION[$form."_token"] !== $_POST["token"]) {
	   return false;
	}
 
 return true;
}

if (verifyFormToken("form1")) {

// Formular verarbeiten ...

}else{

die("Fehler, die Daten wurden manipuliert");

}

Fehlermeldung bekomme ich folgenden:

Notice: Use of undefined constant form - assumed 'form' in verarbeitung.php on line 16

:Edit: Hab ein $ vergessen hab ich gerade gesehen, ich habe aber noch ein anderes Problem,

und zwar bekomme ich immer "Fehler die Daten wurden manipuliert" ausgegeben obwohl keine manipuliert wurden, wo liegt hier der Fehler ?
 
Zuletzt bearbeitet von einem Moderator:
Hi starfoxfs,
das einzigste mit dem ich Dir dienen kann ist folgendes:

in deiner Verarbeitung befindet sich folgende Zeile:
PHP:
if ($_SESSION[$form."_token"] !== $_POST["token"]) {

, die du in folgende umwandeln solltest:
PHP:
if ($_SESSION[$form."_token"] != $_POST["token"]) {

, denn !== gibt es meines Erachtens nicht ;)
 
Nun es funktioniert jetzt, anscheinend hab ich zur Fehlerbehandlung das

PHP:
session_start();

deaktiviert und dann ist klar das der Token nicht in die Session geschrieben werden kann :D:-(
 
Zurück