我已经建立了登录系统。
最后一个块不起作用,我试图找出它为什么不起作用。 我无法弄明白为什么它不起作用。
它应该可以工作,因为如果我登录,它会显示“您已登录为”。但是我应该收到“用户名或密码错误”这样的消息。
我在php文件的开头没有session_start()。
如果我的用户名或密码有误,则应在表单下方显示“用户名或密码错误”的消息。
除了消息之外,Everthing工作。 如果您尚未登录,则可以在最后一个区块看到“用户名或密码错误”的消息。
Het问题是最后一个片段。 有人会向我解释为什么它不起作用吗?
class login
{
public function __construct($db){
$this->db = $db;
}
public function show($conn)
{
$form = "";
if (isset($_POST['logout'])) {
$_SESSION = array();
// header('Location:http://localhost:8080/php/OOP/OOP-3/index.php?controller=content&action=getContent');
}
if (isset($_POST['login']) && isset($_POST['username']) && isset($_POST['password'])){
$user = $_POST['username'];
$pass = $_POST['password'];
$sql = $this->db->select2assoc("SELECT * FROM users");
foreach ($sql as $row)
{
if ($row['username'] == $user && $row['password'] == $pass)
{
$_SESSION['login'] = true;
$_SESSION['username'] = $row['username'];
break;
}
}
}
if (isset($_SESSION['login']) && $_SESSION['login'] == true && isset($_SESSION['username']))
{
$form .= '<form action= "#" method="post"><br>';
$form .= '<input type="submit" name="logout" value="logout">';
$form .= '</form>';
$form .= '<p>You are logged in as '.$_SESSION['username'].'</p>';
}
else {
$form .= '<form action="#" method="post">';
$form .= 'username <input type="text" name="username" size="17"><br>';
$form .= 'password <input type="password" name="password" size="17"><br>';
$form .= '<input type="submit" name="login" value="login">';
$form .= '</form>';
$form .='Username or password are wrong';
}
// if(isset($_POST['login']))
// {
// $form .="Username or password are wrong";
// }
// public function update(){
// return 'update-form for the gallery';
// }
// public function delete(){
// return 'delete-form for the gallery';
// }
return $form;
}
}
答案 0 :(得分:0)
欢迎使用Stack Overflow。请阅读如何提出好的问题 - 这个很难弄明白。 您总是看到“用户名或密码错误”的原因。是你将它附加到代码的“else”部分。
$form .='Username or password are wrong';
我认为这段代码有3个案例:
如果没有其他代码,很难看出这可能会如何起作用,但我认为它会是这样的:
if (isset($_SESSION['login']) && $_SESSION['login'] == true && isset($_SESSION['username']))
{
$form .= '<form action= "#" method="post"><br>';
$form .= '<input type="submit" name="logout" value="logout">';
$form .= '</form>';
$form .= '<p>You are logged in as '.$_SESSION['username'].'</p>';
}
else {
$form .= '<form action="#" method="post">';
$form .= 'username <input type="text" name="username" size="17"><br>';
$form .= 'password <input type="password" name="password" size="17"><br>';
$form .= '<input type="submit" name="login" value="login">';
$form .= '</form>';
if (isset($_SESSION['username']) && $_SESSION['username'] != $_POST['username']){
$form .='Username or password are wrong';
}
}