我轉而使用PDO,這個開發網站已經有數十頁的成功,而且這個應該是一個「快速」的形式 - 應該只需要大約十分鐘。但是我正在開始第二個週末,試圖弄清楚爲什麼它不起作用。我知道以下幾點是不安全的 - 我已經將它剝離了骨頭,試圖找出爲什麼它不會處理。以下內容只是重新加載帶有空白字段的表單頁面。我沒有收到任何錯誤,錯誤日誌沒有顯示任何內容,也從來沒有到達處理表單的地步 - 例如,輸入兩個不同的密碼不會顯示爲錯誤,回顯變量不顯示。看來它甚至沒有獲得到「如果(isset」點 - 我想不通爲什麼爲什麼這不會形成過程?
<?php
try {
$con = new PDO('mysql:host=localhost;dbname=database', $user, $pass);
} catch (PDOException $e) {
echo "Connection failed: " . $e -> getMessage();
}
if (isset($_POST['submit'])) {
$email = $_POST['email'];
$username = $_POST['username'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
if ($pass1 != $pass2) {
die ("ERROR: Hey! The passwords don't match!");
}
$stmt = $con -> prepare ("
INSERT INTO proj_users
(email, username, password)
VALUES
(?, ?, ?)
");
$stmt -> bindParam(1,$email);
$stmt -> bindParam(2,$username);
$stmt -> bindParam(3,$pass1);
$stmt -> execute();
header('Location: /index.php');
} else {
?>
<form action='<?php echo $_SERVER['SCRIPT_NAME']; ?>' method='post'>
<table>
<tr>
<td class='label'>Email: </td>
<td><input type='text' name='email' /></td>
</tr>
<tr>
<td class='label'>Username: </td>
<td><input type='text' name='username' maxlength='30' /></td>
</tr>
<tr>
<td class='label'>Password: </td>
<td><input type='password' name='pass1' /></td>
</tr>
<tr>
<td class='label'>Password Again: </td>
<td><input type='password' name='pass2' /></td>
</tr>
<tr>
<td class='label alignright' colspan='2'><input type='submit' value='Register' /></td>
</tr>
</table>
</form>
<?php
}
?>
更新:當我經過和更新更多的我的形式,我碰上同樣的問題 - 沒有「名稱」屬性,但他們一直在努力,然後纔開始搞亂他們。沒有花太多時間去弄清楚,這是因爲我正在重寫表格,並且在這個過程中將它們從「!isset」 到 「isset」 - 等等,當然,沒有 「的名字,」 他們從來都是
如果您打算將此代碼用於練習以外的其他任何*請*不要以純文本格式在數據庫中存儲密碼。至少他們應該使用php的'crypt()'函數進行哈希處理。 –
謝謝你,壞狼 - 我把它拿出來,直到我可以讓表格工作。現在,我正在把它放回去。:-) – Ellsinore