0

を使用して FORM をそれ自体に送信してaction=""いますが、奇妙なのは、送信後に変数が更新されていることです。

<form action="" method="post">
<input type="text" name="username">
<input type="text" name="password">
<input type="submit">
</form>

これが送信され、ユーザーが正常にログインすると、ハード リフレッシュしない限り、ページの残りの部分は更新された変数に応答しないようです。

if ( isset($_POST['found_step_1']) ) {

global $wpdb;
// We shall SQL escape all inputs
$username = $wpdb->escape($_REQUEST['username']);
$password = $wpdb->escape($_REQUEST['password']);
$remember = $wpdb->escape($_REQUEST['rememberme']);

if ($remember) {
    $remember = "true";
} else {
    $remember = "false";
} 
$login_data = array();
$login_data['user_login'] = $username;
$login_data['user_password'] = $password;
$login_data['remember'] = $remember;
$user_verify = wp_signon( $login_data, true ); 

if ( is_wp_error($user_verify) ) {
    echo "Invalid username or password. Please try again!";
    $current_step = 1;
} else {
    //echo "<script type="text/javascript">window.location='". get_bloginfo('url') ."'</script>";
    $current_step = 2;
}

$wpdb->flush();

}

下のページがレンダリングされると... POSTの前にあったものをレンダリングしているようです...最新のデータが何で構成されているかを表示する唯一の方法は、ページをハードリフレッシュすることです。それは本当に奇妙です。

4

1 に答える 1

0

編集済み

スクリプトが最初に行うことの 1 つにログイン プロセスを作成する必要があります。私はかつて同様の問題を抱えていましたが、スクリプトでログイン プロセスを遅らせていたことに気付きました。意図したとおりに機能しない実用的な疑似例を示します。

<?php
if (in_array("Maths",$Subjects) $MainSubject="Maths";

if ($_POST['name'] == "Admin" && $_POST['password'] == "MyCoolPassword!")
  {
  $Lang=en;
  $Subjects = array ("Maths","Physics","English");
  }

echo $MainSubject;
?>

これは単純すぎるコードです (エラーが発生する可能性があります)。しかし、いくつかのインクルードを使用して、あちこちで関数を呼び出し、このような多くのことを行っている場合はどうなるでしょうか? その後、同じミスが大規模に発生する可能性があります。1 つの考えですが、OP からのコードがなければ、実際には答えられません。

他に問題になる可能性があるのは、コードで setcookie() が呼び出された瞬間ではなく、php コードの解析が終了した後に Cookie が設定されることです。より全体的な答えはここにあります:php set cookie issue

what's odd is that my variables are updating after the submission.残りの質問からの送信直後に変数が更新されていないことを意味していると思いますが、かなり不明です。より良い支援ができるように、より多くのコードを投稿してください。

于 2012-08-26T20:39:35.743 に答える