2017-05-31 113 views
0

我試圖在login.php上創建一個登錄名。當我提交時,我重定向到文件validaton.phpPHP - 重定向後執行函數

現在,我檢查,如果用戶名和密碼在我的數據庫有這樣一個簡單的功能,現有的(還有更多,但是這是我的問題是關於什麼的):

validation.php

$result = $conn->query('SELECT * FROM db WHERE username = '.$username.' AND password = '.$password); 

if ($result->num_rows == 1){ 
    //Continue 
    header("Location: welcome.php"); 
} else { 
    // Go back to Login 
    header("Location: login.php"); 
} 

假設用戶不存在並且執行else語句。

有沒有辦法在我從validation.php重定向後直接執行login.php中的函數?

例如,我想提醒「此用戶不存在!」在login.php之後重定向。

的login.php

if(redirect happened){ 
    alert("This user doesn't exist!"); 
} 

這很難解釋我的問題在英語,但我盡力和任何幫助,將不勝感激!謝謝。

+0

看看到$ _SESSION變量:) – ThisGuyHasTwoThumbs

+0

什麼你的意思是不是? @ThisGuyHasTwoThumbs – Syno

+1

您可以在重定向之前放置'$ _SESSION ['redirected_to_login'] = true;'然後在您的登錄頁面上執行'if($ _SESSION ['redirect_to_login']){//一些代碼} 'http://php.net/manual/en/book.session.php – ThisGuyHasTwoThumbs

回答

2

是的,它的可能性。你需要在你的頭文件中添加一個參數()。

這裏是你如何能做到這一點:

$result = $conn->query('SELECT * FROM db WHERE username = '.$username.' AND password = '.$password); 

if ($result->num_rows == 1){ 
    //Continue 
    header("Location: welcome.php"); 
} else { 
    // Go back to Login 
    header("Location: login.php?redirect=1"); 
} 

現在,您可以檢查:

if($_GET['redirect'] == 1) { 
// redirect happened. execute some code or JS here. 
} 
+0

謝謝先生。哇,那麼容易......但我從來沒有想過這個...... :) – Syno

+0

當重定向參數沒有給出時,這會拋出一個錯誤..你可能想要檢查參數是否給出如下: if(isset( $ _GET ['redirect'])){ if($ _GET ['redirect'] == 1){ //然後您的代碼 } } –

+0

不客氣。快樂編碼! –

2

您可以使用會話

validation.php

session_start(); 
$result = $conn->query('SELECT * FROM db WHERE username = '.$username.' AND password = '.$password); 

if ($result->num_rows == 1){ 
    //Continue 
    header("Location: welcome.php"); 
} else { 
    // Go back to Login 
    $_SESSION['msg'] = "User not found"; 
    header("Location: login.php"); 
} 

的login.php

session_start(); 
if(isset($_SESSION['msg'])) 
{ 
    // code for show message 
} 
+0

謝謝你的回答! – Syno

+0

我用'session_destroy();'爲代碼避免了一個不必要的問題,在login.php中銷燬會話。 – Syno

0

其實有給你多種選擇。最基本的是使用GET-Request。例如,你可以使用類似:

header("Location: login.php?exist=no"); die();

和您的登錄頁面上,你可以通過使用一些接收參數,如:

if(isset($_GET['exist']) && $_GET['exist'] === 'no'){ 
    echo "User does not exist!"; 
}