プロが教える店舗&オフィスのセキュリティ対策術

あるホームページを開いて、リンクをクリックした際に、そのリンク先をクッキーに保存して次にそのページを訪れた場合は、そのページを表示しないでそのリンク先へリダイレクトにはどうしたらいいでしょうか?

A 回答 (7件)

クッキーは焼けそうですね。


そういう場合は、ちょっとした事が原因なんですよ。
その3つのファイルを見れば、簡単に分かるのですが、
そうも行かないですし・・・
拡張子はすべてphpですよね?
hrefの指定もphpファイルにアクセスしていますか?
有効期限は付いていますか?
そういえば、phpのエラー表示されるようになっていますか?
すべてのファイルを検証しているわけではないので、
内部でエラーしてる可能性があります。
    • good
    • 0
この回答へのお礼

昨日はいろいろとアドバイスありがとうございました。もう一度ソースを読み直してみたら、elseifと書くべきところをif elseと書いてました。直したらちゃんとリダイレクトされました。ありがとうございます。

お礼日時:2009/08/27 10:01

クッキーを焼けないようですね。


ブラウザの設定でしょうか?何を使っていますか?
原因を明確にする為に最小構成のPHPファイルを試してください。

cookie.php
<?php
$value = 'クッキー';
setcookie("TestCookie", $value, time()+3600);

if (isset($_COOKIE['TestCookie'])) {
echo $_COOKIE['TestCookie'];
} else {
echo 'クッキーまだ?';
}
?>
上記ファイルは、一度目はクッキーがセットされていないので、
"クッキーまだ?"
二回目以降は、セットされているので、
"クッキー"
になります。
ブラウザのクッキーの削除の仕方は分かりますよね?

この回答への補足

ありがとうございます。上記の方法を試してみたところ、一度目は"クッキーまだ?"と表示され、二回目以降はちゃんと"クッキー"が表示されました。

補足日時:2009/08/26 18:29
    • good
    • 0

先程のtop.phpを改変します。


<?php
//クッキーが書き込まれている場合はheaderで各々ページへ。
if (isset($_COOKIE['LangCookie'])) {
$LangCookie = $_COOKIE['LangCookie'];
if($LangCookie == "ja") {
echo "jaが入っている";
//header("Location: ​http://www.***.**/ja.php");//​クッキーにja
} elseif("en") {
echo "enが入っている";
//header("Location: ​http://www.***.**/en.php");//​クッキーにen
} else {
echo "何かが入っている";
}
}else{
echo "何も入っていない";
}
?>
<html>
<body>
<ul>
<li><a href="​http://www.***.**/ja.php">​日本語ページ</a></li>
<li><a href="​http://www.***.**/en.php">​英語ページ</a></li>
</ul>
<body>
</html>
このままコピーして何が出力されるか確認してください。

この回答への補足

何回もありがとうございます。出力の結果ですが、どこにアクセスしても「何も入っていない」と出るだけです。

補足日時:2009/08/26 17:25
    • good
    • 0

PHPでも書き込むことが可能です。


下記の通りに試してください。
3つPHPファイルを作成してください。

top.php
<?php
//クッキーが書き込まれている場合はheaderで各々ページへ。
if (isset($_COOKIE['LangCookie'])) {
$LangCookie = $_COOKIE['LangCookie'];
if($LangCookie == "ja") {
header("Location: http://www.***.**/ja.php");//クッキーにja
} else {
header("Location: http://www.***.**/en.php");//クッキーにen
}
}
?>
<html>
<body>
<ul>
<li><a href="http://www.***.**/ja.php">日本語ページ</a></li>
<li><a href="http://www.***.**/en.php">英語ページ</a></li>
</ul>
<body>
</html>

ja.php
<?php
setcookie("LangCookie", "ja", time()+3600);//有効期限3600秒←追加しました。
echo "jaページ";
?>

en.php
<?php
setcookie("LangCookie", "en", time()+3600);//有効期限3600秒
echo "enページ";
?>

この回答への補足

たびたび済みません。上記の方法を試してみましたが、各ページに飛んだ後、トップページにアクセスしても各ページにリダイレクトされませんでした。どこがいけないのでしょうか?

補足日時:2009/08/26 15:42
    • good
    • 0

大事なのはPHPコードです。


クッキーをセットする事はできましたか?
//jaページに
setcookie("LangCookie", "ja");
//enページに
setcookie("LangCookie", "en");
<PHP?
//二度目以降の訪問
if (isset($_COOKIE['LangCookie'])) {
$LangCookie = $_COOKIE['LangCookie'];
header("Location: http://***で$LangCookieを結合
exit;
}
?>
<html>

この回答への補足

たびたびすみません。どうやらJavaScriptのonclickでクッキーに書き込むことが必要みたいです。どういうコーディングをすればよいでしょうか?

補足日時:2009/08/26 12:27
    • good
    • 0

htmlを読み込む前ですから、一番上でいいのではないですか?


ソースがないので、いまいち問題を把握できませんが
if (isset($_COOKIE['TestCookie'])) {
header("Location: http://***");
exit;
}

この回答への補足

これがソースです。
<html>
<body>
<ul>
<li><a href="http://www.***.**/ja.html">日本語ページ</a></li>
<li><a href="http://www.***.**/en.html">英語ページ</a></li>
</ul>
<body>
</html>

リダイレクト先が1つならいいのですが、2回目以降に2つのサイトのどちらかにリダイレクトさせる方法がよくわかりません。何かいい方法はないですか?

補足日時:2009/08/26 09:25
    • good
    • 0

クッキーセット


$value = 'something from somewhere';
setcookie("TestCookie", $value);

if (isset($_COOKIE['TestCookie'])) {
クッキーがセットされている場合の記述
}

参考URL:http://www.php.net/manual/ja/function.setcookie. …

この回答への補足

試してみましたがなかなか上手くいきません。
例としてトップページから日本語ページか英語ページにアクセスするんですけど、2回目以降はトップページを表示しないで、前回クリックしたページにリダイレクトしたいんですけど、
そのソースコードと、htmlのどこら辺に埋め込めばいいのか教えてもらえますでしょうか?

補足日時:2009/08/25 18:55
    • good
    • 0
この回答へのお礼

ありがとうございます。それでは早速試してみます。

お礼日時:2009/08/25 18:07

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