我想获得一个简单的登录表单,对于已签名的用户,它必须说"您好,登录",但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!";
答案 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);
}