Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中用于重定向的标头_Php_Html_Mysql_Header - Fatal编程技术网

php中用于重定向的标头

php中用于重定向的标头,php,html,mysql,header,Php,Html,Mysql,Header,新代码 $count= mysqli_num_rows($result); if ($count==1){ $row=mysqli_fetch_row($result); if(($row[1]==$username) && ($row[2]==$password))

新代码
            $count= mysqli_num_rows($result);


                    if ($count==1){

                        $row=mysqli_fetch_row($result);



                            if(($row[1]==$username) && ($row[2]==$password))
                            {
                                echo $row[1];   
                                $_SESSION["myusername"]= $username;
                                $_SESSION["mypassword"]= $password;
                                header("location: login_success.php"); 
                                exit();
                            } else {

                            echo "No user found";
                            }

                    } else {

                echo "No rows selected";

                //}

                mysqli_close($dbc); // Closing Connection   
                }
    }
?>
我修改了代码,但是header语句导致代码停止。如果我删除标题,它将按预期工作。

$username=stripslashes($sent\u username)
是罪魁祸首,因为您将获取的用户名保存在
$sent\u user
中,而不是
$sent\u username
中。因为这就是您在查询中使用的内容:

$sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'"; 
其中,
$username
没有任何意义,如果您回滚并查看它真正包含的内容,即,
$username=stripslashes($sent\u username),现在您看到罪犯
$sent\u username
,它在哪里?没有,确实是个打字错误

与此相反:

        $sent_user=$_POST['myusername'];
        $sent_password=$_POST['mypassword'];
        $username = stripslashes($sent_username);
        $password = stripslashes($sent_password);
header("location:login_success.php");
试试这个:

        $sent_user=$_POST['myusername'];
        $sent_password=$_POST['mypassword'];
        $username = stripslashes($sent_user);
        $password = stripslashes($sent_password);
编辑:

这应该可以解决您的问题,但是有几件事您应该重新检查

1)标题的正确语法:

与此相反:

        $sent_user=$_POST['myusername'];
        $sent_password=$_POST['mypassword'];
        $username = stripslashes($sent_username);
        $password = stripslashes($sent_password);
header("location:login_success.php");
使用以下命令:

header("Location: login_success.php");
2)
echo
您的查询要查看实际发生的情况,请使用正确的列和正确的值发送正确的表

3)我怎么能忘记最重要的部分呢,不管你对会话做了什么,总是写
session_start()在每个文件的代码开头,您打算在其中使用会话

^例如:

删除:

 echo $row[1]; 
在header命令上方。在向客户机提供任何其他输出之前,必须始终出现标题。这是因为在HTTP规范中,头首先出现,并且必须采用正确的格式

如果在将其他内容发送到客户端后尝试在PHP中使用Header,则会触发警告,因为您试图违反HTTP规范。这就是文件中所说的:

记住,在发送任何实际输出之前,必须调用header(),可以是通过普通HTML标记、文件中的空行,也可以是通过PHP。使用include或require函数或其他文件访问函数读取代码,并在调用header()之前输出空格或空行,这是非常常见的错误。使用单个PHP/HTML文件时也存在同样的问题


可能是你的逻辑。您确定$rows==1吗?因为如果没有,它将始终失败。
echo$sql=“从$tbl_name中选择*,其中username='$username'和password='$password'你看到了什么?你没有在任何地方显示你的错误。另外,您的代码发生了什么变化?你得到的是空白页吗?如果您得到的是空白页面,请尝试在mysqli_close($dbc)之后回显错误(如果有)编辑:一个旁注是您的代码
标题(“location:login_success.php”)
应该是
标题(“Location:login_success.php”)。这不会破坏您的代码,但这是正确的方法。感谢您的反馈。我想我使用了一个保留字作为变量行,这可能会让人困惑。我会改变它,看看会发生什么。@FaizAbdelhafid啊,这可能是一个问题。如果这有助于解决您的问题,请不要忘记接受我的答案干杯。