2017-05-31 46 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!"; 
}