當(dāng)輸入電子郵件不包含@符號(hào)時(shí),我需要重定向到同一頁面。其余的代碼可以正常工作,但是每當(dāng)我發(fā)送一封沒有@的電子郵件時(shí),它就會(huì)將我重定向到一個(gè)空白頁面。(問題的詳細(xì)信息如下:登錄屏幕需要對(duì)其輸入數(shù)據(jù)進(jìn)行一些錯(cuò)誤檢查。如果名稱或密碼字段為空,則應(yīng)顯示以下形式的消息:需要電子郵件和密碼請(qǐng)注意,我們使用“電子郵件”而不是“用戶名”來登錄此作業(yè)。如果密碼非空且不正確,您應(yīng)該輸入以下形式的消息:密碼錯(cuò)誤對(duì)于此分配,您必須添加一個(gè)新的驗(yàn)證以確保登錄名包含 at 符號(hào) (@),并在這種情況下發(fā)出錯(cuò)誤:電子郵件必須帶有 at 符號(hào) (@)如果正確散列的傳入密碼與存儲(chǔ)的 Stored_Hash 值匹配,則用戶的瀏覽器將重定向到 autos.php 頁面,并將用戶名作為 GET 參數(shù),使用:header("位置:autos.php?name=".urlencode($_POST['who']));當(dāng)用戶由于密碼錯(cuò)誤而登錄失敗時(shí),您還必須使用 error_log() 函數(shù)發(fā)出以下消息,顯示密碼加鹽的計(jì)算哈希值:error_log("登錄失敗".$_POST['who']."$check");當(dāng)?shù)卿洺晒Γ垂Fヅ洌r(shí),發(fā)出以下日志消息: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貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
return
從該行后面的 else 塊中刪除$failure = "Email must have an at-sign @"
。
我認(rèn)為,在不了解如何處理請(qǐng)求的情況下,根據(jù)示例,當(dāng)驗(yàn)證失敗時(shí),進(jìn)程不得返回。它僅在成功時(shí)返回,因?yàn)樵谶@種情況下,您將有一個(gè)新的標(biāo)題,因此當(dāng)頁面加載時(shí),它會(huì)將您帶到某個(gè)地方,在失敗時(shí),您只需要更改變量即可$failure
。
- 1 回答
- 0 關(guān)注
- 135 瀏覽
添加回答
舉報(bào)
0/150
提交
取消