スレッド表示 | フラット表示〕 全トピック 920 件中 389 番目 次≫ ≪前

JAVSCRIPTの変数→PHP

created: 2005-08-13 01:27 | modified: 2005-08-14 10:55 | reply: 9

[2463] JAVSCRIPTの変数→PHP

user: とりお | created: 2005-08-13 01:27
質問させていただきます。
以前ここに、投稿していた方のサンプルを元にして
下記のコーディングをしたところ、「12」と表示されるかと
おもいきや、何も表示されませんでした。
どうもエラーが起こっているようです。

<php
   extract($_GET);
   print "<script language=\"javascript\">\n";
   print "<!--//\n";
   print "Xs=12;";
   print "$dx = Xs;\n";
   print "//--></script>";
   print $dx;
?>

何をやりたいかというと、PHP内でJAVSCRIPTのコーディング
をいれて、そのJAVSCRIPTの変数に、ある任意の数値を
入れた後に、それをどうにかしてPHPの側で使えないか
ということを試していました。例えば、ここでいうと
"12"と表示されるのが望む結果となります。
PHPはデータベースを操作するPGで、JAVSCRIPTは
クライアント側を操作するPGというのは
ある程度ですが、理解しているのですが・・・・。

JAVSCRIPT側の変数にいれられた固定の数値を、PHP側で
なんらかの処理をして引っ張ってくるということは
できないのでしょうか?
やはり、クッキー等にたよるしかないのですかね?
reply: 2464 返信 編集 削除

[2464] Re. JAVSCRIPTの変数→PHP

user: ゆうじ | created: 2005-08-13 09:44
PHP と JavaScript は働くコンピュータが異なります。
PHPはサーバー、JavaScript はクライアントですので
JavaScript から PHP に値を渡したい場合には、
必ず何らかの通信が必要です。

JavaScript の location オブジェクトで、
location.href='http://hoge/index.php?dx=12'
のようにすると $dx = 12 が index.php に渡ります。
Parent: 2463  reply: 2466 返信 編集 削除

[2466] URLに表示?

user: とりお | created: 2005-08-13 11:47
ゆうじさん、ありがとうございます。
自分がこの方法でちょっと心配なのが、
URLに渡したい数値が表示されてしまうのではないか
ということです。
例えば今回は特に漏れても問題のない数値なのですが、
もしパスワードとかを渡したい場合は、
やはりまずいのではないでしょうか?
Parent: 2464  reply: 2467 返信 編集 削除

[2467] Re.URLに表示?

user: とりお | created: 2005-08-13 12:46
連投もうしわけありません。

<php
   extract($_GET);
   print "<script language=\"javascript\">\n";
   print "<!--//\n";
   ptint "location.href='http://hoge/index.php?
dx=12'"
   print "//--></script>";
$dx = $_GET['dx'];(←これもいれてみたりしました)
   print $dx;
?>


とやってみたのですが、どうしてもうまくいかないようです。
ほかにもなにか間違っているところがあるのでしょうか?
Parent: 2466  reply: 2468 返信 編集 削除

[2468] Re.URLに表示?

user: ゆうじ | created: 2005-08-13 13:16
2467> どうしてもうまくいかないようです。

「うまくいかない」というのは
何も情報を含んでないので回答者泣かせです。
どういった現象が起こってるかをお知らせ頂くと
判断材料になって的を得た回答も得られますよ。

でも気付いたことを3つ。
1.PHPの開始タグが変(<?php)
2.index.php? の後の改行は要らない。
3.このJavaScriptが正しく動いたとしたら無限ループ。


話がもどりますが、
2466> URLに渡したい数値が表示されてしまうのではないか
2466> ということです。

おっしゃる通り location.hraf だと
URLパラメータとして表示されます。

もしパスワードだとしても
ユーザが入力した情報ならばユーザ自身が見るだけなので
問題にならないかなと思いますが。

もしアドレス欄に表示させたくないならば
Form から POST メソッドで送信すれば良いですし、
情報漏洩が心配なら、
さらにSSL通信も検討の必要があります。


とりおさんが JavaScript を介して何をやりたいのかを
私がわかってないのが解決を遅らせている気がします。
問題なければ教えていただいた方が近道かと思います。
Parent: 2467  reply: 2469 返信 編集 削除

[2469] Re.URLに表示?

user: とりお | created: 2005-08-13 15:46
ゆうじさん、お付き合いをさせてしまってすみません。

まず、指摘された3つの事項なんですが、
1.PHPの開始タグが変(<?php) →コーディング上は
入っていました。私の書き間違えです_| ̄|○

2.index.php? の後の改行は要らない。→これも、読みやすくするために、改行をついかしてしまいました。

3.このJavaScriptが正しく動いたとしたら無限ループ。→どこで無限ループしてしまうのでしょうか?

いま自分がやろうとしていることは、ウィンドウのスクロール
量をPHP側にもってきたいということです。PHPの関数で、
その様な値を取得するものってないですよね?
ですので、JAVASCRIPTで関数を使い、値を取得させ、
その値をPHP側にもってこようとしいるのです。
そこで、

<?php
print "<script language=\"javascript\">\n";
print "<!--//\n";
print "Xs=document.body.scrollLeft;";
print "Ys=document.body.scrollTop;";
print "location.href='http://localhost/pt_set.php?Ys=Ys";
$Ys = $_GET['Ys'];
print $Ys;
?>

とした次第です。
うまくいかない現象というのは、値が何もでてこない
ということです。おそらく、$Ysになにもはいっていない
ということなのでしょう。どこか文法や使い方が
間違っているのでしょうか?
Parent: 2468  reply: 2470 返信 編集 削除

[2470] Re.URLに表示?

user: ゆうじ | created: 2005-08-13 17:15
> →どこで無限ループしてしまうのでしょうか?

location.href で呼び出しているURL
http://localhost/pt_set.php は、
この提示されているスクリプト自身のことだと
思ったのですが違っていたらすみません。

これだと、JavaScriptがブラウザにロードされた時点で
http://localhost/pt_set.php へリクエストが発生するので
「読み込み」と「リクエスト」を繰り返し
無限ループが発生すると読みました。

実際にココのサーバーで試したところ、
サーバーエラー404 が発生し以降URLにすらアクセス出来なくなりました。


> いま自分がやろうとしていることは、ウィンドウのスクロール
> 量をPHP側にもってきたいということです。PHPの関数で、
> その様な値を取得するものってないですよね?
> ですので、JAVASCRIPTで関数を使い、値を取得させ、
> その値をPHP側にもってこようとしいるのです。

PHPではウィンドウのスクロール量を知ることは出来ませんね。
確かにJavascriptの範疇です。

どうも JavaScript の文字列の扱い方の話ですね。
location.href に与えるのはURLを示す文字列ですから
URL に続けて Xs と Ys を + で連結して
完全なURL文字列にしなくてはね。

本来ならこのJavaScriptを関数にして、
何らかのイベントから呼び出すおつもりでしょうが、
そこのところ意図はわかりませんので、
無限ループ対策だけ加えて
テストコードを書き換えてみました。

pt_set.php
<html>
<head>
<?php
if (!$_GET['Xs'] || !$_GET['Ys']) {
?>
<script language="javascript">
<!--
Xs=document.body.scrollLeft;
Ys=document.body.scrollTop;
location.href='http://localhost/pt_set.php?Xs=' + Xs + '&Ys=' + Ys;
//-->
</script>
<?php
}
?>
</head>
<body>
<div>Xs:<?php echo $_GET['Xs']; ?></div>
<div>Ys:<?php echo $_GET['Ys']; ?></div>
</body>
</html>
Parent: 2469  reply: 2472 返信 編集 削除

[2472] Re.Re.URLに表示?

user: とりお | created: 2005-08-13 23:34
 ゆうじさん、アリガトウございます。
なんとか、PHP側に渡すことができました。


ゆうじさんの提示してくださったサンプルでは、
IF文の条件文では、PHPを使い、その中身(実行部)では、
JAVASCRIPTを使っています。
このような使い方もできるのでしょうか?
私は今までずっと、例えばIF文を使用するときには、
その範囲が及ぶ箇所は全て同じ言語で統一させなければ
ならないとおもっておりました。

もしかしたら、今回の件での一番の収穫は、
最後に頂いた、サンプルだったかもしれません。
どうもありがとうございました。
Parent: 2470  reply: 2474 返信 編集 削除

[2474] サーバサイド&クライアントサイドの補足

user: ゆうじ | created: 2005-08-14 00:42
なんとか出来たようでほっとしました。

> IF文の条件文では、PHPを使い、その中身(実行部)では、
> JAVASCRIPTを使っています。
> このような使い方もできるのでしょうか?

この、「(実行部)ではJAVASCRIPTを使って・・」というのは誤解があるかもしれません。
PHPにとっては、HTML も JavaScript もただの「文字列データ」です。

[2470]のサンプルコードでいうと、
PHPの条件分岐の中で出力した文字列データが
たまたま JavaScript だったと言うだけで、
PHP内でJavaScriptを実行したのとは違います。

PHPは、サーバー側で、
データ(TEXT,HTML,JavaScript,PDF,image,XML等)を
加工・整形する為のツールです。

サーバー側でPHPが何らかの処理を施した結果が、
HTML や JavaScript としてブラウザに返される、
と考えると理解しやすいかと思います。
Parent: 2472  reply: 2477 返信 編集 削除

[2477] Re.サーバサイド&クライアントサイドの補足

user: とりお | created: 2005-08-14 10:55
うーん、奥が深いですね。
どうも私のPHPとJavaScriptに関する認識が
かなり浅いことを実感しました。

正しい認識ができるようになれば、恐らく
できることがかなり広がるようなきがします。

長いことお付き合いしていて頂きまして、
本当にありがとうございました。
Parent: 2474  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 389 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