我正在編輯這個來澄清我的問題。用戶在表單中輸入成員名稱和顯示名稱,php在列表中查找成員名稱以匹配,然後在用戶輸入成功找到時指定顯示名稱。PHP if else語句錯誤檢查
membernames和用戶名是存儲在文件中,如:
membername=displayname
此代碼的工作,但如果他們輸錯他們的成員名稱(這意味着它不匹配是在文件中),它仍然重定向到成功頁面,但它不會更改文件(因爲它不應該)。
我需要的是顯示一個錯誤頁面,當他們鍵入一個不匹配的成員名稱,但我不能讓它工作。
<?
$fileurl = '/../../.../..../memberfiletest';
$membername = $_POST['membername'];
$displayname = $_POST['displayname'];
$file = file($fileurl, FILE_IGNORE_NEW_LINES); // Get file as array of lines
foreach ($file as $n => $line) {
$parts = explode('=', $line);
if ($parts[0] == $membername) {
$file[$n] = $membername . '=' . $displayname;
}
}
file_put_contents($fileurl, implode("\n", $file)); // Put file back together
$success_page = 'http://example.com/.../private.php';
header('Location: '.$success_page);
?>
編輯編碼,我試過:使用此編碼下面我已經嘗試使用它的值並修改它。如果我在錯誤頁面中使用重定向,則無論腳本是否運行,它都會進入錯誤頁面。在成功修改之後,它永遠不會重定向到谷歌(只是將谷歌用作測試)。從這個
if ($parts[0] == $membername) {
die("Membername not found");
}
else {
$file[$n] = $membername . '=' . $displayname;
}
<?
$fileurl = '/.../..../...../...../memberfiletest';
$membername = $_POST['membername'];
$displayname = $_POST['displayname'];
$file = file($fileurl, FILE_IGNORE_NEW_LINES); // Get file as array of lines
foreach ($file as $n => $line) {
$parts = explode('=', $line);
if ($parts[0] == $membername) {
$file[$n] = $membername . '=' . $displayname;
//write the contents and redirect here itself
file_put_contents($fileurl, implode("\n", $file));
$success_page = 'http://google.com';//simply redirecting to google if its true
header('Location: '.$success_page);
}
else {//throw an error
//use this
$flag = 1;
}
if(isset($flag)){
//die("Membername not found");
header('Location:'.$error_page);
}
}
?>
奇怪的是,當我這樣做,它只是殺死了腳本並顯示一個錯誤頁面,上面寫着「成員名稱未找到」儘管我知道我在正確的成員名稱輸入。 –
謝謝你narasimharaosp的編輯。我已經在那裏,我更新了我的原始文章中的編碼,這樣您就可以看到我如何將標記編碼來處理錯誤,我不確定它的正確性,它仍然只是死掉,並顯示頁面「membername not found」no不管我輸入什麼。 –
感謝您編輯的鏈接。當我這樣做,它會通過和工作,但不重定向到谷歌,如果我使用一個僞造的成員名稱,它不會重定向它只是掛在一個白色頁面,它是.php頁面它去和不在文件的後端進行更改。所以沒有重定向和沒有真正的錯誤頁面。 –