我将POST中的变量电子邮件和密码放到GET中,以便
我的 handle_login_form.php
的一部分 header("Location: /codes/index.php?ask_question&" . "email=" . $_POST['email'] . "&" . "passhash_md5=" . md5($_POST['password']) );
然后,用户单击“关于”链接。他应该在网址中有登录信息,但他没有。他只有index.php?about&
。
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>";
}
这就是发生的事情
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!
答案 0 :(得分:2)
您需要转义HTML中的&
字符。对于以HTML格式打印的每个&符号,请使用&
代替&
。
您还在第二个声明中添加了额外报价单引号。这是一个固定版本:
echo ("<li><a href='?about&email=" .
$_GET['email'].
"&passhash_md5" .
$_GET['passhash_md5'] .
"'>About</a></li>");
请记住,在查询字符串中存储(哈希)密码是不安全的:每个嗅探数据的人都可以通过复制正确的URL来欺骗用户。请考虑改为使用session cookie。