我正在使用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之前呈现的那样...使它显示最新数据所包含的唯一方法是硬刷新页面。真的很奇怪。
答案 0 :(得分:0)
EDITED
您需要将登录过程作为脚本执行的第一件事。我曾经有类似的问题,然后发现我的脚本中的登录过程太晚了。我将提出一个实际的伪示例,它不会按预期工作:
<?php
if (in_array("Maths",$Subjects) $MainSubject="Maths";
if ($_POST['name'] == "Admin" && $_POST['password'] == "MyCoolPassword!")
{
$Lang=en;
$Subjects = array ("Maths","Physics","English");
}
echo $MainSubject;
?>
这是一个太简单的代码(并会抛出一些错误),所以很容易发现错误。但是如果你正在使用几个包含,在这里和那里调用函数并做很多这样的事情呢?然后同样的错误可能会大规模发生。只有一个想法,但没有更多来自OP的代码,我们无法真正回答,只是给出一些'也许就是这个'。
其他可能出错的事情是在完成解析php代码之后设置cookie,而不是在代码中调用setcookie()的那一刻。可以在此处找到更全面的答案:php set cookie issue
what's odd is that my variables are updating after the submission.
我猜你的意思是你的变量在提交之后没有立即更新,这是非常不清楚的。请发布更多代码,以便我们为您提供更好的帮助。