PHP - 重定向后执行函数

时间:2017-05-31 09:01:04

标签: php function redirect post url-redirection

我正在尝试在login.php上创建一个登录信息。提交时,我会重定向到文件validaton.php

现在,我用一个像这样的简单函数检查我的数据库中是否存在用户名和密码(还有更多,但这就是我的问题):

  

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语句。

有没有办法在我从login.php重定向后直接在validation.php执行某个功能?

例如,我想提醒“此用户不存在!”在重定向后login.php上。

  

的login.php

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

用英语解释我的问题很难,但我尽我所能,任何帮助都将受到高度赞赏!感谢。

3 个答案:

答案 0 :(得分: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.
}

答案 1 :(得分: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
}

答案 2 :(得分:0)

实际上有很多选择。最基本的是使用GET-Request。例如,您可以使用以下内容:

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

在您的登录页面上,您可以使用以下内容接收该参数:

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