我正在关注PhpAcademy关于制作登录系统的教程,我对这一切都很陌生。我不像他那样制作一个小部件,我为登录的形式创建了一个完整的页面,名为signin.php,以及一个名为login.php的验证页面。 login动作是login.php,这是文件,我有一个数组错误[]存储在全局的php文件中。每次收到错误时我都会向它添加一个新错误,这一切都很好,但是现在我希望我的错误出现在登录页面的表单下,我该怎么做?现在,错误只出现在login.php中。我尝试使用标头发送错误,这似乎不起作用,我试图通过简单输出错误数组在那里打印错误(因为它是全局的),但这似乎没有打印任何东西。我该怎么办?
答案 0 :(得分:0)
全球并不意味着它对所有网页都是全球性的。全局仅对当前页面是全局的。如果您希望数据在页面/重定向之间保持不变,则需要在URL中传递数据(即signin.php?error=Invalid username and password
。我不喜欢这种方法,因为您需要清理错误消息并使其成为网址丑陋。)或者您必须存储它,以便您可以在下一页上检索它。最简单的选择是使用$ _SESSION。这是一个例子:
<强>的login.php 强>
<?php
session_start();
// ...
// You'll have to change my custom functions like form_has_errors to whatever
// you're using in your code
if (form_has_errors()) {
// Store the error in the session
$_SESSION['errors'] = form_get_errors();
// redirect
header('Location signup.php');
}
// ...
<强> signup.php 强>
<?php
session_start();
// ...
if (isset($_SESSION['errors'])) {
// change this to something that displays the errors better
print_r($_SESSION['errors']);
// remove the error from the session so we don't display it twice
unset($_SESSION['errors']);
}