PHP:发布到self,页面变量直到硬刷新才响应


PHP: post to self, page variable not responding until a hard refresh

我正在使用action=""向自己提交一个FORM,但奇怪的是,我的变量在提交后正在更新。

<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之前的内容。。。让它显示最新数据的唯一方法是硬刷新页面。这真的很奇怪。

已编辑

您需要将登录过程作为脚本首先要做的事情之一。我曾经遇到过类似的问题,后来发现我在脚本中登录过程太晚了。我将举一个实际的伪例子,它不会按预期工作:

<?php
if (in_array("Maths",$Subjects) $MainSubject="Maths";
if ($_POST['name'] == "Admin" && $_POST['password'] == "MyCoolPassword!")
  {
  $Lang=en;
  $Subjects = array ("Maths","Physics","English");
  }
echo $MainSubject;
?>

这是一个简单的代码(并且会抛出一些错误),因此错误很容易被发现。但是,如果您使用多个include,在这里和那里调用函数,并执行许多类似的操作,该怎么办?然后同样的错误可能会大规模发生。只是一个想法,但如果没有OP的更多代码,我们就无法真正回答,只需给出一些"也许就是这样"。

另一个可能出错的地方是,cookie是在解析完php代码后设置的,而不是在代码中调用setcookie()的那一刻。一个更全面的答案可以在这里找到:php设置cookie问题

what's odd is that my variables are updating after the submission.我想你的意思是,在问题的其余部分提交后,你的变量没有立即更新,这很不清楚。请发布更多代码,这样我们可以更好地帮助您。