2016-02-29 139 views
0

我正在編輯這個來澄清我的問題。用戶在表單中輸入成員名稱和顯示名稱,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); 
} 
} 
?> 

回答

1

更改這個

//when you match you put in array 
if ($parts[0] == $membername) { 
    $file[$n] = $membername . '=' . $displayname; 
    //soon after you got a match put the contents in file and redirect 
} 
else {//throw an error 
    //die("Membername not found"); 
    //use this 
    $flag = 1; 
} 

if(isset($flag)){ 
    //do what you need to handle the error 
} 

EDIT2:試試這個link

+0

奇怪的是,當我這樣做,它只是殺死了腳本並顯示一個錯誤頁面,上面寫着「成員名稱未找到」儘管我知道我在正確的成員名稱輸入。 –

+0

謝謝你narasimharaosp的編輯。我已經在那裏,我更新了我的原始文章中的編碼,這樣您就可以看到我如何將標記編碼來處理錯誤,我不確定它的正確性,它仍然只是死掉,並顯示頁面「membername not found」no不管我輸入什麼。 –

+0

感謝您編輯的鏈接。當我這樣做,它會通過和工作,但不重定向到谷歌,如果我使用一個僞造的成員名稱,它不會重定向它只是掛在一個白色頁面,它是.php頁面它去和不在文件的後端進行更改。所以沒有重定向和沒有真正的錯誤頁面。 –

1
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("\r\n", $file)); 
    $page = 'http://google.com';//simply redirecting to google if its true 
} 
else {//throw an error 
    //use this 
    $page = $err_page; 
} 

header('Location:'.$page); 
} 
+0

謝謝Bhavik當我嘗試你的代碼時,它出現並說第7行的無效參數foreach()我沒有改變任何東西,所以我不確定爲什麼這是我重新檢查我的代碼。 –

+0

我再次嘗試直接輸入您的代碼,我改變的唯一的事情是$ err_page去其他地方,所以我可以告訴它是否出現錯誤,並且在這兩種情況下,它跳過第一個重定向,無論成功還是失敗,它都會到我輸入的任何錯誤頁面。 –

+0

我使用了相同的代碼並執行它。並沒有顯示任何錯誤並且運行成功。我用文本文件來存儲和檢索數據。 –

0

我能夠通過學習$標誌的更多,並確保我使他們正確並在正確的上下文書面當我想申請的檢查,以最終解決這個問題。

<? 
$fileurl = '/..../..../..../..../memberfiletest'; 

$membername = $_POST['membername']; 
$displayname = $_POST['displayname']; 

$file = file($fileurl, FILE_IGNORE_NEW_LINES); // Get file as array of lines 
$found = 0; 

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://.../..../...html'; // redirect 
                       // if 
                       // successful 
    header('Location: ' . $success_page); 
    $found = 1; 
} 
} 

if ($found == 0) 
{ 
// No matching user... Redirect to error  
$error_page = 'http://google.com'; // redirecting to google just for 
             // testing 
header('Location:' . $error_page); 
} 
?>