試圖做一個登錄頁面。我沒有收到任何錯誤或任何迴應,我應該只是點擊登錄按鈕時再次刷新頁面。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)在第25行的/home/content/49/11554349/html/gb/dev/login.php中。並且我也將它更改爲echo成功登錄,因爲它仍然在運行該部分代碼,即使我爲該用戶名輸入了錯誤的密碼。
您沒有表單字段'name ='submit'',所以'$ _POST ['submit']'永遠不會被設置。爲登錄按鈕添加一個'name ='submit''屬性。 –
這個問題肯定解決了問題的一部分,現在查詢被搞砸了,或者它仍然在運行代碼,如果密碼錯誤並且標題彈出警告 – ljrod95
此代碼意味着您以純文本形式存儲密碼(無聲, unhashed)這是非常糟糕的。如果你實際上在存儲之前對它們進行了散列處理,則不會相應地對輸入密碼進行散列測試。 –