• 締切済み

PHPのクッキーによるリダイレクト

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

  • PHP
  • 回答数7
  • ありがとう数4

みんなの回答

  • level2012
  • ベストアンサー率63% (12/19)
回答No.7

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

masaki85
質問者

お礼

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

  • level2012
  • ベストアンサー率63% (12/19)
回答No.6

クッキーを焼けないようですね。 ブラウザの設定でしょうか?何を使っていますか? 原因を明確にする為に最小構成のPHPファイルを試してください。 cookie.php <?php $value = 'クッキー'; setcookie("TestCookie", $value, time()+3600); if (isset($_COOKIE['TestCookie'])) { echo $_COOKIE['TestCookie']; } else { echo 'クッキーまだ?'; } ?> 上記ファイルは、一度目はクッキーがセットされていないので、 "クッキーまだ?" 二回目以降は、セットされているので、 "クッキー" になります。 ブラウザのクッキーの削除の仕方は分かりますよね?

masaki85
質問者

補足

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

  • level2012
  • ベストアンサー率63% (12/19)
回答No.5

先程の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> このままコピーして何が出力されるか確認してください。

masaki85
質問者

補足

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

  • level2012
  • ベストアンサー率63% (12/19)
回答No.4

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ページ"; ?>

masaki85
質問者

補足

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

  • level2012
  • ベストアンサー率63% (12/19)
回答No.3

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

masaki85
質問者

補足

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

  • level2012
  • ベストアンサー率63% (12/19)
回答No.2

htmlを読み込む前ですから、一番上でいいのではないですか? ソースがないので、いまいち問題を把握できませんが if (isset($_COOKIE['TestCookie'])) { header("Location: http://***"); exit; }

masaki85
質問者

補足

これがソースです。 <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つのサイトのどちらかにリダイレクトさせる方法がよくわかりません。何かいい方法はないですか?

  • level2012
  • ベストアンサー率63% (12/19)
回答No.1

クッキーセット $value = 'something from somewhere'; setcookie("TestCookie", $value); if (isset($_COOKIE['TestCookie'])) { クッキーがセットされている場合の記述 }

参考URL:
http://www.php.net/manual/ja/function.setcookie.php
masaki85
質問者

お礼

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

masaki85
質問者

補足

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

