PHP登录只是刷新

时间:2013-11-24 14:36:12

标签: php login pdo page-refresh

尝试制作登录页面。当我点击“登录”按钮时,我没有得到任何错误或任何回声,只是刷新页面。

连接

<?php

class Connection{    

   public function dbConnect(){

      $db_host = "";
      $db_username = "";
      $db_password = "";
      $db_name = "";

      try{
         $db = new PDO('mysql:host='.$db_host.';dbname='.$db_name , $db_username , $db_password);
         $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
         //This is just to test if connection was succesfull.      
         echo "Success!";
      }
      catch(PDOException $e){
         echo "Server Error: ".$e->getMessage()."". "Unable to connect to server.";
      }
      return $db;
   }
}
?>

用户

<?php 

include_once("connection.php");

class Users{

       private $db; 

   public function __construct(){

      $this->db = new Connection();
      $this->db = $this->db->dbConnect();   
   }

   public function Login($username, $password){

      if(!empty($username) && !empty($password)){

          $stmt = $this->db->prepare("SELECT * FROM users WHERE username= ? AND password= ?");
          $stmt->bindParam(1,$username);
          $stmt->bindParam(2,$password);
          $stmt->execute();

          if($stmt->rowCount() == 1){
             echo "Successfully logged in!";
          }else{
             echo "Incorrect username or password please try again.";
          }         

      }else{
          echo"Must type a username and password to login.";
      }
   }
}
?>

这是登录页面的实际表单。我在整个HTML上有一个简短的PHP代码。

<?php

include_once("login.php");

if(isset($_POST["submit"])){ 

   $username = $_POST["username"];
   $password = $_POST["password"];
   $user = new User();
   $user->Login($username, $password);
}
?>

这是实际的表格部分:

<form method ="post" action="index.php">
<input class="classname2" type="text" placeholder="Username" name="username"><br><br>
<input class="classname2" type="password" placeholder="Password" name="password"><br><br>
<input class="classname" type="submit" value="Login" ><br><br>
<input class="classname" type="submit" value="SignUp" formaction="signup.php">
</form>

好的,现在它在将名称添加到登录按钮后稍微有效。现在查询或出现问题。我更改了如果rowCount()== 1会发生什么,因为标题(“Location:...”)给我一个:警告:无法修改标题信息 - 已经发送的标题(输出从/ home / content /开始) 49/11554349 / html / gb / dev / connection.php:15)在第25行的/home/content/49/11554349/html/gb/dev/login.php中。我还将其更改为echo成功登录,因为即使我为该用户名输入了错误的密码,它仍然在运行该部分代码。

3 个答案:

答案 0 :(得分:1)

您应该为您的提交输入命名。例如:name="submit"

<input class="classname" name="submit" type="submit" value="SignUp" formaction="signup.php">

使用if(isset($_POST['submit']))时,请在_POST数组中按名称进行检查。

答案 1 :(得分:1)

尝试使用,在name="submit"标记

中添加了<input/>属性
<input class="classname" name="submit" type="submit" value="Login" ><br><br>

而不是

<input class="classname" type="submit" value="Login" ><br><br>

答案 2 :(得分:1)

您似乎没有任何名为“提交”的数据可供参考。我通常会检查$ _POST数组的大小(因为isset不起作用,因为它通常是一个空数组)。

if (sizeof($_POST) != 0) {
    // ....
}

现在看来你的登录代码都没有被处理,因为没有$ _POST ['submit']。