0

ログインシステムの作成に関するPhpAcademyのチュートリアルに従っていますが、これはすべて初めてです。彼が行ったようにウィジェットを作成する代わりに、signin.php と呼ばれるログインのフォーム用のページ全体と、login.php と呼ばれる検証ページを作成しました。フォーム アクションは login.php、これはファイルです。すべてのページに対してグローバルな php ファイルに配列 errors[] が格納されています。エラーが発生するたびに新しいエラーを追加します。これで問題ありませんが、ログインページのフォームの下にエラーを表示したいのですが、どうすればよいですか? 現在、エラーは login.php にのみ表示されます。ヘッダーを使用してエラーを送信しようとしましたが、うまくいかなかったようです。エラー配列を単に出力するだけでエラーをそこに出力しようとしましたが(グローバルであるため)、何も出力されないようです。 . 私に何ができる?

4

1 に答える 1

0

グローバルとは、すべてのページに対してグローバルであることを意味するものではありません。グローバルは、現在のページに対してのみグローバルです。ページ/リダイレクト間でデータを保持したい場合は、データをURLに渡す必要があります(つまり、signin.php?error=Invalid username and passwordエラーメッセージをサニタイズする必要があり、URLが醜くなるため、この方法は好きではありません)。次のページで取得できるように保存します。最も簡単なオプションは、$_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']); 
    }
于 2013-06-22T06:04:08.203 に答える