使用PHP和SESSION登录页面

时间:2013-06-13 11:03:57

标签: php html mysql session login

我已经为用户创建了一个数据库和一个用户名和密码的表。我想用简单的HTMLPHP创建一个登录页面,但是我无法找到解决PHP问题的任何解决方案code.So有一个登录页面(index.html)Chklogin.php以及login_success.php. 当我输入已插入到users表中的用户名和密码之前,它不会显示login_success页面。

这是我的Chklogin.php代码:

<?php

$host="localhost"; // Host name
$username="root"; // username
$password="root"; // password
$db_name="TA"; // Database name
$tbl_name="user"; // Table name

mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");


$myusername=mysql_real_escape_string($_POST['username']);
$mypassword=mysql_real_escape_string($_POST['password']);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
  // Register $myusername, $mypassword and redirect to file "login_success.php"
  session_start();
  $_SESSION['username'] = $myusername;
  $_SESSION['password'] = $mypassword; 
  header("location: login_success.php");
} 
    else {
        echo "Wrong Username or Password";
}

?>

login_success.php的代码:

<?php 
session_start(); 

if(!$_SESSION['username']){ 
    header("Location: index.html"); 
    exit; 
} 
echo 'Welcome, '.$_SESSION['username']; 
header("Location: student-page.html");
?>

2 个答案:

答案 0 :(得分:3)

  1. AND username != '' AND username IS NOT NULL LIMIT 1添加到您的SQL语句中。否则,在某些情况下,有人可能无法使用正确的凭

  2. session_start()header()需要在所有echoprint等输出(也是空白空间)之前放置。为什么?会话通常以浏览器的cookie开头,cookie在标题内发送。标题需要在实际有效载荷之前。

  3. 不要仅检查会话中是否存在用户名,检查整个登录凭据是否正确。某些会话仍保存在某人可能能够操作这些

  4. 的位置
  5. exit;放在header()之后 - 并非所有客户都遵循标题信息,并且您的脚本可能会在某些情况下继续导致奇怪的效果

  6. 进行调试,将error_reporting(E_ALL);ini_set('display_errors', true);置于一切之上

答案 1 :(得分:1)

您需要检查

1.
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
echo $sql; // Because you have to be sure the query is correct


2.
$count=mysql_num_rows($result);
echo $count; // Because the number can be > 1
or add LIMIT 1 to the query

3.
if($count==1){
echo 'ok'; // to see if everything is okay
}

4. If all 3 of the above are True then check the path to this file
header("location: login_success.php");