関連するQ&A

  • JavaScriptのクッキーによるリダイレクト

    あるホームページを開いて、リンクをクリックした際に、そのリンク先をクッキーに保存して次にそのページを訪れた場合は、そのページを表示しないでそのリンク先へリダイレクトにはどうしたらいいでしょうか? これがソースです。 <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つのサイトのどちらかにリダイレクトさせる方法がよくわかりません。何かいい方法はないですか?

  • php クッキーについて教えてください

    はじめて利用させていただきます。php初心者です。 現在、検索サイトのようなものを作っています。 質問ですが、検索した語句にリンクを張ってページ内に表示したいと考えています。(個人専用の検索履歴のようなものを作りたいです) 検索結果にリンクを張ってクッキーに保存して、表示すればいいのかなと思い試してみましたがクッキーに保存される量が少なく困っています。 いざ表示してみると途中で途切れてしまいリンクタグの部分が表示されたりして困っています。 これらを解決するにはどのようにすればよいでしょうか? できれば検索履歴は50件くらい表示したいです。   また、他にもこのような事ができる方法があればご指導よろしくお願いします。 よろしくお願いします。

    • 締切済み
    • PHP
  • opera 自動的にリダイレクト先へ移動する設定?

    opera12.16です。 とあるwebページからリンク先に飛ぼうとすると、いちいち「リダイレクト」が表示され、 「リダイレクト先へ移動するにはリンクをクリックしてください。」が出ます。 ここで「ログイン」を押した時も同じです。 そこに「自動的にリダイレクト先へ移動するように設定することもできます。」 と言うこともかかれていますが、ヘルプからはこの設定の説明が見つけられません。 「自動的にリダイレクト先へ移動するように設定することもできます。」 の方法を教えてください。

  • クッキーに内容によってリンク先を変えたいです!

    教えてください! トップページでクッキーにnameを保存させて、 他のページに移った際に、そのnameがある場合とない場合で ボタンのリンク先を変えたいのですが、 そんなことできるのでしょうか? また、トップページでクッキーに数値を保存させるのは、 下記を記述しておくだけで、クッキーに保存されるのでしょうか? <SCRIPT type="text/javascript"> <!-- document.cookie = "name = 名前; expires = 期限;" //--> </SCRIPT> 是非教えてください!

  • php関数を使用しないリダイレクト

    リンク先を自由に変更できる関数(コード)を教えてください。 (PHP関数(コード)無しのリダイレクト) htmlタグ内にphp関数を入れないで、aタグでリンクさせたURLを変更しないで、 リンク先をランダムで表示させたり、リンク先のサイトを変えたりする方法を教えてください。 以前できていたのですが、関数のデータが消えたため、関数が分からなくなってしまいました。 例) html内の<a href="http://○○/">URLを変更しないで、リンク先をいつでも変更できるような方法です。 (クッションページを挟まないで直接サイトにいく方法です。)

  • インフォトップのクッキーについて

    インフォトップのクッキーについての質問です。 インフォトップからは返事がないので、 こちらで質問してみます。 Aさんのアフィリリンクをクリックしてセールスページを開き、 そのまま購入ページまで行きます。 すると、Aさんの特典が表示されていました。 この窓はこのままにしておきます。 次に、別の窓で、 Bさんのアフィリリンク経由で 同じ商材のセールスページを開きます。 この時点でBさんのリンクを踏んだことを示す クッキーがパソコンに保存されますよね。 この状態で、はじめに開いた窓、 つまりAさんの特典が表示されている購入ページで、 リロードせずに購入すると、 報酬を得ることが出来るのは、 Aさんでしょうか、それともBさんでしょうか? 購入者はAさんの特典をゲットできるのでしょうか? 購入者のパソコンに保存されているインフォトップのクッキーには、 あくまで、Bさんのリンク経由であることが記述されています。 よろしくお願いいたします。

  • 301リダイレクトはセッション引き継ぐか?

    301リダイレクトはセッション引き継ぐか? クッキー使用不可な端末からのアクセス時、 現在はURL末尾にセッションIDを付加しているのですが、同一ページを表示するのに 異なるURLとなってしまう為、SEO目的で301リダイレクトを用いてURLを統一しようと検討中です。 (http://hoge.com?SID=xxxx ⇒(301リダイレクト)⇒http://hoge.com) そこで質問なのですが、この場合リダイレクト後ページでは (1)URLからはセッションIDが消える? (2)リダイレクト後ページでセッションは有効? でしょうか? 有識者の方おられましたらご教授の程よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • .htaccessでリダイレクト

    サイトのディレクトリ構造やファイル名を変えたため、 外部からのリンクが切れてしまっています。 .htaccessを設置したディレクトリ以下で ファイルが見つからない場合、TOPページにリダイレクト、 という動作を実現するにはどう記述すれば良いのでしょうか。 TOPページを http://www.hoge.com/ とすると、 とりあえず思いつくのは ErrorDocument 404 / なのですが、404エラーをエラー表示以外の リダイレクトに使うのが正しいのか分かりません。 こういう目的のリダイレクトの書式もあるのでしょうか。 よろしくお願いします。

  • 違うサイトに移動した時にcookieを削除する方法

    スマートフォンページを作成しています。 スマートフォンからPCページにアクセスした場合、 強制的にリダイレクトでスマホページに移動させる ようにしています。 ただし、この方法ではユーザーはPCページを閲覧する事 ができません。 サイトに訪問した最初だけ強制的にリダイレクトさせる為に、 cookieを利用しようと思います。 クッキーが保存されている間はリダイレクトさせず、 PCページとスマホページのリンク先を表示させ、相互に 遷移が可能にする事を想定しています。 他サイトに遷移したところで保存していたクッキーを削除 したいのですが、javascriptでドメインが遷移した際に cookieを削除する事は可能でしょうか。 ちなみにサブドメインを含め、複数のドメインを対象と しています。 どなたかご教示お願いいたします。

  • ブックマークからのリダイレクトについて

    ブックマークからのリダイレクトについて ブックマークに登録されているURLにアクセスした時のリダイレクトについて質問があります。 ブックマークに登録されているURLからアクセスした時だけに特定のURLにリダイレクトさせる実装ができません。 どのように実装させるのか教えていただけますか? よろしくお願いいたします。 具体的には Aというリンク先があります。 そのAというリンク先がブックマークに登録されている場合のみ、Bというリンク先にリダイレクトをさせたいです。(301か302は今のところ未定) その場合は、実装可能ですか? 言語は、C#とASPです。

専門家に質問してみよう