我的PHP知识水平:新手。
学习资源: Codecademy,TheNewBoston,维基百科,PHP文档。
我想要实现的目标:我正在努力学习如何使用面向对象的PHP,因为我已经阅读过,从长远来看,这比程序方法更有效。我试图将用户重定向到login.php页面,如果输入的名称和密码与数据库和relogin.php匹配失败。
问题:我无法弄清楚为什么我的条件不按预期工作。它确实有效,否则我会收到错误消息。
我尝试了什么:从头开始学习以下代码。我对问题进行了谷歌搜索,尝试通过检查是否缺少任何分号或括号来修复它,甚至检查我的数据库连接是否可以建立。似乎没有错误,所以这意味着条件只显示为真。
当前错误消息:屏幕上或源代码中没有错误消息,这意味着代码正确但无法按预期工作。
如果您希望我对代码发表评论,请告诉我。
我的PHP代码:
if(isset($_POST['name'])) {
$name= $_POST['name'];
$password = $_POST['password'];
$login = new login($name, $password);
}
class Login {
public function __construct ($name, $password) {
if ($this->check($name, $password)){
header("location:login.php");
}
else {
header("location:relogin.php");
}
}
public function check ($name, $password) {
$request = "SELECT `id` FROM `members` WHERE `name` LIKE '$name' AND ´password´ LIKE '$password'";
$result = mysqli_query($connection, $request);
return mysqli_num_rows($result) > 0;
}
}
public function check ($name, $password) {
$request = "SELECT `id` FROM `members` WHERE `name` LIKE '$name' AND ´password´ LIKE '$password'";
$result = mysqli_query($connection, $request);
return $result;
}
}
**HTML code**
<form action="Login.php" method="post">
<input type="text" placeholder="Name" name="name">
<input type="password" placeholder="Password" name="password">
<input type="submit" name="button" value="Login">
</form>
答案 0 :(得分:2)
您要存储密码两次:
$password = $_POST['name'];
$password = $_POST['password'];
我猜第一个应该是$ name。
另外,要使课程成功,您需要从中创建一个对象:
if(isset($_POST['password'])) {
$name= $_POST['name'];
$password = $_POST['password'];
$login = new login($name, $password);
}
您还需要修改构造函数中的代码:
当你在同一个类中调用一个函数时,你需要使用$ this-&gt;来引用它:
check($name, $password)
应该成为:
$this->check($name, $password)
此外:
您的支票功能不会返回true或false。 您可以返回类似的内容:
return mysqli_num_rows($result) > 0;
答案 1 :(得分:0)
试试这个,
课程登录 {
public function __construct ($name, $password) {
if ($this->check($name, $password) > 0) {
header("location:login.php");
}
else {
header("location:relogin.php");
}
}
public function check ($name, $password) {
$request = "SELECT `id` FROM `members` WHERE `name` LIKE '$name' AND ´password´ LIKE '$password'";
$result = mysqli_query($connection, $request);
return mysqli_num_rows($result);
}
}
if(isset($ _ POST ['password'])){
$name= $_POST['name'];
$password = $_POST['password'];
$login = new Login($name, $password);
}