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

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

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

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

JavaScript

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

Q&A

解決済

3回答

14245閲覧

javascriptの変数をPHPに代入し、aタグに書き出す方法

ikemon

総合スコア39

PHP

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

JavaScript

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

0グッド

0クリップ

投稿2017/06/19 06:57

編集2017/06/19 07:50

###実現したい事(背景)
Googleアドワーズ広告に「リンク先URLの自動タグ設定」という機能があります。有効にするとユーザーが広告をクリックしてサイトにアクセスすると、"gclid"というパラメーターが下記のようにつきます。

http://hogehoge.com/?gclid=CJW86ueOqYwCFSZJYAodkTEnKg

この、?gclid=移行のパラメーター「CJW86ueOqYwCFSZJYAodkTEnKg」をクッキー情報に保持し、任意ページのaタグに出力したいと考えています。

###試したこと

パラメーターの値をクッキー情報に保持し、以下のようなコードでPHPに代入後、aタグに書き出す処理を実装したいのですが、<a>タグ内で書きだした場合、javascriptのスクリプトが出力されてしまいます。
※PHPに一度格納している理由ですが、この処理の他にもaタグにPHPで書き出し処理をしているので合わせる為です。

//クッキー情報に保持したパラメーターを、javascriptの変数に代入(gclidでクッキー情報を保持しています) <script type="text/javascript"> var test = readCookie('gclid'); </script> //javascriptの変数をPHPに代入 <?php $test = '<script> document.write(test); </script>'; ?> //aタグにPHP変数を出力 <a href="index.html/<?php echo $test; ?>">テストリンク</a> ■結果 <a href="index.html/<script>document.write(test);</script>">テストリンク</a> ※javascriptのスクリプトが出力されてしまう ■理想の結果(このような結果にするにはどのような処理をすればいいでしょうか?) <a href="index.html/testtext">テストリンク</a>

###試したこと
<a>タグ外でPHPを出力した場合、正常に文字列が表示されます

PHP

1<?php echo $test; ?> 2 3■結果 4testtext

var_dumpで出力した場合、スクリプトの文字列が表示されます

PHP

1<?php var_dump($test); ?> 2 3■結果 4string '<script> 5document.write(test); 6</script>' (length=42)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/06/19 07:03

ご提示のような埋め込み方をされる意図は何でしょうか? セキュリティ的にはあまりよろしくないように思うのですが・・・
m.ts10806

2017/06/19 07:06 編集

href="" のようにhtmlタグの中におさめてしまうと単なる文字列となりますので、基本的にscriptは無効となります。別のやり方をされた方が良いと思います。むしろ、PHPは必要ないのではないでしょうか。やはりどうしてjavascriptを利用して文字列を埋め込みたいのかといった経緯や意図が必要ですね。任意の文字列埋め込みたいだけならphpでechoすれば済む話ですし。
ikemon

2017/06/19 07:51

ご指摘ありがとうございます。経緯と意図を追記させていただきました。
guest

回答3

0

ベストアンサー

追記ありがとうございます。
やはりjavascriptを一度介す必要はないように思います。

Cookieはjavascriptでもphpでも同じキーで保存値を読み出せるはずなのでCookieをechoされてはどうでしょう?

PHP

1<a href="index.html/<?php echo $_COOKIE["gclid"]; ?>">テストリンク</a> 2

投稿2017/06/19 07:57

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikemon

2017/06/19 08:53

>Cookieはjavascriptでもphpでも同じキーで保存値を読み出せるはずなのでCookieをechoされてはどうでしょう? →PHPでも使えるのは知りませんでした! ご教示頂きました、<?php echo $_COOKIE["○"]; ?>で実装できました。 ありがとうございます!
m.ts10806

2017/06/19 10:01

以前別案件で近いことを依頼されて普通に使えたので、そのときのことが役に立ってよかったです。 その時はPHPで保存したクッキーをjavascriptで使いたいという逆の使い方でしたけどね。 ただ、そのまま出力するとNULLのときとかマズいので存在チェックはしておいてくださいね。
ikemon

2017/06/20 00:01

ご丁寧にありがとうございます!存在チェックをして実装してみます。
guest

0

他の方が指摘されている通り、上述の実装方法はあまり意味は無いように見えますが…
(PHPもしくはjavascriptのどちらかで実装を統一されるのが良いかと思います。。)

無理矢理にphp+javascriptで実装すると、下記の様には書けると思います。

php

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 5 <title>Test</title> 6 <script type="text/javascript"> 7 var test = 'testtext'; 8 </script> 9 <?php 10 //javascriptの変数をPHPに代入 11 $test = '<script type="text/javascript"> 12 function chg_href(obj) { 13 obj.href = obj.href + test; 14 } 15 </script>'; 16 echo $test; 17 ?> 18 </head> 19 <body> 20<a href="index.html/" onclick="chg_href(this)">テストリンク</a> 21</html>

投稿2017/06/19 07:36

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikemon

2017/06/19 08:51

ありがとうございます。PHPとjavascriptを混ぜるとややこしくなりそうですね…。どちらかに同一して実装してみます!
guest

0

これは同じページ内の処理でしょうか?それともページ遷移しているのでしょうか?

javascriptの変数をPHPに渡すためにはGET/POSTに与えるか
cookieを利用して遷移するか、
ajaxなどで遷移しないでphpから結果をうけとるかのどちらかでしょう

投稿2017/06/19 07:06

yambejp

総合スコア114585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikemon

2017/06/19 07:53

cookieで値を保持し、同じページ内処理での実装を考えております。
yambejp

2017/06/19 08:06

同じページ内の処理であればphpの出番はありませんので javascriptで任意の箇所を書き換えるだけだと思います
ikemon

2017/06/19 08:50

ありがとうございます。やはり無理にPHPを使うのはやめておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問