登录页面无法正常工作
Posted
技术标签:
【中文标题】登录页面无法正常工作【英文标题】:Login page not functioning 【发布时间】:2016-03-23 12:02:46 【问题描述】:当我第一次打开登录页面时,即使我使用了正确的用户名和密码,登录页面也不会被重定向到主页。但是在第二次登录时,它被正确地重定向到主页。 login.php 的代码如下所示。
<?php
session_start();
$_SESSION['login_user'] = false;
?>
login.php 的其余部分是简单的 html,并将登录表单数据发送到 validate.php 其中 validate.php 看起来像这样。
<?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;
?>
关于第一次登录页面无法正常运行的任何建议(请注意,当我第二次登录时,它被正确重定向到所需的 home.php)
【问题讨论】:
可能是设置会话中存在一些问题。 PL。检查第二次进入该登录页面时是否启用会话? 首先你应该检查 $_SESSION['login_user'] 是否为真,如果是,然后将其重定向到 home.php 就在您将 $_SESSION['login_user'] 设置为 true 的位置上方,您应该回显一些内容作为测试,看看它是否真的达到了这一点。尝试类似:echo "Got to here #1";
您还需要在重定向之前放置一个临时的exit;
,否则您将看不到消息显示。如果您没有看到“Got to here #1”消息,请在脚本中的不同位置放置另一条消息,然后查看该消息是否出现。这是基本的错误测试,用于缩小脚本的哪些部分正在运行。如果您需要查看变量的内容,也可以回显这些内容。
【参考方案1】:
尝试使用下面的代码。
<?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;
?>
【讨论】:
【参考方案2】:您应该在登录页面上打印会话变量。像这样的:
var_dump($_SESSION);
这样当您输入登录信息并且在第一次尝试时未重定向时,您将看到是否正在设置值。这是要采取的第一步。然后您将更好地了解您需要在文件中更改的内容。
【讨论】:
以上是关于登录页面无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章