我正在上PHP课,我们正在学习对象类。我被告知要创建一个名为' LoginBox'的对象类。这将验证用户并将其重定向到新页面,具体取决于他们的信息是否正确。我们还没有研究MYSQL,所以我无法在这个例子中使用它。我被告知我可以使用静态用户名和密码来解决这个特定问题,因为我们还没有研究数据库。
我的问题是我不知道如何使用Object类将信息从一个页面传送到另一个页面。我觉得如果我能弄明白,我的班级会做我需要做的一切,但很难说清楚,因为这部分让我无法看到结果。正如你在我的代码中看到的那样,我尝试使用$ _Post,但现在重要的是我尝试的信息不会延续到新页面,它什么也没显示。有没有人对如何解决这个问题有任何建议?提前谢谢!
class LoginBox {
public $userName = "user123";
public $password = "pass123";
public $var1;
public $var2;
public function makeTable() {
echo '<form action="loggedin.php" method="post">
Name: <input type="text" name="username"><br>
E-mail: <input type="text" name="password"><br>
<input type="submit">
</form>';
}
public function __construct() {
$this->var1=isset($_POST['username']) ? $_POST['username'] : null;
$this->var2=isset($_POST['password']) ? $_POST['password'] : null;
}
public $SuccessRedirect = "Welcome back!";
public $FailRedirect = "You have entered the incorrect information. Please return and try again.";
public function action() {
if ($this->$var1 <> $this->$userName || $this->$var2 <>$this->$password) {
echo $failRedirect;
}
else {
echo $SuccessRedirect;
}
}
}
答案 0 :(得分:1)
我更正了你的剧本:
class LoginBox {
public $userName = "user123";
public $password = "pass123";
public $var1;
public $var2;
public $SuccessRedirect = "Welcome back!";
public $FailRedirect = "You have entered the incorrect information. Please return and try again.";
public function makeTable() {
echo '<form action="loggedin.php" method="post">
Name: <input type="text" name="username"><br>
E-mail: <input type="text" name="password"><br>
<input type="submit">
</form>';
}
public function __construct() {
$this->var1 = isset($_POST['username']) ? $_POST['username'] : null;
$this->var2 = isset($_POST['password']) ? $_POST['password'] : null;
}
public function action() {
if ($this->userName && $this->password && $this->var1 == $this->userName && $this->var2 == $this->password) {
echo $this->SuccessRedirect;
} else {
echo $this->FailRedirect;
}
}
}
$cl = new LoginBox();
$cl->makeTable();
$cl->action();
您应该比较您的版本和我的版本,以了解我所做的所有更改。
您的主要问题是您使用的是$this->$varname
而不是$this->varname
。
变量应该在你的班级上声明。
答案 1 :(得分:1)
只想指出一些事情。
您在PHP中使用无效的“不相等”,它应该是!=
而不是<>
。
应该是$this->var
而不是$this->$var
。
由于您正在学习创建和使用面向对象的类,因此您必须听说过“封装”的概念。如果您将类中的所有内容声明为public,则任何人都可以从类外部访问它。它应该声明为私人。当然不是$ usernme和$ password。试着echo (new LoginBox)->password
看看自己。
对于类来说,处理表示(即直接回显数据)通常不是一个好习惯,它应该在action()
方法上返回数据。然后,调用的程序可以处理状态显示,如echo class->action();
或$status=class->action()
。
希望这将为您的学习提供一些良好的基础概念。