我正在一个网站上工作,人们可以根据他们的邮政编码进行搜索。当第一次访问该页面时,会打开一个弹出对话框。您必须填写您的邮政编码和 x 公里的半径。
提交时,cookie 设置为“邮政编码”和“半径”。
我在主页的搜索栏中打印出这些 cookie。但是当我想提交表单时,它没有得到 cookie 的值。它不是空的,但是当我手动重新输入它然后单击提交时它可以工作。可能是什么问题呢?
我正在使用 Pro6pp(一个在线邮政编码数据库),从中获取特定半径的邮政编码。我将它们保存在一个会话中。
我的对话:
<div id="dialog" class="hidden" title="Welkom bij OostWestRegioBest.nl">
<p>Zoeken in uw regio.</p>
<p>Voer een postcode in zonder letters. Voorbeeld: 1234.</p>
<br/>
<form method="post" action="">
<input type="text" name="postcode" size="25" placeholder="Postcode">
<select name="radius">
<option disabled selected>Afstand</option>
<option value="5">5</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
</select>
<br/><br/>
<hr>
<br/>
<p style="float: right"><input type="submit" value="Opslaan"></p>
<input type="hidden" name="submitted" value="true">
<input type="hidden" name="afstand" value="true" />
</form>
<?php
if(isset($_POST['postcode']))
{
setcookie('radius', $_POST['radius'], time() + (20 * 365 * 24 * 60 * 60));
setcookie('postcode', $_POST['postcode'], time() + (20 * 365 * 24 * 60 * 60));
header("location: {$_SERVER['PHP_SELF']}");
};
?>
我的搜索表单:
<form name="input" method="post" action="searchresults" class="pro6pp_range">
<input type="search" onchange="validate()" placeholder="Zoeken..." name="search" size="70">
<select class="range">
<? $radius = $this->input->cookie('radius'); ?>
<? $sesspc = $_SESSION['searched_post_code'] = $_COOKIE['postcode']; ?>
<? $postcode = $sesspc ?>
<option selected="selected" value="<?= $this->input->cookie('radius'); ?>"><?= $this->input->cookie('radius');?> km</option>
<option value="">Kies een afstand</option>
<option value="5">5 km</option>
<option value="10">10 km</option>
<option value="15">15 km</option>
<option value="20">20 km</option>
<option value="25">25 km</option>
<option value="50">50 km</option>
</select>
<input type="search" required="required" name="searchpc" class="postcode" value="<?= $postcode ?>" placeholder="Postcode (1234)" maxlength="4">
<input type="submit" value="Zoeken">
<br/>
<span class="message"></span>
<br/>
</form>
<?php
$searchpc = $this->input->post('searchpc');
if(empty($searchpc)){
unset($_SESSION['postcodes']);
}
?>
表单和 pro6pp 数据库之间交互的代码:
<!-- <script>
window.location.replace("home/searchresults");
</script>
-->
<?php
session_start();
echo '<pre>';
$new_post_code=$_GET['post_code'];
if($new_post_code!='' && $new_post_code!=0){
if(!isset($_SESSION['searched_post_code']) ||
empty($_SESSION['searched_post_code'])){
$_SESSION['searched_post_code']=$new_post_code;
$_SESSION['searched_post_code'] = $_COOKIE['postcode'];
}elseif($_SESSION['searched_post_code']!=$new_post_code){
$_SESSION['searched_post_code']=$new_post_code;
unset($_SESSION['postcodes']);
}
}
$string = implode($_SESSION['postcodes'], '|');
$output=$_GET['output'];
$_SESSION['postcodes'][]=$output;
echo $output;
print_r($_SESSION);
print_r($_COOKIE);
echo '</pre>';
?>
我不知道为什么它不起作用。