麻烦将错误从一个页面移动到另一个页面

时间:2013-06-22 04:49:45

标签: php login system transfer

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

1 个答案:

答案 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']); 
    }