Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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 - Fatal编程技术网

Php 登录页面不起作用

Php 登录页面不起作用,php,Php,当我第一次打开登录页面时,即使我使用了正确的用户名和密码,登录页面也不会被重定向到主页。但在第二次登录时,它被正确地重定向到主页。login.php的代码如下所示 <?php session_start(); $_SESSION['login_user'] = false; ?> <?php session_start(); $username=""; $password=""; $usernameErr=""; $passwordErr="

当我第一次打开登录页面时,即使我使用了正确的用户名和密码,登录页面也不会被重定向到主页。但在第二次登录时,它被正确地重定向到主页。login.php的代码如下所示

<?php
session_start();
$_SESSION['login_user'] = false;
?>
<?php
session_start();
    $username="";
    $password="";
    $usernameErr=""; 
    $passwordErr="";
    $empty=false;
    $_SESSION['login_user'] = false;
    if(isset($_POST['submit']))
    {
        if(empty($_POST['username']))
        {
            $empty=true;
            $usernameErr="Username is empty. Please try again";
        }
        else 
            {
                $username=$_POST['username'];
            }
        if(empty($_POST['password']))
        {
            $empty=true;
            $passwordErr="Password is empty. Please try again";
        }
        else 
            {
                $password=$_POST['password'];
            }
        if(!$empty)
        {
            $servername="myxor.in.mysql";
            $dbusername="myxor_in";
            $dbpassword="srikanth177";
            $dbname="myxor_in";
            $conn=new mysqli($servername, $dbusername, $dbpassword, $dbname);
            if($conn->connect_error) 
            {
                die("Connection failed: " . $conn->connect_error);
            }
            $sql = "SELECT firstname,package,username,password FROM users WHERE username='$username'";
            $result = $conn->query($sql);
            if (($result->num_rows) > 0) 
            {
                $row = $result->fetch_assoc();
                if($username === $row['username']) 
                    {
                        if($password === $row['password'])
                        {
                            $_SESSION['fname'] = $row['firstname'];
                            $_SESSION['pack'] = $row['package'];
                            //$_SESSION['login_user'] = $username;
                            $_SESSION['login_user'] = true;
                            header('Location: http://www.myxor.in/home.php');
                            exit;
                        }
                        else
                        {
                            $passwordErr = "Invalid Password. Please Try Again";
                        }
                    }
            } else
            {
                $usernameErr = "Invalid Username. Please Try Again";
            }
        }
    }
    else echo "submit not set";
    echo $usernameErr;
    echo "<br>";
    echo $passwordErr;
?>

php的其余部分是简单的html,登录表单数据被发送到validate.php 其中validate.php如下所示

<?php
session_start();
$_SESSION['login_user'] = false;
?>
<?php
session_start();
    $username="";
    $password="";
    $usernameErr=""; 
    $passwordErr="";
    $empty=false;
    $_SESSION['login_user'] = false;
    if(isset($_POST['submit']))
    {
        if(empty($_POST['username']))
        {
            $empty=true;
            $usernameErr="Username is empty. Please try again";
        }
        else 
            {
                $username=$_POST['username'];
            }
        if(empty($_POST['password']))
        {
            $empty=true;
            $passwordErr="Password is empty. Please try again";
        }
        else 
            {
                $password=$_POST['password'];
            }
        if(!$empty)
        {
            $servername="myxor.in.mysql";
            $dbusername="myxor_in";
            $dbpassword="srikanth177";
            $dbname="myxor_in";
            $conn=new mysqli($servername, $dbusername, $dbpassword, $dbname);
            if($conn->connect_error) 
            {
                die("Connection failed: " . $conn->connect_error);
            }
            $sql = "SELECT firstname,package,username,password FROM users WHERE username='$username'";
            $result = $conn->query($sql);
            if (($result->num_rows) > 0) 
            {
                $row = $result->fetch_assoc();
                if($username === $row['username']) 
                    {
                        if($password === $row['password'])
                        {
                            $_SESSION['fname'] = $row['firstname'];
                            $_SESSION['pack'] = $row['package'];
                            //$_SESSION['login_user'] = $username;
                            $_SESSION['login_user'] = true;
                            header('Location: http://www.myxor.in/home.php');
                            exit;
                        }
                        else
                        {
                            $passwordErr = "Invalid Password. Please Try Again";
                        }
                    }
            } else
            {
                $usernameErr = "Invalid Username. Please Try Again";
            }
        }
    }
    else echo "submit not set";
    echo $usernameErr;
    echo "<br>";
    echo $passwordErr;
?>

您应该在登录页面上打印会话变量。大概是这样的:

var_dump($_SESSION);
因此,当您输入登录信息并且在第一次尝试时没有重定向时,您将看到是否正在设置这些值。这是第一步。然后,您将更好地了解需要在文件中更改的内容。

尝试使用以下代码

<?php
    session_start();
    $username="";
    $password="";
    $usernameErr=""; 
    $passwordErr="";
    $empty=false;
    $_SESSION['login_user'] = false;
    if(isset($_POST['submit']))
    {
        if(empty($_POST['username']))
        {
            $empty=true;
            $usernameErr="Username is empty. Please try again";
        }
        else 
        {
            $username=$_POST['username'];
        }
        if(empty($_POST['password']))
        {
            $empty=true;
            $passwordErr="Password is empty. Please try again";
        }
        else 
        {
            $password=$_POST['password'];
        }
        if(!$empty)
        {
            $servername="myxor.in.mysql";
            $dbusername="myxor_in";
            $dbpassword="srikanth177";
            $dbname="myxor_in";
            $conn=new mysqli($servername, $dbusername, $dbpassword, $dbname);
            if($conn->connect_error) 
            {
                die("Connection failed: " . $conn->connect_error);
            }
            $sql = "SELECT firstname,package,username,password FROM users WHERE username='$username'";
            $result = $conn->query($sql);
            if (($result->num_rows) > 0) 
            {
                $row = $result->fetch_assoc();
                if($username == $row['username']) 
                    {
                        if($password == $row['password'])
                        {
                            $_SESSION['fname'] = $row['firstname'];
                            $_SESSION['pack'] = $row['package'];
                            //$_SESSION['login_user'] = $username;
                            $_SESSION['login_user'] = true;
                            header('Location: http://www.myxor.in/home.php');
                        }
                        else
                        {
                            $passwordErr = "Invalid Password. Please Try Again";
                        }
                    }
            } else
            {
                $usernameErr = "Invalid Username. Please Try Again";
            }
        }
    }
    else echo "submit not set";
    echo $usernameErr;
    echo "<br>";
    echo $passwordErr;
?>

设置会话中可能存在一些问题。Pl.检查第二次登录页面时会话是否启用?首先,您应该检查$\u会话['login\u user']是否为true(如果为true),然后将其重定向到home.php,您应该在上面将$\u会话['login\u user']设置为true,以测试它是否真的到达了这一点。尝试类似的方式:
echo“到达这里#1”您还需要放置一个临时
出口在重定向之前,否则您将看不到消息显示。如果您没有看到“Got to here#1”消息,请在脚本中的其他位置放置另一条消息,然后查看该消息是否显示。这是一个基本的错误测试,用于缩小脚本运行的范围。如果您需要查看变量的内容,也可以将这些内容回显出来。