PHP: 使用会话变量时,登录页面未进入主页
PHP: Login page not leading into homepage when using session variable
我有一个登录页面(checklogin.php),它指向我网站的主页(index.php)成功登录。为了确保只能通过登录页面访问 index.php(以及网站中的每个页面),我使用了一个在 [= 开始时检查的会话变量21=]index.php如下:
<?php
session_start();
if( !isset($_SESSION['myusername']) )
header("location:checklogin.php");
?>
添加后,通过checklogin.php登录导致错误('wrong username, password' - 即使两者都被批准);当我删除 index.php 中的上述会话代码时,主页打开时没有错误。
下面是checklogin.php中的代码:
<?php
$host="localhost"; // Host name
$username="garbo45"; // Mysql username
$password="water5"; // Mysql password
$db_name="garbo45"; // Database name
$tbl_name="members"; // Table name
// Connect to server and select database.
$conn = new mysqli($host, $username, $password, $db_name);
if ($conn->connect_error) die($conn->connect_error);
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysqli_real_escape_string($conn, $myusername);
$mypassword = mysqli_real_escape_string($conn, $mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysqli_query($conn, $sql);
// Mysql_num_row is counting table row
$count=mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "loginsuccess.php"
$_SESSION['myusername']= "myusername";
$_SESSION['mypassword']= "mypassword";
header("location:index.php");
}
else {
echo "Wrong Username or Password";
}
?>
为什么 index.php 中的会话代码块会在用户名和密码(我已验证在成员 table 中设置的用户名和密码)一旦通过时导致此错误会话检查被删除?如果能帮助理解和解决这个问题,我们将不胜感激。
您 checklogin.php
上缺少 session_start()
。
如果没有 session_start()
,您的以下代码将无法运行:
$_SESSION['myusername']= "myusername";
$_SESSION['mypassword']= "mypassword";
我有一个登录页面(checklogin.php),它指向我网站的主页(index.php)成功登录。为了确保只能通过登录页面访问 index.php(以及网站中的每个页面),我使用了一个在 [= 开始时检查的会话变量21=]index.php如下:
<?php
session_start();
if( !isset($_SESSION['myusername']) )
header("location:checklogin.php");
?>
添加后,通过checklogin.php登录导致错误('wrong username, password' - 即使两者都被批准);当我删除 index.php 中的上述会话代码时,主页打开时没有错误。
下面是checklogin.php中的代码:
<?php
$host="localhost"; // Host name
$username="garbo45"; // Mysql username
$password="water5"; // Mysql password
$db_name="garbo45"; // Database name
$tbl_name="members"; // Table name
// Connect to server and select database.
$conn = new mysqli($host, $username, $password, $db_name);
if ($conn->connect_error) die($conn->connect_error);
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysqli_real_escape_string($conn, $myusername);
$mypassword = mysqli_real_escape_string($conn, $mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysqli_query($conn, $sql);
// Mysql_num_row is counting table row
$count=mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "loginsuccess.php"
$_SESSION['myusername']= "myusername";
$_SESSION['mypassword']= "mypassword";
header("location:index.php");
}
else {
echo "Wrong Username or Password";
}
?>
为什么 index.php 中的会话代码块会在用户名和密码(我已验证在成员 table 中设置的用户名和密码)一旦通过时导致此错误会话检查被删除?如果能帮助理解和解决这个问题,我们将不胜感激。
您 checklogin.php
上缺少 session_start()
。
如果没有 session_start()
,您的以下代码将无法运行:
$_SESSION['myusername']= "myusername";
$_SESSION['mypassword']= "mypassword";