使用PHP和会话登录页面

使用PHP和会话登录页面,php,html,mysql,session,login,Php,Html,Mysql,Session,Login,我已经为用户创建了一个数据库和一个带有用户名和密码的表。我想用简单的HTML和PHP创建一个登录页面,但是我找不到任何解决PHP代码问题的方法。所以有一个登录页面(index.HTML)和Chklogin.PHP和一个login\u success.PHP. 当我在用户表中输入用户名和密码时,它不会显示登录成功页面 以下是我的Chklogin.php代码: <?php $host="localhost"; // Host name $username="root"; // usernam

我已经为用户创建了一个数据库和一个带有用户名和密码的表。我想用简单的
HTML
PHP
创建一个登录页面,但是我找不到任何解决PHP代码问题的方法。所以有一个登录页面
(index.HTML)
Chklogin.PHP
和一个
login\u success.PHP.
当我在用户表中输入用户名和密码时,它不会显示登录成功页面

以下是我的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";
}

?>

以及登录_success.php的代码:

<?php 
session_start(); 

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

  • 添加
    和用户名!=''用户名不为空,SQL语句限制为1
    。否则,在某些情况下,可能会有人在没有正确凭据的情况下登录

  • session\u start()
    header()
    需要放在所有
    echo
    打印
    等输出之前(还有空格)。为什么?会话通常以浏览器的cookie开始,cookie在标题中发送。收割台需要在实际有效负载之前移动

  • 不要只检查会话中是否存在用户名,检查整个登录凭据是否正确。某些会话仍然保存在某些人可能能够操纵这些会话的位置

  • 退出
    头()之后(
    )-并非所有客户端都遵循头信息,在某些情况下,您的脚本可能会继续导致奇怪的效果

  • 对于调试,输入
    错误报告(E_ALL)
    ini\u集('display\u errors',true)最重要的

  • 添加
    和用户名!=''用户名不为空,SQL语句限制为1
    。否则,在某些情况下,可能会有人在没有正确凭据的情况下登录

  • session\u start()
    header()
    需要放在所有
    echo
    打印
    等输出之前(还有空格)。为什么?会话通常以浏览器的cookie开始,cookie在标题中发送。收割台需要在实际有效负载之前移动

  • 不要只检查会话中是否存在用户名,检查整个登录凭据是否正确。某些会话仍然保存在某些人可能能够操纵这些会话的位置

  • 退出
    头()之后(
    )-并非所有客户端都遵循头信息,在某些情况下,您的脚本可能会继续导致奇怪的效果

  • 对于调试,输入
    错误报告(E_ALL)
    ini\u集('display\u errors',true)最重要的


  • 你需要检查的东西

    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"); 
    

    你需要检查的东西

    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"); 
    

    您正在数据库中存储纯文本。请不要使用
    mysql.*
    函数。他们现在被弃用了!!取而代之的是,请使用或,数据放在数据库中的位置,数据库结构是什么,其中包含什么数据在文件开头启动会话,并且标题中的
    位置应以大写字母开头,我认为它区分大小写(未测试)@RoyalBg不区分大小写。您是否在数据库中存储纯文本。请不要使用
    mysql.*
    函数。他们现在被弃用了!!取而代之的是,请使用或,数据放在数据库中的位置,数据库结构是什么,其中包含什么数据在文件开头启动会话,并且标题中的
    位置应以大写字母开头,我认为它区分大小写(未测试)@RoyalBg不区分大小写。我尝试添加echo函数,但登录时,它显示一个空页面。它没有显示“错误的用户名或密码”或NULL。我尝试添加了echo函数,但在登录时,它显示了一个空页面。它不会显示“错误的用户名或密码”或NULL。