php登录cookie和会话

时间:2016-03-11 00:09:52

标签: php cookies login session-cookies

我想获得一个简单的登录表单,对于已签名的用户,它必须说"您好,登录",但Cookie不起作用,并且它总是像我没有登录请帮助我做错了什么? 这是我的html文件:

<form action="index.php" method="post">
    <input type="text" name="login"/>
    <input type="password" name="password"/>
    <input type="submit" value="LOGIN"/>
</form>

和php:

 <?php
        session_start(); 
        $login = $_POST['login'];
        $password = $_POST['password'];

        function getUsers()
        {
            return array('test'=>'123','jack'=>'345');
        }

        function checkLoginPassword($login, $password)
        {
            $users=getUsers();
            if(!isset($users[$login]))
                return false;
            if($users[$login] != $password)
                return false;
            return true;
        }

        function login($login,$password)
        {
            if(!checkLoginPassword($login,$password)) {
                return false;
            }
            $id = rand(1,100);
            setcookie('user_session',$id,time()+86400);
            $_SESSION['user_'.$id]=$login;
        }

        function isLoggedIn()
        {
            if(!isset($_COOKIE['user_session']))
                return false;
            $id=(int)$_COOKIE['user_session'];
            if(!isset($_SESSION['user_'.$id]))
                return false;
            return true;
        }

        if (isLoggedIn()){
            echo "Hello, ".$login; 
        }
        else echo "You are not signed in!";

2 个答案:

答案 0 :(得分:0)

function isLoggedIn()
{
    if(!isset($_COOKIE['user_session']))
        return false;
    $id=(int)$_COOKIE['user_session'];
    if(!isset($_SESSION['user_'.$id]))
        return false;
    return true;
}

这个解决方案很糟糕,但要真正回答你的问题,问题是这里没有设置$ id。没有本地的,也没有全球$ id

答案 1 :(得分:0)

即使你在php中按html登录也没有提到这个功能。

你需要将它放在你的代码中,而不是它可以工作。

if (!empty($_POST)) {
    $login = $_POST['login'];
    $password = $_POST['password'];

    login($login, $password);
}