2013-11-24 1 views
0

Попытка сделать страницу входа. Я не получаю никаких ошибок или каких-либо эхо-сигналов, что я должен просто обновлять страницу снова, когда я нажимаю кнопку «Вход».PHP Вход только обновляется

Подключение

<?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."; 
     } 
    } 
} 
?> 

Это когда фактическая форма для страницы входа есть. У меня есть короткий PHP-код поверх всего html.

<?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, потому что заголовок («Местоположение: ...») дает мне: Предупреждение: не удается изменить информацию заголовка - заголовки, уже отправленные (вывод запущен в/home/content/49/11554349/html/gb/dev/connection.php: 15) в /home/content/49/11554349/html/gb/dev/login.php в строке 25. И я также изменил его, чтобы эхо успешно вошло в систему, потому что он все еще выполнял эту часть кода, даже если я установил неверный пароль для этого имени пользователя.

+0

У вас нет поля формы 'name = 'submit', поэтому' $ _POST ['submit'] 'никогда не будет установлен. Добавьте к имени пользователя атрибут 'name = 'submit''. –

+0

, который определенно фиксировал часть проблемы, теперь запрос перепутался или что-то еще работает с кодом, если пароль неверен, и заголовок вызывает предупреждение – ljrod95

+0

Этот код подразумевает, что вы храните пароли в текстовом виде (несоленый, unhashed), что является очень плохим. Если вы действительно сделали хэш их перед хранением, вы, соответственно, не хотите вводить пароль ввода для проверки. –

ответ

1

Вы должны указать свой ввод для ввода имени. Например .: name="submit"

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

При использовании if(isset($_POST['submit'])) вы проверяете по имени в _POST массиве.

1

Попробуйте использовать, Добавлена ​​name="submit" атрибут в <input/> теге

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

вместо

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

Вы, кажется, не имеют каких-либо данных, называемых "представить" в качестве ссылки. Обычно я проверяю размер массива $ _POST (потому что isset не работает, поскольку обычно это пустой массив).

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

Похоже, сейчас ни один из кода авторизации не обрабатывается, так как нет $ _POST [ «Submit»].