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