[英]Simple PHP Registration Form Only Collects NULL Values?
我正在嘗試使用PHP為網站創建基本的登錄/注冊。 下面的代碼顯示我需要測試的config.php,它可以順利連接到我的站點。 發生的是,當我轉到頁面並輸入值時,無論我輸入的電子郵件和密碼是什么,它都表示它們總是匹配的。 當我嘗試輸出email1和email2的值時,它什么也不輸出。 我認為按提交時表單未收集數據。 如果有人看到我在做什么錯,將不勝感激!
<?php
require('config.php');
if(isset($_POST['submit'])) {
$email1 = $POST['email1'];
$email2 = $POST['email2'];
$pass1 = $POST['pass1'];
$pass2 = $POST['pass2'];
if($email1 == $email2)
{
echo "Emails match.<br />";
if($pass1 == $pass2)
{
echo "Passwords match.<br />";
}
else
{
echo "Sorry, your passwords do not match.<br />";
exit();
}
}
else
{
echo "Sorry, your emails do not match.<br /><br />";
}
}
else {
$form = <<<EOT
<form action="register.php" method="POST">
First Name: <input type="text" name="name" /><br />
Last Name: <input type = "text" name = "lname" /><br />
User Name: <input type = "text" name = "uname" /><br />
Email: <input type = "text" name = "email1" /><br />
Confirm Email: <input type = "text" name = "email2" /><br />
Password: <input type = "password" name = "pass1" /><br />
Confirm Password: <input type = "password" name = "pass2" /><br />
<input type = "submit" value = "Register" name = "submit" />
</form>
EOT;
echo $form;
}
?>
問題是您忘記了所有$POST
的下划線
將它們全部更改為$_POST
這是一個超級全局變量 ,其中9個變量中的8個需要下划線,與$GLOBALS
不同
$_POST
<===將它們全部更改為此。 如果已設置/打開錯誤報告 ,則會多次收到信號通知您:
注意:未定義的變量:POST in ...
要啟用它,可以在打開<?php
標簽之后添加以下內容:
error_reporting(E_ALL);
ini_set('display_errors', 1);
注意:錯誤報告僅應在登台進行,而不應在生產中進行。
邊注:
由於您顯然是在同一頁面上運行整個代碼,因此您可以根據需要將action="register.php"
更改為action=""
。
密碼
我還注意到您可能以純文本形式存儲密碼。 不建議這樣做。
使用以下之一:
crypt()
bcrypt()
scrypt()
password_hash()
函數。 其他連結:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.