Попытка сделать страницу входа. Я не получаю никаких ошибок или каких-либо эхо-сигналов, что я должен просто обновлять страницу снова, когда я нажимаю кнопку «Вход».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. И я также изменил его, чтобы эхо успешно вошло в систему, потому что он все еще выполнял эту часть кода, даже если я установил неверный пароль для этого имени пользователя.
У вас нет поля формы 'name = 'submit', поэтому' $ _POST ['submit'] 'никогда не будет установлен. Добавьте к имени пользователя атрибут 'name = 'submit''. –
, который определенно фиксировал часть проблемы, теперь запрос перепутался или что-то еще работает с кодом, если пароль неверен, и заголовок вызывает предупреждение – ljrod95
Этот код подразумевает, что вы храните пароли в текстовом виде (несоленый, unhashed), что является очень плохим. Если вы действительно сделали хэш их перед хранением, вы, соответственно, не хотите вводить пароль ввода для проверки. –