尝试制作登录页面。当我点击“登录”按钮时,我没有得到任何错误或任何回声,只是刷新页面。
连接
<?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成功登录,因为即使我为该用户名输入了错误的密码,它仍然在运行该部分代码。
答案 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']。