1

私はまだ php の初心者で、論理演算子 && に少し問題がありました。両方ともテキスト ボックスであるトークンと秘密の回答スクリプトがあります。ユーザーがトークンを送信して応答すると、スクリプトはデータベースに入り、すべてのチェックがクリアされた場合 (エラー メッセージなど)、次のステップ (新しいパスワードの入力) に進みます。実際のスクリプトは私のライブ サイトでは正常に動作しますが、何らかの理由でローカルのコンピューターでは動作しません (100% 安全ではない場合に備えて、正直に言うと少し偏執的です)。多くのテストを行うと、スクリプトは次のコードを指します。

if(isset($uid) && isset($uidTwo)) {
           header('Location: reset.php');
           exit();
       }

$uid には users データベースの users_id が格納され、$uidTwo には answer データベースの tables_id が格納されます (プライマリ カラムの 1 つとして user_id も含まれます)。両方が一致する場合 (True)、スクリプトはリセット ページに進みます。

&& を || に変更して、多くのテストを行いました。動作しているようで、次のページまで処理しますが、その方法はトークン ボックスに対してのみ機能し、たとえば (ftgyhh) のように応答ボックスに何でも入力できるので、それは良くありません。

エラーメッセージがあるため、既に送信されたヘッダーなどを確認しましたが、スクリプトがローカルで機能していないようです。

それで、誰かが私が逃した可能性のあるアイデアを持っていますか?

編集: $uidTwo で var_dump を実行し、それが NULL であることがわかりました。それから、データベース側である可能性があることに気付いたので、以前のバージョンのデータベースをインポートして、それがそれであることがわかりました。スクリプトはローカルで動作するようになりましたが、前後の両方のデータベース sql ファイルを読み取ると、何が間違っていたのかわかりません。まあ、これらは私たちを試すためにあります。皆さんの助けに乾杯

4

2 に答える 2

3

ここには、答えるのに十分な情報がありません。参考までに、次のことができます。

if (isset($uid, $uidTwo)) {
    header('Location: reset.php');
    exit();
}

&& を使用する代わりに。

私は次のようなことをします

echo $uid ? "Uid is set" : "Uid is not set";
echo  $uidTwo ? "Uid2 is set" : "Uid2 is not set";

ヘッダーの前に戻り、本来あるべき姿でなくなるまで作業を開始します。

于 2013-04-28T17:26:30.403 に答える
0

isset()変数が存在するかどうかを確認します。empty()次のように、変数に値が含まれているかどうかを確認するために使用することをお勧めします。

if(empty($uid) && empty($uidTwo)) {
       header('Location: reset.php');
       exit();
}
于 2013-04-28T17:26:05.110 に答える