2009-08-09 5 views
1

ich die Variablen gesetzt zu halten E-Mail und das Passwort von POST so zu erhalten, dieUm Login-Status in URL von PHP GET

Teil meines handle_login_form.php

header("Location: /codes/index.php?ask_question&" . "email=" . $_POST['email'] . "&" . "passhash_md5=" . md5($_POST['password'])); 

Der Benutzer klickt dann auf den über Verknüpfung. Er sollte die Login-Informationen in der URL haben, aber er tut es nicht. Er hat nur index.php?about&.

Teil meiner index.php

if (isset($_GET['email'])) { 
     echo ("<li><a href='?about&email='" . 
      $_GET['email'] .                      
      "&passhash_md5" . 
      $_GET['passhash_md5'] . 
      ">About</a></li>"); 
    } else { 
     echo "<li><a href='?about'>About</a></li>"; 
    } 

Dies ist, was

STEP  | handle_login_form.php index.php?email&passhash_md5 index.php?about& 
protocol | POST    -> GET       -> GET 
---------------------------------------------------------------------------------- 
variables | password    passhash_md5     passhash_md5 
      | email     email       email 
                    Problem HERE! 

Antwort

2

geschieht Sie müssen den & Zeichen in HTML entkommen. Verwenden Sie &amp; statt & für jeden Ampersand, die in HTML gedruckt wird.

Sie haben auch ein zusätzliches Angebot Apostroph in Ihrer zweiten Aussage. Dies ist eine feste Version:

echo ("<li><a href='?about&email=" . 
    $_GET['email']. 
    "&passhash_md5" . 
    $_GET['passhash_md5'] . 
    "'>About</a></li>"); 

Beachten Sie, dass es unsicher ist, zu speichern (einen Hash), um das Kennwort in der Query-String: jeder der Daten Sniffing einfach durch das Kopieren der richtige URL der Benutzer fälschen können. Verwenden Sie stattdessen eine session cookie.

+0

Vielen Dank für meinen Fehler zu beobachten! - Ich benutze Vim. Ich hätte gerne ein Plugin, das daran erinnert, zu entkommen und mich zu alarmieren, falsch zitiert zu werden. Bitte, kommentieren Sie, wenn Sie etwas wissen. –