登录消息不想显示

时间:2018-01-16 15:00:17

标签: php

我已经建立了登录系统。

最后一个块不起作用,我试图找出它为什么不起作用。 我无法弄明白为什么它不起作用。

它应该可以工作,因为如果我登录,它会显示“您已登录为”。但是我应该收到“用户名或密码错误”这样的消息。

我在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;
      }
  }

1 个答案:

答案 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';
       }
  }
相关问题