私は、人々が郵便番号に基づいて検索できる Web サイトに取り組んでいます。初めてページにアクセスすると、ポップアップ ダイアログが開きます。郵便番号と半径 x km を入力する必要があります。
送信時に Cookie は「郵便番号」と「半径」として設定されます。
メインページの検索バーにこれらの Cookie を出力します。しかし、フォームを送信しようとすると、Cookie の値が取得されません。空ではありませんが、手動で再入力して送信をクリックすると機能します。何が問題なのですか?
Pro6pp (オンラインの郵便番号データベース) を使用しており、そこから特定の半径の郵便番号を取得しています。それらをSESSIONに保存します。
私のダイアログ:
<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>';
?>
なぜ機能しないのかわかりません。