0

ユーザー名、パスワード、送信ボタンから3つの投稿値を送信するログインフォームがあります。しかし、私のフォームプロセッサには 3 つのページあります。成功すると、すべてがそれぞれ相互にリダイレクトされます。ここでの問題は、 validate.php (アクション ページ) ではなくread.php (リダイレクトされたページ)のフォームからユーザーが投稿した値にアクセスしようとすると、未定義のインデックスのエラーが発生することです。

4

2 に答える 2

1

これらすべてのリダイレクトを行っている理由は本当にわかりませんが、データをより永続的にしたい場合は、セッション変数を使用できます。$_POSTスーパーグローバルは現在のリクエストに対してのみ設定されているためです。

firstfile.php

<?php
session_start();

$_SESSION['posted_data'] = $_POST;

その他のファイル

<?php
session_start();
var_dump($_SESSION['posted_data']);

ただし、すでに述べたように、すべてのリクエストを実行することを本当に再検討する必要がある場合があります。

アップデート

データを失うという事実に加えて、フォームを単純に送信するために複数の (不要な) 要求も行っています。すべての作業が完了したときに発生する唯一のリダイレクトは、成功ページへのリダイレクトです。詳細については、http: //en.wikipedia.org/wiki/Post/Redirect/Getを参照してください。

コードをクリーンに保ちたい場合は、常に他のファイルを含めるか、OOP アプローチを使用できます。

于 2012-09-01T01:55:44.860 に答える
-1

すべての作業を行う 1 つのページのみを実行する必要があります。それほど複雑なスクリプトではないように見えるので、すべてを 1 ページにまとめることをお勧めします。コードを提供していないので、一般的な例を示します。読み直さずに入力しただけなので、純粋なPHP構文ではなく、精神だけです。

<?php
$login=$_POST['login'];
$pwd=$_POST['pwd'];

$dbcheck = mysql_fetch_array(mysql_query("SELECT COUNT(1) FROM table WHERE user =$login and pwd = $pwd"))
if($dbcheck[0] > 0) {
  //Login success
  //Setup your session variables, cookies, etc
  //Then you can do your redirect here
} else {
  //Page for wrong login
}
于 2012-09-01T01:56:16.090 に答える