dポイントプレゼントキャンペーン実施中!

リンクテキストを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");
}
}
?>

と記述してあります。
どなたか原因をご存じの方教えてください(><)

A 回答 (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:
}
    • good
    • 0

流し読みですが失礼します。


if($page){
 setcookie("page",$page);
}
if($_COOKIE['page']){

setcookieしたあとは1度ページを読み込みなおさないと
$_COOKIEにアクセスできなかった気が。
つまり再読み込みしないと分岐しません。

if($_COOKIE['page']){
 ;
}else{
 setcookie("page","",time()-3600);
}
クッキーが空のときクッキーを開放、よく分かりません。

一度作り直してもらった方がよいのでは・・

この回答への補足

ご返答頂きありがとう御座います。
拝見させて頂いたところ、
1回目のクリックは、クッキー情報を保存する為だけに利用され、
2回目以降のクリックで初めて、1回目に取得したクッキー情報を
利用してアクセス可能となる。。。
つまり1回目のクリックでアクセス出来ないのは当たり前、
という理解の仕方で宜しいでしょうか。

私の知識不足で申し訳ないですが、
2回クリックせずに1回で他ページにアクセス出来る方法を
もしご存じでしたらご教授頂けないでしょうか??
宜しくお願いいたします。

補足日時:2007/06/26 12:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!