• 締切済み

phpでクッキーが削除できない(時がある)

プルダウンで選択された都道府県にすんでいるユーザーの検索処理をしたいのです。 検索をクリックすると、クッキーを発行して、再読み込み。 phpでクッキーの値をみて、クッキーに値があれば、 ユーザー検索。なければ無視、というものです。 if($ck_flg == "1") { のあとに、 setcookie("accEnter","",time()-1); でクッキー値を削除していますが、 クッキーが削除できないためうまく制御ができません。 ただ、<option>タグの行を少し減らすと、クッキーが削除されて、 うまく動くようになります。 HTMLのコードの行数なども影響あるのでしょうか? setcookieの使い方がまずいのでしょうか? ご教示ください。 ■mypage.php(都道府県で検索) <?php $ck_flg = _ss($_COOKIE["flg"]); ?> <html> <body> <form name="search" action="./mypage.php" method="GET" >   <select name="pref">    <option value="東京都">東京都</option>    <option value="千葉県">千葉県</option>    <option value="埼玉県">埼玉県</option>    <option value="神奈川県">神奈川県</option>   </select>   //検索リンクをクリックすると再読み込み。   <a href="javascript: document.cookie = 'flg=1'; document.search.submit();">検索</a> </form> <php //検索リンクがクリックされていたらクッキーを削除して、ユーザーを検索。 //それ以外は無視。 if($ck_flg == "1") {   # COOKIE削除(再読込防止)   setcookie("accEnter","",time()-1);   //プルダウンで選択されたユーザーを検索   $sql = "SELECT id, username";   $sql .= " FROM user WHERE (pref= '神奈川県');"; }

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

noname#244856
noname#244856
回答No.1

time() - 1 がシビアすぎるだけに思えます。実際ここに time() を使う必要性はありません。 (誰が使い始めたんでしょうね…みんな思考停止して真似をする…) 1 これで十分です。 蛇足ですが、XSS対策やSQLインジェクション対策は大丈夫ですか?またPHPのバージョンは古すぎませんか?バージョンアップ可能であればば安定版を出来るだけ使いましょう。 - 7.0 … 現在の開発版。11月中にリリース予定。 - 5.6 … 現在の最新安定版。 - 5.5 … 安定版だが今から導入するなら5.6以降の方が理想。 - 5.4 … 1年以内前にサポート切れ。 - 5.3 … 1年以上前にサポート切れ。 - 5.2 … これより古いものは話にならない。

hide_momiji
質問者

お礼

PHPは、 5.4です。 setcookie("accEnter",1); でやってみましたが、やはり現象は消えませんでした。 しばらく試行錯誤してみます。

関連するQ&A

  • クッキーの削除方法

    PHP5にて以下のようにクッキーを連想配列でセットしています。 setcookie("cookie[1]", "10", time()+600); setcookie("cookie[2]", "20", time()+600); setcookie("cookie[10]", "100", time()+600); この場合、一部のクッキー(例えばcookie[2]で設定したもの) だけを削除するにはどうすれば宜しいのでしょうか? 試しに以下の様に記述してみましたが、上手く削除されませんでした。 setcookie("cookie[2]"); また、全てのクッキー(全ての連想配列)を いっぺんに削除する方法もありましたら、お教えください。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • クッキー認証>クッキー削除ができない!!

    今回は、クッキー認証画面を作成している際、 エラーが出てしまって先に進めず投稿しました。 下記にプログラム記載 ----H_01.html---------------------------------- <html> <head> <title>クッキー認証</title> </head> <body> <center> <form method="POST" action="H_02.php"> 名前<input type="text" name="name"> パスワード<input type="Password" name="pass"> cookieを記録する<input type="checkbox" name="chk"> <input type="submit" value="送信"> <input type="reset" value="リセット"> </form> </center> </body> </html> ------------------------------------------------ -----H_02.php---------------------------------- <?php $name = $_COOKIE['name']; $pass = $_COOKIE['pass']; $cnt = $_COOKIE['chk']; if ($cnt == True) { $lim = time()+7*24*60*60; //有効期限1週間 setcookie('name',$name,$lim); setcookie('pass',$pass,$lim); } else { setcookie('name'); setcookie('pass'); } ?> ------------------------------------------------ else文内の、setcookie二行にエラーが出ます。 htmlでチェックボックスにチェックが施されていない場合、クッキーを削除。 調べてみたのですが、どうしたらよいのかわからず 投稿しました。よろしくお願いします。

    • ベストアンサー
    • PHP
  • クッキーの削除がうまくいきません

    <?php setcookie("a","おいしいクッキー"); $a=$_COOKIE["a"]; print "$a"; print "<br />"; setcookie("a","",time()-60); $b=$_COOKIE["a"]; print "$b"; ?> と書いて、クッキーの設定は出来たのですが、有効期限を過去にしても クッキーが削除されずにエラーメッセージが出ます。 エラーメッセージ Warning: Cannot modify header information - headers already sent by (output started at C:\Eclipse\workspace\PHP\cookie.php:7) in C:\Eclipse\workspace\PHP\cookie.php on line 11 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • クッキーの削除

    お世話になります。 PHPにて下記の命令文でクッキーの削除を試みているのですが、削除することができません。 setcookie('クッキー名', '', time() - 1800); 何故でしょうか? 宜しくお願いいたします

    • ベストアンサー
    • PHP
  • クッキー

    <?php setcookie(...); sleep(...); $cookiedata = $_COOKIE['...']; このようにして書き込んで間もないクッキーの値を$cookiedataに入れようとしましたがNULLが入っていました。 <?php $buf = ...; setcookie($buf); sleep(...); $cookiedata = $buf; とするのではなく、実際にクッキーから取得したいのですが、よい方法はありませんか?

    • 締切済み
    • PHP
  • PHPでのクッキー

    PHPでクッキーを使い、下記のような入力フォームを作りました。 form.phpで入力→form2.phpで正常出力出来るのですが、 直接form2.phpへ飛ぶと、クッキーの値がなくなってしまいます。 setcokkieが、何の値もないのを上書きしていることは理解できるのですが、これを上書きせず回避?する方法はありますでしょうか? よろしくお願いします。 【form.php】 <?PHP parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); ?> <html> <form method="post" action="form2.php"> <?PHP echo "名前1<input type=text name=name1 maxlength=16 size=12 value=$set_name1> <BR>ID<input type=text name=p1 maxlength=8 size=6 value=$set1><BR><BR>"; echo "名前2<input type=text name=name2 maxlength=16 size=12 value=$set_name2> <BR>ID<input type=text name=p2 maxlength=8 size=6 value=$set2>"; ?> <input type="submit" value="実行"> </form> </html> 【form2.php】 <?php $city1 = $_POST["p1"]; $city2 = $_POST["p2"]; $city_name1 = $_POST["name1"]; $city_name2 = $_POST["name2"]; setcookie ("city", "set1=$city1&set2=$city2",time()+3600*24*90); setcookie ("city_name", "set_name1=$city_name1&set_name2=$city_name2",time()+3600*24*90); parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); echo $set_name1; echo $set1; echo $set_name2; echo $set2; ?>

    • ベストアンサー
    • PHP
  • クッキーの名前について

    はじめまして、PHPでクッキーを利用したいのですが、 クッキーの名前で悩んでいます。 Windowsに保存されているクッキーを見てみると、 クッキーの名前が、 Cookie:******@?????? ****:Windowsにログインしているユーザー名 ????:ドメイン となっているものがあります。 概して大手サイトより発行されたクッキーがこのようになっているように思えます。 自分で作成したPHPでクッキーを発行してみると、 setcookie()で指定したpathの部分が名前となるようです。 また、pathを指定しないと発行元のphpが存在するディレクトリ名に なります。  クッキーの名前が”Cookie:******@??????”となるのは、何か意味があるのでしょうか? セキュリティーなどにからんでこうなるとしたら、同じようにしないといけないのかな?でも、Windowsのユーザー名ということは、他のOSでは不都合が生じるのかな?と悩んでしまい、質問させていただきました。 お分かりになる方いらっしゃいましたらご回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのクッキー情報を活用したい

    PHPのクッキー情報を活用したい 現在入門書で勉強中、例のとおりに打ち込んだつもりなのですが、プログラムがうまく動きません。アドバイスお願いします。使用OSはwindows7、ブラウザはfirefox3.6.11です。apatcheは2.2で、PHPは5.2.14です。 プログラムは以下のとおりです。 (1)cookie.php <html> <head> <title>クッキーでデータを記録する</title> </head> <body> <form method="POST" action="cookie_rec.php"> E-Mailアドレス: <input type="text" name="email" size="30" maxlength="50" value="<?php print($_COOKIE['email']); ?>" /> <input type="submit" value="送信" /> </form> </body> </html> (2)cookie_rec.php <html> <head> <title>クッキーでデータを記録する</title> </head> <body> <?php setcookie("email",$_POST['email'],time()+(60*60*24*90)); ?> クッキー"email"を保存しました。 </body> </html> これを動かして、一枚目はうまく出るのですが、2枚目には Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php10\day02-3\cookie_rec.php:6) in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php10\day02-3\cookie_rec.php on line 6 とエラーが出ます。cookie_rec.phpの6行目はしっかり確認しました。他のところも確認しましたが、なぜエラーなのかわかりません。どこが悪いのでしょうか?

    • ベストアンサー
    • PHP
  • PHPで違うサーバーのスクリプトでクッキーを読めますか?

    サーバーAで次のようにクッキーを設定しました。 test.php <? setcookie("TEST","値"); ?> サーバーBで次のようにクッキーを読み込み ました。 test2.php <? $kekka=$HTTP_COOKIE_VARS["TEST"]; print $kekka; ?> 構想は、「値」と表示させることなのですが、 何も表示されませんでした。 上記は、何が間違えているでしょうか? どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでクッキー設定がうまくいかない

    PHPでウェブアプリを開発中です。 クッキーを設定したいのですが、下記のコードでうまくいきません。 $mail = $_REQUEST['mail'] ; $result1 = setcookie('mailaddress',$mail,time() + 3600 * 24 * 30,'/') ; if ($result1){ echo "&cookie1=OK" ; }else{ echo "Content-type:text/plain; charset=UTF-8"; echo "&cookie1=NG" ; return ; } 上記を実行すると$result1にfalseが返ってきます。 もちろん、クッキーは設定されていません。 原因として何が考えられるでしょうか? やりたいのは、ログイン時にユーザーが入力したメールアドレスを クッキーに保存しておいて、次回ログイン時にはそれが自動的に メールアドレス入力フィールドに表示させることです。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう