• 締切済み

PHP内でJavaScriptの処理は可能?

PHP内変数 $flag をJavaScriptで参照し、条件処理を行っています。 JavaScriptの処理は onClick() のタイミングで行います。 ソースの概要は以下のようになります。 1.ログインしているか見る(flagでチェック、1はログイン中…) 2.flagのデータ取得、条件処理。 3-1. flagが1以外なら、true処理 3-2. flagが1なら、false処理  ・  ・ と、こんな処理を行いたいのですが…上手く出来ません。 ソースは以下になります。PHP側の変数 "$flag" までの取得は上手く出来たのですが、 JavaScript側の処理で、つまづいてます…。 で、表題にもあるようにPHP内でJavaScriptの処理は可能でしょうか? アルゴリズム的に、アドバイスなどありましたらご教授ください。 以下が主要部分のソースになります。 <?php echo("<script Language='JavaScript'> "+ "<!-- "+ "function check(){ "+ "if($flag != '1'){ "+ "return true; "+ "} "+ "else{ "+ "header('Location: ./error.html'); "+ "exit(); "+ "return false; "+ "} "+ "} "+ "//--> "+ "</script> "); echo(" <a href='test.html'><img src='botton.gif' onClick='check()' "> アドバイスお願い致します。

  • PHP
  • 回答数3
  • ありがとう数1

みんなの回答

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.3

表題の「質問:PHP内でJavaScriptの処理は可能?」 という質問には可能 文中の「PHP内変数 $flag をJavaScriptで参照し、条件処理を行っています。」 この文に対しては不可能です PHPはアクセスされた瞬間にサーバ内だけで処理をして クライアント側になにかしらの結果を出力するだけですので、JavaScriptでPHP内の変数を参照することは出来ません JavaScript部分の $flag header('Location: ./error.html') 等の、PHP構文は無意味です つまり、 PHPの処理でjavaScriptを生成しhtml内に埋め込むことはできますが、 javaScript処理でPHPを動かすことはできません

u-mesh12
質問者

お礼

処理方法を変えてみます。アドバイスありがとうございましたm(_ _)m

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

>表題にもあるようにPHP内でJavaScriptの処理は可能でしょうか? はい、可能です。 PHPで記述したものはサーバー上で処理をされて、 表示されているのは基本的にHTMLになります。 なのでJavaScriptがHTMLの中に入っていてもブラウザ側で 処理することが出来ます。 ==========================引用start <?php   echo("<script Language='JavaScript'> "+   "<!-- "+   "function check(){ "+   "if($flag != '1'){ "+   "return true; "+   "} "+   "else{ "+   "header('Location: ./error.html'); "+   "exit(); "+   "return false; "+   "} "+   "} "+   "//--> "+   "</script> ");   echo(" <a href='test.html'><img src='botton.gif' onClick='check()' "> =========================引用end まず、上記のPHPソースではサーバがわで処理したあとのソースを見てみたのですが きちんと表示されないです。 PHPで文字列をくっつけて表示する場合は"+"ではなく"."になります。 次に、推測ですがPHPの処理とJavaScriptの処理がアルゴリズムを考える際に ごちゃごちゃになっちゃっているのかなと思います。 JavaScriptの中にPHPの関数であるheader()を入れても動作しません。 header関数に関してはヘッダー出力を行う前に文字列があってはいけません。 echoで出力するものは単純にブラウザに表示されるものと思ってください。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

if($flag != '1'){ は、 if($flag != 1){ でいいんじゃないですかね。 あと onClick='check()' "> は onClick='check()'></a>"); では? あと、 "header('Location: ./error.html'); "+ "exit(); "+ の部分は、javascriptなんですか?

関連するQ&A

  • javascript関数の戻り値でphpの条件分岐

    こんばんは。 またまたプログラミングで詰まってしまいました・・・。 <?php    echo "<script> funcJS(); </script>"; //javascriptの関数。戻り値true/false    if(funcJS()の戻り値がtrueかどうか){       <~phpの処理~>     } ?> のようなプログラムがあったとして、funcJS()の戻り値の値によって、『phpの処理』を行うかどうかを決定したいのですがそのアルゴリズムが思いつきません。 色々と試行錯誤はやってみて、 (1)phpの変数にfuncJS()の戻り値を格納して、if文で条件分岐  $value = "<script> funcJS(); </script>";   しかし、これは$valueに戻り値を入れることができませんでした。 (2)javascript変数に戻り値を格納して、javascript内のif文で条件分岐 <?php    echo "<script> var value=funcJS(); </script>"; //javascriptの関数。戻り値true/false    echo "<script> if(value == 'true'){ </script>";       <~phpの処理~>    echo "<script> } </script>"; ?>  これも"}"がないと怒られてしまいました。 自分で思いつく限りは試してみたのですが、他に方法が思い浮かばず頭を抱えている状態です。 何か良い方法を知っている方、思いついた方、よろしくお願いします。

  • phpでのHTMLの表示(特にJavascriptの部分)についてご教

    phpでのHTMLの表示(特にJavascriptの部分)についてご教授下さい。 phpで以下のhtmlを表示させ、Javascriptを実行させたい時にエラーが出るので <a href="" onclick="Hoge(’hoge’);return=false”>リンク</a> Firefoxでソースを見てみると以下の通りになります。 <a href="" onclick="Hoge(" hoge="" );return="" false;="">リンク</a> PHPで表示させたい場合(特にJavascriptの部分)はどのような書き方をすればよいのでしょうか?? ちなみに、IE8だとソースはきれいでしたが、Javascriptが実行できませんでした。 お急がしところ申し訳ございませんが、 ご教授いただけましたら幸いです。

    • ベストアンサー
    • PHP
  • JavaScript ログアウト処理

    JavaScriptでログアウト処理を作成中です。 <script Language="JavaScript"> <!-- function checklogout(){ //n_logout オブジェクトを参照 if(!document.n_logout.checked){ window.alert("本当にログアウトしますか?"); return true; } else{ return false; } } //--> </script> <a href="~.php"><img src="botton.gif" name="n_logout" onClick="return checklogout()"> 現状では、『本当にログアウトしますか?』に対して、 alert 上では 『OK』 ボタンしか表示されません。 これを Yes か No でユーザーに処理させるように改良したい。 アドバイスよろしくお願い致します。

  • php + javascriptで値の保持

    現在、ラジオボタンによるデータの受け渡しを調べているのですが submitボタンを使わずに、データ遷移がしたいと思い 色々やっているのですが上手く行きません。 これは実現可能なのでしょうか? <input type="radio" name="hoge" value="1" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check1; ?>> <input type="radio" name="hoge" value="2" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check2; ?>> <input type="radio" name="hoge" value="3" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check3; ?>> 上記のソースの様な感じでとりあえずやってみましたが、 「ボタンを押したら即移動」は可能なものの、value値の保持が javascript上でどうやったらいいか分かりません。 ※$check1~3は遷移後のchcked判定の変数です ※test関数においてのvalueを格納する処理が分かりません やはり無難にsubmitボタン+セッション関数等で構築した方が良いのでしょうか?

    • ベストアンサー
    • PHP
  • javascriptに詳しい方

    下のスクリプトで見るべきページが二つ以上ある場合どのように記述すればいいのでしょうか? javascriptに詳しい方よろしくお願いいたします。 <html> <head> <script language="JavaScript"> <!-- var isClicked = false; //--> </script> </head> <body> <A href="check.html" onClick="isClicked = true">見るべきページ</a><br> <A href="test.html" onClick="if (!isClicked){ alert('先に見るべきページをクリックしてください'); return false; }">A</a><br> </body> </html>

  • javascriptの変数をPHPの変数で受ける

    下記のようなjavascript において、グローバル変数clicked の値を PHPの変数$clickedで受けたいのですが、どうすれば受け取れるでしょうか? var_dump()してみると、undefinedや、NULLと表示されます。 要は、カレンダーの<td>要素をクリックしたときの日にちの番号を PHPの変数で受けたいのです。 echo '<tr id="calheader" bgcolor="#ffffcc">'; for($i=1; $i<=7; $i++){ echo '<td valign="top" align="center" class="smallText" id="'.$i.'" onclick="pusharea(this);">'.$i.'</td>'; <script language="javascript"> <!-- var clicked; // グローバル変数 function pusharea(obj){ clicked = obj.id; } // --> </script> </head> ----------------------------------------------- <script language="javascript"> alert(clicked); // <?php echo $clicked;?>=clicked; </script> <?php var_dump($clicked); echo '<tr>'; for($i=1; $i<=7; $i++){ /*if($i===$clicked)*/ echo '<td valign="top" height="50" align="center" class="smallText">'.$user.'</td>'; //else echo '<td valign="top" class="smallText">&nbsp;</td>'; } echo '</tr>';

  • javascript と php とでのデータの受け渡し

    既出の質問かもしれませんが、どの回答を読んでもいまいち理解できなかったので質問させて下さい。 phpからjavascriptへ、その処理結果をphpに送りたいと考えております。 まず phpの変数のデータをjavascriptでクライアント側で処理させるために、 print(<script type='text/javascript'>);~などなど、 printを使ってphpの変数を入れ込んだスクリプトを出力しています。 そして、出力したjavascriptの中にクライアント側の処理後のデータ をphpに送るために、 XmlHttpRequestのopenメソッドで("GET",url,true)とし、 urlには"***.php" + "?a=" + aの値 をいれて request.send(null);で送信するようにしています。 最後に、送信先のphpで $a = $_GET["a"];として受け取ろうとしています。 ちなみに、これらは全て同一ファイル上に書いてあり、 XmlHttpRequestのopenメソッドのurlには、 そのファイル自身を記述してあります。 ブラウザでアクセスしてソースを見てみると、 javascriptは記載されていますが、処理がされていないようで、よって 最後にGETでデータも取得がされていないようです。 そもそもこういったことは可能なのでしょうか? 自分の考え方は間違っているのでしょうか? javascriptもphpも初心者なもので、考え方があっているのかいないのかも 判断できない状況です。また、このjavascriptが何をきっかけに実行されるようにすればいいのかもよくわかりません。 それでは、宜しくお願い致します。

  • Ajax以外で、JavaScriptからPHPへ渡

    Ajax通信以外で、JavaScriptからPHPへ変数(配列)を渡したいのですが、 可能でしょうか? 下記のような状態の時、js変数dataを、Ajax通信を利用せずにPHP変数として取得したいのですが、どうすればよいでしょうか? JavaScript関数の中で、PHPフォームの送信ボタンをクリックさせる(ような)ことは出来ないのでしょうか? <button type="button" onclick="testsubmit();">送信</button> <script> function testsubmit(){  js処理;  var data = ★★; } </script> ■最終的にやりたいこと ・ボタンをクリックしたら、js処理で取得したjs変数(配列)を、Ajax通信を利用せずに、PHP変数として受け取りたい ・それを出来れば1クリックで処理したい

  • PHPからjavascriptへの変数の受け渡し

    javascriptからPHPを経由して他のサイトのページソースを文字列の変数として取得することを考えています。今回はそれに先立ちとりあえずページソースを取得表示するプログラムを作ってみました。 環境はローカルサーバー内の同じフォルダに以下の二つのファイルを作成しました。 ↓display_XML.html ---------------------------------------- <script language="JavaScript"> var request=new XMLHttpRequest(); request.open("GET","get_XML.php",false); request.send(null); </script> ---------------------------------------- ↓get_XML.php ---------------------------------------- <?php $context = (省略) $res = urldecode(file_get_contents('http://(省略)',false,$context)); echo $res; ?> ---------------------------------------- この状態でdisplay_XML.htmlにアクセスしても何も表示されませんでした。もしかしてゲットに対するレスポンスとして何か帰ってきているかと思いrequest.responseTextの中を見てみましたが、get_XML.phpがそのまま入っているだけでした。ちなみに直接get_XML.phpにアクセスした場合はちゃんとページソースを表示してくれます。 また、今回webアプリの作成は初めてなのでなるべくすでに用意されたライブラリの使用は避けたいと考えています。どうかよろしくお願いします。 また、冒頭でも書いたように、最終的にはjavascript内に文字列として取り込むことを考えています。 その場合はget_XML.phpの最後のコードを echo 'var a='.$res.';' のように記述することで実現できますでしょうか?もしくは他にふさわしい方法がありますでしょうか?合わせてご回答いただけると幸いです。

    • ベストアンサー
    • PHP
  • PHPの処理結果をjavascriptで利用する方法

    既に似たような質問も出ていそうで恐縮ですが(一通り目を通したですが、目的とするものは見つけられませんでした)、 PHPとjavascriptのやりとりについて教えていただければ幸いです。 データをフォームなどから受け取る→サーバー側(php)で処理→ 処理した結果の変数をjavascript用の変数として扱うといったこと がしたいのですが、うまくできません。 実際には以下のような形で書いて失敗してしまいました。。。 /*xxx.php*/ <html> <head> <?php $result = $_POST["sentence"]; ?> <script language="javascript"> result = "<?=$result?>"; </script> <script src="xxx.js" type="text/javascript"language="javascript"></script> </head> <body> <form id="sample"> <input type="text" name="sentence"> <input type="submit" value="送信"> </form> </body> </html> /*xxx.js*/ /*xxx.js*/ window.onload = function(){ document.getElementById("sample").onsubmit = function() { var req = createHttpRequest(); req.onreadystatechange = function(){ if(req.readyState==4 && req.status == 200){ alert(result); //PHPの結果を待った後を想定した何らかの処理      //ここでresultを使いたいが、サーバー側への送信前      //の値が入っているだけでonsubmitが反映されていない。 } } req.open("POST","./xxx.php",false); //<-formでくくられた<input type="text">等の部分は反映されない。 req.send(""); } } function createHttpRequest(){ if(window.XMLHttpRequest){ return new XMLHttpRequest(); } else if(window.ActiveObject){ try{ return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { return null; } } } } 私なりに調べたところ 1.PHPとjavascriptは別の所で動作しているので受け渡しは基本不可能 2.PHP側で動的に書き出すことで見せかけることはできる。 var test = <?=$test?>等 3.XmlHttpRequestでphpの処理を結果を待って、変数を利用しようと思ったが、 <form id="form"> <input type="text" name="sentence"> <input type="submit" value="送信"> </form> といった場合に$_POST["sentence"]に値を入れる方法が不明。 また、 multipart/form-dataによる送信など方法が複雑。 responseTextには<html>から</html>まで格納されてしまった。 処理項目ごとに表示用に別にPHPファイル作成だと困る。 4.<form action = "xxx.php" onsubmit=関数名>とすると、 onsubmitで指定した関数が先に呼び出されてから、 xxx.phpの実行が行われるので、サーバー処理を待たずに javascript側が実行されてしまう。 といったことだけは分かりました。 しかし、どのように変更すればうまくいく(もしくは見せかける) ようになるのかがさっぱり分からなかったため、 質問させていただきました。 よろしくお願い致します。

    • ベストアンサー
    • PHP