質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

解決済

(WordPress) JavaScriptで保存したCOOKIEをPHPで取得して、次回以降は非表示にできるクッションページを作りたい。

Bonkk
Bonkk

総合スコア10

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

3回答

0評価

1クリップ

682閲覧

投稿2022/01/10 13:06

編集2022/01/12 10:55

■ やろうとしていること
ここ数日、「次回以降は非表示にできる警告」を外部サイトに飛ぶ際に表示させられるようにコードを組んでいます(こちらは以前に投稿した質問です)。

試行錯誤の末、「cookieの値がなければクッションページを挟む」コードを組むことにしました。
厳密には、cookieが保存されているかどうかによって引数として渡した外部URLを書き換えて表示するテンプレート(ショートコード)を作りました。

機能は以下の通りです:
0. cookieを取得。PHP関数、isset($_COOKIE[cookieの名前])で情報を取得しています。
0. もしcookieが無効・保存されていなければ、渡した外部URLを"(クッションページのURL)/?(外部URL)"と書き換えて表示。リンクをクリックすると一旦クッションページに飛ぶ様になります。
0. もしcookieが保存されていれば、渡した外部URLをそのまま表示。クリックすると直で指定したサイトに飛ぶ様になります。

また、クッションページにはcookieを保存するためのボタンを設置しました。cookieを保存するJavaScriptのコードをボタンで実行する使用です。ボタンを押すと、自サイトを更新した際に直リンクだけが表示されるようにしようと試みています。

やろうとしていることの図解です(見にくくてごめんなさい・・・):
期待している結果
重視しているポイントは、**「ユーザーが任意でCOOKIEを保存できる」**というところです。

■ 困っていること
0. 「初アクセス時、外部URLをクリックしたらクッションページへ飛ぶ」
0. 「クッションページでボタンを押してcookieを保存(JavaScript)」
0. 「次回アクセス時、cookieを取得(PHP)して値があれば直で外部サイトへ飛ぶ」
という流れが動作することは確認済みです。

しかし、ショートコードにして引数を渡せる様に編集を加えたらたらうまく動かなくなってしまいました・・・。cookieを保存しても、外部URLをクリックするとクッションページに移動する様になってしまいました。

以下、テンプレートのショートコードです(開発環境のfunction.phpに貼り付けてあります):

PHP

<?php function rewrite_url($atts){ $ext_url = $atts[0]; //(外部URL) $cushion_url ="https://example-site/cushion/?$atts[0]"; if(isset($_COOKIE["external"])){ ?> <a href=<?php print $ext_url; ?> rel="nofollow noopener" target="_blank">外部サイト直リンク</a> <?php } //if終わり else{ ?> <a href="<?php print $cushion_url; ?>" rel="nofollow noopener" target="_blank">クッションページ経由</a> <?php } //else終わり } //function終わり add_shortcode('template','rewrite_url'); ?>

以下、クッションページ側のコードです。

HTML

<p> これより先は、外部サイトです。<br> 移動を希望しない場合は、下の「もどる」をクリックしてください。<br> </p> <button NAME="dont-show" VALUE="cookieに保存" ONCLICK="SetId('dontshow')">今後このページを表示しない</button> <script type="text/javascript"> function SetId(strNum) { var name = "external"; // クッキーの名前 var value = strNum; // クッキーの値 document.cookie = name + "=" + escape(value); window.alert('cookieを保存しました'); } </script> <a href="<?php echo $_SERVER['QUERY_STRING']; ?>">このまま移動する</a> <a href="javascript:history.back()">もどる</a>

どこか間違っているのでしょうか・・・?
まとまりのない質問ですみません。
なにかベターなやり方などをご存知でしたらぜひお教えください m(_ _)m

■ 補足
動作環境:Mac
Wordpressのテーマ: Luxeritas
サーバ: Mixhost
ブラウザ: Chrome(Incognito モード)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。