2015-04-01 65 views
0

我有一个小脚本来处理登录到我的CMS。查询工作正常,但我认为我与SESSIONS有问题,因为它重定向到登录页面,即使用户名和密码正确。我有下面的代码。请帮我解决这个问题。提前致谢。PHP MYSQL登录脚本会话不工作

//checklogin.php ....

<?php 
include("db/dbconnect.php"); 

mysqli_select_db($connect, $db); 

// username and password sent from signup form 
$username = mysqli_real_escape_string($connect, $_POST['username']); 
$password = mysqli_real_escape_string($connect, $_POST['password']); 

$sql = "SELECT username, password FROM login WHERE username = '$username' AND password = '$password'"; 
$result = mysqli_query($connect, $sql) or die('Error : ' . mysqli_error($connect)); 

// Mysql_num_row is counting table row 
$count = mysqli_num_rows($result); 

// If result matched $username and $password, table row must be 1 row 
if($count == 1) 
{ 

    //Register $username, $password and redirect to mainpage" 
    $_SESSION['username'] = $username; 
    $_SESSION['password'] = $password; 

    header("location:about.php"); 
} 
else { 
echo "Invalid Username or Password. Please try again."; 
echo "<meta http-equiv=Refresh content=5;url=index.php>"; 
} 
?> 

//about.php

<?php 
//check if user is logged on; 
session_start(); 
if(!isset($_SESSION['username'])) 
{ 
    header("location:index.php"); 
} 
?> 
+0

你必须要在每一个脚本,它使用它(通常塞子它在包括这就是所谓的每一页上) – CD001 2015-04-01 10:53:50

+0

是的,我有“在session_start会话() ;”在所有需要认证的页面上 – 2015-04-01 10:58:34

+0

checklogin.php不包含session_start() – 2015-04-01 11:03:56

回答

0

add session_start();在checklogin.php 这将帮助你

<?php 
session_start(); //missing in checklogin.php 
include("db/dbconnect.php"); 
mysqli_select_db($connect, $db); 
+0

非常感谢人!有效。在我决定把它带到这里之前,我花了一个星期的时间。上帝保佑你。 – 2015-04-01 11:27:47

1

你需要给它分配的用户名和密码之前开始的会话。在您的“如果”条件($ count == 1)中,您直接分配用户名和密码。将这一行放在这些分配之前:

session_start();

所以,现在你的“如果”条件变为这样:

if($count == 1) 
{ 

    session_start(); 
    $_SESSION['username'] = $username; 
    $_SESSION['password'] = $password; 

    header("location:about.php"); 
} 

我想,这就是问题所在。让我知道,如果它有效。

+0

是的,它的工作!谢谢 – 2015-04-01 11:41:33

+0

请将答案标记为“正确”,并将其取消。谢谢 !! – arkumar 2015-04-01 11:43:03

+0

我已经标记了一个,是否有可能将多个答案标记为正确? – 2015-04-01 11:55:32