【发布时间】:2019-12-10 02:56:42
【问题描述】:
我有一个 wordpress 网站,其中有一个用户提供用户名的表单,提交后他/她被重定向到另一个页面。在此页面中,正在显示来自数据库的一些用户相关数据。我正在尝试创建一个搜索表单,它将仅显示与表单输入相关的数据,例如年份或其他内容。
这是原始表单的代码:
add_action('init', function () {
$username = ( isset($_POST['luname']) ? $_POST['luname'] : '' );
//$pass = ( isset($_POST['lupass']) ? $_POST['lupass'] : '' );
setcookie("usernameCookie", $username, time()+3600, COOKIEPATH, COOKIE_DOMAIN);
if( isset( $_POST['mysubmitbtn'] ) ) {
wp_redirect('http://mysite/somedata/');
exit;
}
});
这是用户被重定向到的页面中的代码:
<?php
$s=$_COOKIE["usernameCookie"] ;
if ( username_exists( $s ) ) {
global $wpdb;
echo "<b>user: ".$s."</b>";
echo
'<form method="post" name="myForm">
<input type="text" name="year" placeholder="Year"/>
<input type="submit" value="Search" name="srchbtn"/>
</form>';
$year = ( isset($_POST['year']) ? $_POST['year'] : '' );
if( isset( $_POST['srchbtn'] ) ) {
$year = $_POST['year'];
$results = $wpdb->get_results($wpdb->prepare("Select * From mytable Where user_login = %s and year = %d", $s, $year));
foreach ( $results as $result ) {
echo
'<div style="text-align: left;"><br>
<span style="font-family: Arial;">'.$result->description.'</span>
</div>';
}
}
else {
$results = $wpdb->get_results($wpdb->prepare("Select * From mytable Where user_login = %s", $s));
foreach ( $results as $result ) {
echo
'<div style="text-align: left;"><br>
<span style="font-family: Arial;">'.$result->description.'</span>
</div>';
}
}
}
else echo '
<h3 style="text-align: center; color: red;">Username '.$s.' does not exist.</h3>';
?>
问题是如果我刷新这个页面,数据会丢失并且显示“用户名不存在”,所以为了让用户查看数据,他必须返回原始页面并提交用户名再次。如果他在表单中提交年份也会发生这种情况,那么这是否意味着 cookie 正在被销毁?谁能提供一些关于为什么以及如何解决这个问题的想法?
提前致谢!
【问题讨论】: