當輸入電子郵件不包含@符號時,我需要重定向到同一頁面。其余的代碼可以正常工作,但是每當我發送一封沒有@的電子郵件時,它就會將我重定向到一個空白頁面。(問題的詳細信息如下:登錄屏幕需要對其輸入數據進行一些錯誤檢查。如果名稱或密碼字段為空,則應顯示以下形式的消息:需要電子郵件和密碼請注意,我們使用“電子郵件”而不是“用戶名”來登錄此作業。如果密碼非空且不正確,您應該輸入以下形式的消息:密碼錯誤對于此分配,您必須添加一個新的驗證以確保登錄名包含 at 符號 (@),并在這種情況下發出錯誤:電子郵件必須帶有 at 符號 (@)如果正確散列的傳入密碼與存儲的 Stored_Hash 值匹配,則用戶的瀏覽器將重定向到 autos.php 頁面,并將用戶名作為 GET 參數,使用:header("位置:autos.php?name=".urlencode($_POST['who']));當用戶由于密碼錯誤而登錄失敗時,您還必須使用 error_log() 函數發出以下消息,顯示密碼加鹽的計算哈希值:error_log("登錄失敗".$_POST['who']."$check");當登錄成功(即哈希匹配)時,發出以下日志消息:error_log("登錄成功".$_POST['who']); )<?php if ( isset($_POST['cancel'] ) ) { header("Location: index.php"); return;}$salt = 'XyZzy12*_';$stored_hash = '1a52e17fa899cf40fb04cfc42e6352f1'; $failure = false; // Check to see if we have some POST data, if we do process itif ( isset($_POST['email']) && isset($_POST['pass']) ) { if ( strlen($_POST['email']) < 1 || strlen($_POST['pass']) < 1 ) { $failure = "Email and password are required"; } else { if(strpos($_POST['email'], '@') !== false) { $check = hash('md5', $salt.$_POST['pass']); if ( $check == $stored_hash ) { // Redirect the browser to autos.php header("Location: autos.php?name=".urlencode($_POST['email'])); error_log("Login success ".$_POST['email']); return; } else { $failure = "Incorrect password"; error_log("Login fail ".$_POST['email']." $check"); } } else { $failure = "Email must have an at-sign @"; return; } }}
1 回答

精慕HU
TA貢獻1845條經驗 獲得超8個贊
return
從該行后面的 else 塊中刪除$failure = "Email must have an at-sign @"
。
我認為,在不了解如何處理請求的情況下,根據示例,當驗證失敗時,進程不得返回。它僅在成功時返回,因為在這種情況下,您將有一個新的標題,因此當頁面加載時,它會將您帶到某個地方,在失敗時,您只需要更改變量即可$failure
。
- 1 回答
- 0 關注
- 125 瀏覽
添加回答
舉報
0/150
提交
取消