Php 从已检查的登录表单获取数据,如果我按“刷新”,它将重定向到白色页面,并转到它必须指向的页面

Php 从已检查的登录表单获取数据,如果我按“刷新”,它将重定向到白色页面,并转到它必须指向的页面,php,jquery,html,Php,Jquery,Html,我从登录页面表单中获取一些信息 当我按submit时,它会进入一个检查login.php页面,在那里它会从数据库中检查凭据是否正确。 然后它重定向到一个曲目页面 我的问题是,当我使用正确的凭据在登录页面上按submit时。 它将重定向到白色页面。 然后,如果我按刷新,它会重定向到正确的页面 <div> <h1>Login Form</h1> <form action="check-login.php"> <input type

我从登录页面表单中获取一些信息

当我按submit时,它会进入一个
检查login.php
页面,在那里它会从数据库中检查凭据是否正确。
然后它重定向到一个曲目页面

我的问题是,当我使用正确的凭据在登录页面上按submit时。
它将重定向到白色页面。
然后,如果我按刷新,它会重定向到正确的页面

<div>
  <h1>Login Form</h1>
  <form action="check-login.php">
    <input type="text" name="user" placeholder="user">
    <input type="password" name="password" placeholder="password">
    <input type="submit" value="log in">
  </form>
</div>

登录表单
这是检查登录php页面

<?php
session_start();
$user=$_GET['user'];
$pass=$_GET['password'];
include("dblogin.php");
$sql="SELECT * FROM login";
$result=mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    if($user==$row["username"] && $pass==$row["password"]){
        $_SESSION["userid"]=$row["id"];
        header ("Location: tracks.php");
  }
}
if ($_SESSION["userid"]==""){
  header ('Location: login.html?message=Wrong Username or Password');
}
?>

尝试以下代码进行重定向:

http_response_code(302); // send redirect code
header('Location: /tracks.php'); // send Location header
exit(0); // don't send anything else

请尝试以下代码进行重定向:

http_response_code(302); // send redirect code
header('Location: /tracks.php'); // send Location header
exit(0); // don't send anything else
试试这个

If (!isset($_SESSION['userid'])
{
echo "script type='text/javascript'>window.location.href='login.html?message=Wrong Username or Password'/script";
}
由于头函数有时在某些服务器上不起作用,所以可能会出现问题

注意:完成脚本标记,因为我无法从手机添加代码,脚本标记正在被解析。

试试这个

If (!isset($_SESSION['userid'])
{
echo "script type='text/javascript'>window.location.href='login.html?message=Wrong Username or Password'/script";
}
由于头函数有时在某些服务器上不起作用,所以可能会出现问题


注意:完成脚本标记,因为我无法从手机添加代码,脚本标记也无法被解析。

我不确定这是否是问题所在……
但即使这不是解决办法,也不会是一件坏事

更改您的
表单
标签,如下所示:

<form action="check-login.php" method="post">
$user=$_POST['user'];
$pass=$_POST['password'];
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    if($user==$row["username"] && $pass==$row["password"]){
        //$_SESSION["userid"]=$row["id"];
        header ("Location: tracks.php?id=" . $row["id"]);
  }
}
我再次强烈建议将您的代码从
mysql
升级到
mysqli
或准备好的语句。关于这一点,有很多答案




编辑
我之前建议的更改很好。
但这不是问题所在

我想起了一段往事,因为我过去也有过类似的问题

问题是您的
$\u会话[“userid”]=$row[“id”]tracks.php
之前,code>没有时间编写

这样做:

<form action="check-login.php" method="post">
$user=$_POST['user'];
$pass=$_POST['password'];
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    if($user==$row["username"] && $pass==$row["password"]){
        //$_SESSION["userid"]=$row["id"];
        header ("Location: tracks.php?id=" . $row["id"]);
  }
}
tracks.php
中,将其设置为session

$_SESSION["userid"]=$_REQUEST["id"];
$\u请求
将捕获
$\u发布
$\u获取




编辑:切换到mysqli

试试这个。。。即使这不是我们要解决的问题,这也是一件好事。
您应该将此修改应用于所有PHP文件

我知道mysql\u query有安全问题(但不完全是什么问题)。。。而且可能还有性能问题。因此,这是一个很好的改进。
然后,我们将确保问题源不是由此引起的

<?php
session_start();
$user=$_REQUEST['user'];
$pass=$_REQUEST['password'];
//include("dblogin.php");


$conn = mysqli_connect("localhost","my_user","my_password","my_db");
if (mysqli_connect_error()) {
  echo "<p>Connection failed:".mysqli_connect_error()."</p>\n";
}

$sql="SELECT * FROM login";
$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));

$idFound=false;

