• 締切済み

テキストリンクを2回クリックしないと反応しない件

リンクテキストを2回クリックしなければ他のページに移動出来ずにこまっています。 PHPでユーザーのセッションを利用してファイルを分岐させる機能を付けたのですが、何故かリンクテキストを1回クリックしただけでは何も反応せず、2回クリックして初めて他のページにジャンプ出来るという症状が出ています。 どのPC・MACでも同じ症状だとプログラム側に問題があると思えるのですが、何故かユーザーのPCによって1回でジャンプしたり、2回クリックしないとジャンプ出来なかったりと様々です。 WINとMACのIE(6.0、7.0)・FIREFOX・SAFARI・NETSCAPE等で検証したのですが、1つのブラウザで1回クリックで入れるPCは他のブラウザでも1回クリックのみで正常に機能するようです。 逆に、1つのPCのブラウザで入れないと、他のどのブラウザでも入れないようです。 一端、他のページにジャンプしてTOPページに戻ると以降は正常に反応するのですが、クッキーを削除してしまうと、また反応しなくなります。 プログラムは知人に書いてもらったので詳しいことはあまり分からないのですが、分岐する前のページには、 <?php if($_COOKIE['page']){ header("Location: http://分岐させる先のページ.php"); exit(); }else{setcookie("page","",time()-3600);} ?> と記述してあり 分岐させる先のページには <?php $page = htmlspecialchars($_GET['p']); if($page){ setcookie("page",$page); } if($_COOKIE['page']){ switch($_COOKIE['page']){ case "h": require_once("ファイル01.php"); break; case "f": require_once("ファイル02.php"); break; } } else{ if(!$page) { header("Location: http://URL"); } else{ header("Location: http://URL/ファイル03.php"); } } ?> と記述してあります。 どなたか原因をご存じの方教えてください(><)

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

具体的にどんな動作を期待しているのかちょっと把握できませんので クッキーのとこだけでも参考になればと思います。 //getがあればgetを、cookieがあればcookieを元に分岐 $page = htmlspecialchars($_GET['p']); if ($page) {  setcookie("page",$page); } elseif ($_COOKIE['page']) {  $page = $_COOKIE['page']; } else {  ;// page情報なし } switch ($page) {  case 'h':  case 'f':  default: }

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

流し読みですが失礼します。 if($page){  setcookie("page",$page); } if($_COOKIE['page']){ setcookieしたあとは1度ページを読み込みなおさないと $_COOKIEにアクセスできなかった気が。 つまり再読み込みしないと分岐しません。 if($_COOKIE['page']){  ; }else{  setcookie("page","",time()-3600); } クッキーが空のときクッキーを開放、よく分かりません。 一度作り直してもらった方がよいのでは・・

nonchan000
質問者

補足

ご返答頂きありがとう御座います。 拝見させて頂いたところ、 1回目のクリックは、クッキー情報を保存する為だけに利用され、 2回目以降のクリックで初めて、1回目に取得したクッキー情報を 利用してアクセス可能となる。。。 つまり1回目のクリックでアクセス出来ないのは当たり前、 という理解の仕方で宜しいでしょうか。 私の知識不足で申し訳ないですが、 2回クリックせずに1回で他ページにアクセス出来る方法を もしご存じでしたらご教授頂けないでしょうか?? 宜しくお願いいたします。