Php登录系统,如何保护它

use*_*027 3 php security session login

这是一个php新手.下面是我用来构建登录系统以输入mypage.php的代码

它工作得很好但很天真,任何人都可以在网址中键入mypage.php并避开登录页面.我怎样才能使它更安全?

非常感谢!

    if(isset($_POST['submit'])) {
        $user = $_REQUEST['user'];  
        $pass = $_REQUEST['pass'];
        $sql = "SELECT * FROM login WHERE user='".$user."'";
        $res = $this->new_db->select($sql); 
        $row = $this->new_db->get_row($res);
        if (isset($row)) {  //user exists?
            if($row["pass"] == $pass){
$_SESSION['userId'] = $row['user'];// TRYING WITH SESSIONS
                header("Location: mypage.php");
            } else {
                echo "wrong pass";
            } 
        } else {
            echo "user does not exist";    
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后在mypage.php中

if(isset($_SESSION['userId'])) {

//contents

} else {
echo "there's an error";

}
Run Code Online (Sandbox Code Playgroud)

它打印"有一个错误"为什么?非常感谢

Dav*_*vid 5

三件事:

  1. 不要以纯文本格式存储密码.鉴于此代码,我只能假设您正在做的事情.您应该存储哈希密码,哈希用户输入的密码,并进行比较.
  2. 您有SQL注入漏洞.每当您收到用户输入的数据库查询时,至少应该将其包装进去mysql_real_escape_string().
  3. 在登录页面(在任何登录页面上),您将要跟踪用户是否已登录.一种简单的方法是让登录表单设置一个$_SESSION值,指示用户当前记录的信息 -在状态.然后在需要用户登录的任何页面上,检查该值.如果它存在,他们以前登录过.如果没有,他们没有.它很简单,但足以满足您的需求.