\r\n\r\nのhogeの値をPHPの$hogeに格納するには?\r\n\r\nご教授いただければ幸いです。","answerCount":5,"upvoteCount":0,"datePublished":"2015-08-26T07:45:44.515Z","dateModified":"2015-08-26T07:45:44.515Z","acceptedAnswer":{"@type":"Answer","text":"同じHTML内でjavascriptの実行結果をPHPに渡して使うことはできません。\r\njavascriptはブラウザで、PHPはサーバで実行されますので戻してもHTML描画時に戻してもPHPでは使えません。\r\n\r\nそれともjsの結果をPHPに渡して次のアクセス時に使いたいというのであれば\r\najaxなどでサーバに渡してあげるか、cookieに書いておくとか逃げ道はあります。\r\n\r\nローカルPC(1台のPC)でXAMPPでサーバを構築していると錯覚しやすいですが\r\nLAMP環境がローカルにあってもブラウザからhttp通信してhtml(css&js)を取得していますので\r\njsから直接(http)を介さずにPHPに渡すことは不可能です。","dateModified":"2015-08-26T10:29:00.717Z","datePublished":"2015-08-26T10:29:00.717Z","upvoteCount":2,"url":"https://teratail.com/questions/15156#reply-23405"},"suggestedAnswer":[{"@type":"Answer","text":"まず「PHPからJavaScriptを実行する」という事はできません。\r\nなぜなら、PHPはサーバで実行され、JavaScriptはクライアント(ユーザのブラウザ)で実行されるので、お互いが同じデータをやりとりする、という事はできないのです。\r\nつまり、JavaScriptはネットに繋がってなくても動きますが、PHPはサーバにアクセスしない限り動きません。そんな異なる2つの間でデータをやり取りするには工夫が必要です。\r\n\r\n**【できない】**\r\n**・javascriptとPHPで同じ変数をシェアしたり、値を相互に入れたり出したりする**\r\n\r\n**【できる】**\r\n**・POST/GETなどを通じて、サーバとデータを送受信する**\r\n\r\n例えば…\r\nJavaScriptで値を作ってサーバに送信する、という事はもちろんできます。\r\nサーバとしては、受け取ったデータをPHPで処理する事もできます。\r\n\r\ninput hiddenなどにJavaScriptで値を入れておいて、フォームをPOSTすれば値はサーバに渡せます。\r\nまた、いわゆるAJAXの手法を取る事も可能です。","dateModified":"2015-08-26T13:35:21.919Z","datePublished":"2015-08-26T13:35:21.919Z","upvoteCount":1,"url":"https://teratail.com/questions/15156#reply-23424","comment":[]},{"@type":"Answer","text":"[文字列を Javascript のコードとして実行する](http://php.net/manual/ja/v8js.executestring.php)\r\n\r\n一応、やろうと思えば…\r\n自分は使ったことないのでこれ以上、聞かれても答えられません。","dateModified":"2015-08-26T11:38:01.183Z","datePublished":"2015-08-26T11:38:01.183Z","upvoteCount":0,"url":"https://teratail.com/questions/15156#reply-23412","comment":[{"@type":"Comment","text":"この関数、凄いですね。JavaScriptをコンパイルして実行してくれるんですね。\r\nNode.jsがかなり普及してきているので、サーバサイドでJavaScriptのライブラリーを実行できると便利なシーンて増えてくるかもしれませんね。\r\n参考になりました。ありがとうございます。","datePublished":"2015-08-27T10:36:07.208Z","dateModified":"2015-08-27T10:36:07.208Z"},{"@type":"Comment","text":"一般的にはPHPからJavaScriptは実行できませんというのが正解でしょうけど、この質問に真正面から答えるとしたら…笑\r\n回答に書いたように使ったことないし、利用場面も思いつかない…\r\n\r\nNode.jsでやればいいことなので、この関数の存在意義自体を見出せません…。","datePublished":"2015-08-27T10:44:58.771Z","dateModified":"2015-08-27T10:44:58.771Z"},{"@type":"Comment","text":"phpで、サービスを提供しちゃってて、Node.jsのサービスを立てるのも面倒だという場合じゃないですかね。クライアント(ブラウザー側)からサービスを呼び分けるのが基本的には正解でしょうが、WordPressとかPHPベースのアプリを使ってる場合は、便利な場合が多いかもです。\r\nちなみにどうやってこの関数を見つけましたか?","datePublished":"2015-08-27T11:29:13.769Z","dateModified":"2015-08-27T11:29:13.769Z"},{"@type":"Comment","text":"リファレンスを読むのは趣味ですから…笑\r\n結構な頻度でリファレンスは流し読みしてるんです。","datePublished":"2015-08-27T11:38:58.075Z","dateModified":"2015-08-27T11:38:58.075Z"}]},{"@type":"Answer","text":"ちょっと無理やりですが、自動でsubmitするフォームを作って、自分自身にPOSTしてやれば、$_POSTから取り出せるのでは?","dateModified":"2015-08-26T08:41:22.986Z","datePublished":"2015-08-26T08:41:22.986Z","upvoteCount":1,"url":"https://teratail.com/questions/15156#reply-23390","comment":[]},{"@type":"Answer","text":"できません\r\nphpとjsの実行タイミングは違います","dateModified":"2015-08-26T07:51:05.482Z","datePublished":"2015-08-26T07:51:05.482Z","upvoteCount":1,"url":"https://teratail.com/questions/15156#reply-23381","comment":[]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/PHP","name":"PHPに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/15156","name":"phpの中でjavascriptを実行して変数に格納"}}]}}}
PHPの中でjavascriptを実行して、その結果をPHPの変数に格納するにはどのようにすれば良いでしょうか?
例えば、
<script>
hoge = 1+2;
</script>
のhogeの値をPHPの$hogeに格納するには?
ご教授いただければ幸いです。
ベストアンサー
同じHTML内でjavascriptの実行結果をPHPに渡して使うことはできません。
javascriptはブラウザで、PHPはサーバで実行されますので戻してもHTML描画時に戻してもPHPでは使えません。
それともjsの結果をPHPに渡して次のアクセス時に使いたいというのであれば
ajaxなどでサーバに渡してあげるか、cookieに書いておくとか逃げ道はあります。
ローカルPC(1台のPC)でXAMPPでサーバを構築していると錯覚しやすいですが
LAMP環境がローカルにあってもブラウザからhttp通信してhtml(css&js)を取得していますので
jsから直接(http)を介さずにPHPに渡すことは不可能です。
まず「PHPからJavaScriptを実行する」という事はできません。
なぜなら、PHPはサーバで実行され、JavaScriptはクライアント(ユーザのブラウザ)で実行されるので、お互いが同じデータをやりとりする、という事はできないのです。
つまり、JavaScriptはネットに繋がってなくても動きますが、PHPはサーバにアクセスしない限り動きません。そんな異なる2つの間でデータをやり取りするには工夫が必要です。
【できない】
・javascriptとPHPで同じ変数をシェアしたり、値を相互に入れたり出したりする
【できる】
・POST/GETなどを通じて、サーバとデータを送受信する
例えば…
JavaScriptで値を作ってサーバに送信する、という事はもちろんできます。
サーバとしては、受け取ったデータをPHPで処理する事もできます。
input hiddenなどにJavaScriptで値を入れておいて、フォームをPOSTすれば値はサーバに渡せます。
また、いわゆるAJAXの手法を取る事も可能です。
ちょっと無理やりですが、自動でsubmitするフォームを作って、自分自身にPOSTしてやれば、$_POSTから取り出せるのでは?
できません
phpとjsの実行タイミングは違います
15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

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

テンプレート機能で
簡単に質問をまとめる
質問する
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/26 13:31