while ($row = mysqli_fetch_array($result)) {
    if($user==$row["username"] && $pass==$row["password"]){
        //$_SESSION["userid"]=$row["id"];
        $idFound=true;
        $idFoundis = $row["id"];
        break;
  }
}
if ($idFound){
  header ("Location: tracks.php?id=" . $idFoundis);
}else{
  header ('Location: login.html?message=Wrong Username or Password');
}
?>

我不确定这就是问题所在……
但即使这不是解决办法,也不会是一件坏事

更改您的
表单
标签,如下所示:

<form action="check-login.php" method="post">
$user=$_POST['user'];
$pass=$_POST['password'];
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    if($user==$row["username"] && $pass==$row["password"]){
        //$_SESSION["userid"]=$row["id"];
        header ("Location: tracks.php?id=" . $row["id"]);
  }
}
我再次强烈建议将您的代码从
mysql
升级到
mysqli
或准备好的语句。关于这一点,有很多答案




编辑
我之前建议的更改很好。
但这不是问题所在

我想起了一段往事,因为我过去也有过类似的问题

问题是您的
$\u会话[“userid”]=$row[“id”]tracks.php
之前,code>没有时间编写

这样做:

<form action="check-login.php" method="post">
$user=$_POST['user'];
$pass=$_POST['password'];
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    if($user==$row["username"] && $pass==$row["password"]){
        //$_SESSION["userid"]=$row["id"];
        header ("Location: tracks.php?id=" . $row["id"]);
  }
}
tracks.php
中,将其设置为session

$_SESSION["userid"]=$_REQUEST["id"];
$\u请求
将捕获
$\u发布
$\u获取




编辑:切换到mysqli

试试这个。。。即使这不是我们要解决的问题,这也是一件好事。
您应该将此修改应用于所有PHP文件

我知道mysql\u query有安全问题(但不完全是什么问题)。。。而且可能还有性能问题。因此,这是一个很好的改进。
然后,我们将确保问题源不是由此引起的

<?php
session_start();
$user=$_REQUEST['user'];
$pass=$_REQUEST['password'];
//include("dblogin.php");


$conn = mysqli_connect("localhost","my_user","my_password","my_db");
if (mysqli_connect_error()) {
  echo "<p>Connection failed:".mysqli_connect_error()."</p>\n";
}

$sql="SELECT * FROM login";
$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));

$idFound=false;

while ($row = mysqli_fetch_array($result)) {
    if($user==$row["username"] && $pass==$row["password"]){
        //$_SESSION["userid"]=$row["id"];
        $idFound=true;
        $idFoundis = $row["id"];
        break;
  }
}
if ($idFound){
  header ("Location: tracks.php?id=" . $idFoundis);
}else{
  header ('Location: login.html?message=Wrong Username or Password');
}
?>



这与JavaScript有什么关系?我也在使用jquery,这就是为什么它会在服务器上javascriptCheck查找“错误日志”文件,通常在错误源所在的同一目录中。看看这个答案,看看这些是否有助于这与JavaScript有什么关系?我也在使用jquery,这就是为什么它会javascriptCheck查找“错误日志”服务器上的文件,通常在错误源所在的同一目录中。请查看此答案,看看如果我将正确的凭据放在白色屏幕上,并且如果我刷新它,这些选项是否有帮助。问题是,我只集中在重定向上,但整个代码段需要更新。如果我将正确的凭据放在白色屏幕上,这些选项是否有帮助屏幕上,如果我刷新,它将转到tracks php。问题是,我刚刚集中精力在重定向上,但整个代码段需要更新。如果我将正确的凭据放在白色屏幕上,如果我刷新,它将转到tracks php。问题是,如果我将正确的凭据放在白色屏幕上,如果我刷新,它将转到tracks问题就在这里好了。。。mmm尝试添加
break在这一行之后
标题(“Location:tracks.php”)。。。也许…好吧。。。我想到了另一件事。。。让我来编辑。完成。。。试试看;)有没有一种方法可以让链接自行执行,因为如果我按“登录”按钮,url就是我按“刷新”,那么它就会重定向?这就是为什么我建议使用
post
。。。要在地址栏中从用户视图中隐藏它。。。看看我的编辑,我想这次我有你的问题了。好的。。。mmm尝试添加
break在这一行之后
标题(“Location:tracks.php”)。。。也许…好吧。。。我想到了另一件事。。。让我来编辑。完成。。。试试看;)有没有一种方法可以让链接自行执行,因为如果我按“登录”按钮,url就是我按“刷新”,那么它就会重定向?这就是为什么我建议使用
post
。。。要在地址栏中从用户视图中隐藏它。。。看一下我的编辑,我想这次我收到了你的问题。