0

我正在关注 PhpAcademy 的关于制作登录系统的教程,我对这一切都很陌生。我没有像他那样制作一个小部件,而是为登录表单制作了一个完整的页面,称为signin.php,以及一个名为login.php 的验证页面。表单操作是 login.php,这是文件,我有一个数组 errors[] 存储在所有页面的全局 php 文件中。每次出现错误时,我都会向其附加一个新错误,这很好,但现在我希望我的错误出现在登录页面的表单下,我该怎么做?现在,错误只出现在 login.php 中。我尝试使用标头发送错误,但这似乎不起作用,我尝试通过简单地输出错误数组在那里打印错误(因为它是全局的),但这似乎也没有打印任何东西. 我能做些什么?

4

1 回答 1

0

全局并不意味着它对所有页面都是全局的。全局仅对当前页面是全局的。如果您希望数据在页面/重定向之间保持不变,您需要在 url 中传递数据(即signin.php?error=Invalid username and password。我不喜欢这种方法,因为您需要清理错误消息并且它会使 url 变得丑陋。)或者您必须存储它,以便您可以在下一页检索它。最简单的选择是使用 $_SESSION。这是一个例子:

登录.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');
    }

    // ...

注册.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']); 
    }
于 2013-06-22T06:04:08.203 回答