マンガでよめる痔のこと・薬のこと

Promptの入力値をphpの変数として取込む方法がわかりません。
以下の様にPromptの入力値をphpの変数として取込み、所定の処理を行いたいと考えています。しかしPromptの入力値"pw"をphpに取込む事が出来ません。ご教授ください。
※File名=test_prompt.php
<HTML>
<HEAD>
</HEAD>
<BODY>
<FORM action="test_prompt.php" method="POST">
<INPUT type="image" value="pasword" onclick="pw=prompt('パスワードを入力して下さい');" src="img/del.gif">
</FORM>
<br><br>
<?php
$pw=$_POST['pw'];
echo "PW=".$pw;
?>
</BODY>
</HTML>

このQ&Aに関連する最新のQ&A

A 回答 (3件)

PHPというよりJavaScriptだと思いますが、


こんな感じで↓
<HTML>
<HEAD></HEAD>
<BODY>
<FORM action="test_prompt.php" method="POST" name="f1">
<input type=hidden name="pw">
<INPUT type="image" value="pasword" onclick="f1.pw.value=prompt('パスワードを入力して下さい');" src="img/del.gif">
</FORM>
<br><br>
<?php
$pw=$_POST['pw'];
echo "PW=".$pw."<br>";
print_r($_POST);
?>
</BODY>
</HTML>
    • good
    • 0

プロンプトを出しているのは、JavaScriptです。

これは、ページがブラウザに読み込まれた後で、ブラウザの中で実行されます。

一方、PHPのスクリプトは、サーバで実行され、実行済みの結果がブラウザに送信され表示されます。つまり、ページがブラウザに表示されたときには、既にPHPのスクリプトは実行された後なのです。ですから、既に実行が終わっているものに値は設定できません。

やるとしたら、JavaScriptでプロンプトを出したら、その値を<input type="hidden">などに設定してからサーバに再びフォームを送信し、サーバ側で受け取った値を使って処理をし、また表示させる、というような形になります。あるいは、単純にPHPを使わずJavaScriptだけで表示させるという方法もあります。
    • good
    • 0
この回答へのお礼

アドバイス有難うございます。
<input type="hidden">などに設定してからサーバに再びフォームを送信する件ですが、具体的にどこを修正すればいいのかお教えいただけませんか。
どうしても入力ダイアログで入力されたpasswordを認証してphpでmySQLを操作したいとの思いです。
宜しくお願いします。

お礼日時:2007/12/15 14:15

promptはjavascriptなので、


PHPで処理をするのではなくjavascriptで表示すればいいのでは?
例えば、下のように。
<SCRIPT TYPE="text/javascript">
<!--
window.alert(pw);
-->

PHPで処理をしたいなら、onclickを使わないですれば良いだけです
    • good
    • 0
この回答へのお礼

そうなんです。
onclickを使用せず、<form>・・・・・</hurm>にINPUT文で処理する方法がコーディング的には簡単なのですが、入力ダイアログにパスワードを入力してもらい、認証後Mysqlを操作したいものでムリな相談をさせていただきました。
何とかなりませんでしょうか?

お礼日時:2007/12/15 14:20

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qラジオボタンの値を取得

こんばんわPHPでラジオボタンの値を取得してその値をオープンしたテキストに値を書き込みたいのですが、どうもうまくいきません。

$ff = $name["radiobutton"]
$fp = fopen("../php/test1.txt","a");
fwrite($fp, $ff , "\n");
fclose($fp);

直接入れれば、書き込むのでファイル操作はうまく機能していると思うのですが、エラーの箇所をいろいろ変えてみても動かないので、質問させていただきました。

Aベストアンサー

kyojin.php

<?php
if($_POST){
$name = $_POST["radiobtton"]."\n";
$fp = fopen("test.txt","w");
fputs($fp,$name);
fclose($fp);
}
?>
<form name="form" action="kyojin.php" method="POST">
<input name="radiobutton" type="radio" value="もちろん">もちろん<br>
<input name="radiobutton" type="radio" value="多分・・・。">多分・・・。<br>
<input type="submit" value="送信">
</form>

上記をkyojin.php で保存し試していただけますか?
結果書き込み先は、kyojin.phpと同じフォルダ(ディレクトリ)にあるtest.txtになります。

サーバー環境が分からないのでなんとも言えないのですが、
少なくともApache1.3以上 PHP4.2以上 では動作確認できています。

kyojin.php

<?php
if($_POST){
$name = $_POST["radiobtton"]."\n";
$fp = fopen("test.txt","w");
fputs($fp,$name);
fclose($fp);
}
?>
<form name="form" action="kyojin.php" method="POST">
<input name="radiobutton" type="radio" value="もちろん">もちろん<br>
<input name="radiobutton" type="radio" value="多分・・・。">多分・・・。<br>
<input type="submit" value="送信">
</form>

上記をkyojin.php で保存し試していただけますか?
結果書き込み先は、kyojin.phpと同じフォ...続きを読む

QPHPでメッセージボックス表示

お世話になります。
PHPでVBみたいな
メッセージボックス表示は
できるのでしょうか?
レンタルサーバのPHPMYADMIN
では、クエリ実行の確認時にでるのですが・・
できればボタンクリック時に別画面に遷移して
処理したくないので。
宜しくお願い致します。

Aベストアンサー

PHPはサーバサイドです。
サーバ上で動作しています。

メッセージボックスは、クライアント側の処理になります。

>レンタルサーバのPHPMYADMINでは、クエリ実行の確認時にでるのですが・・

単純にjavascriptで表示させているだけだとおもいます。
alertとかで。

Qjavascriptで編集可能不可能の切り替え

いつもお世話になっております。
javascriptを用いて、テキストボックスを状況によって編集可能、不可能を
変更するものを作っております。
現在、テキストボックス単品ではその動作が可能となっていますが、
複数のものに対してその動作を行うには、どうすればよいかわからず困っています。

現在のソースは以下のようになっています。必要な部分だけ抜き出しています。

<script type="text/javascript">
function display()
{
var tmp = prompt("password?","");//表示させるかどうか判別する
if (tmp == 1)
{
document.getElementById("textboxのID").readOnly = false;
}
else if (tmp == 2)
{
document.getElementById("textboxのID").readOnly = true;
}
}
</script>

<body onload="display();">
・・・・
</body>

テキストが一つや二つ程度ならこれでも十分ですが、今回は
テキストボックスが多数(100程度)あるので、このまま地道にやるのはどうかと思いました。

IDを数字にして、
for (var i = 0; i < 100; i++)
{
document.getElementById(i).readOnly = true;
}
とやってみましたが、これもdocument.getElementById("0") = true;単品では
成功しましたが、iが定義されていないというようなエラーメッセージが表示されて、
うまくいきませんでした。

以上の件を、ご教授お願いします。

いつもお世話になっております。
javascriptを用いて、テキストボックスを状況によって編集可能、不可能を
変更するものを作っております。
現在、テキストボックス単品ではその動作が可能となっていますが、
複数のものに対してその動作を行うには、どうすればよいかわからず困っています。

現在のソースは以下のようになっています。必要な部分だけ抜き出しています。

<script type="text/javascript">
function display()
{
var tmp = prompt("password?","");//表示させるかどうか判別する
if ...続きを読む

Aベストアンサー

こんにちは

単品、複数、a~bまで 
どれか分からなかったので一応単品、複数両方載せときます
(一応『複数に対して』とあるので複数だとは思いますが、スクリプトサンプルを見ると数字にあわせたtextboxをreadonly=false;にするのかなと思ったりもして・・・)
あとidを数字からはじめるのはNGになります

【単品】
<script type="text/javascript">
function display()
{
var tmp = prompt("password?",""); //表示させるかどうか判別する
if(tmp > 0 && tmp < 101) {
target = "b" + tmp+"";
document.getElementById(target).readOnly = false;
}
else { return false; }
}
</script>

<body onload="display1();">

<input type="text" id="b1" readonly>
<input type="text" id="b2" readonly>
以下 id="b100" まで

【複数】
<script type="text/javascript">
//class名を指定する為の準備//
document.getElementsByClassName = function (className) {
var i, j, eltClass;
var objAll = document.getElementsByTagName ? document.getElementsByTagName("*") : document.all;
var objCN = new Array();
for (i = 0; i < objAll.length; i++) {
eltClass = objAll[i].className.split(/\s+/);
for (j = 0; j < eltClass.length; j++) {
if (eltClass[j] == className) {
objCN.push(objAll[i]);
break;
}
}
}
return objCN;
}

function display()
{
var tmp = prompt("password?",""); //表示させるかどうか判別する
if(tmp > 0 && tmp < 101) {
target = "b" + tmp+"";
obj = document.getElementsByClassName(target);
for(i=0;i<obj.length;i++) {
obj[i].readOnly = false;
}
}
else { return false; }
}
</script>

<body onload="display();">

<input type="text" class="b1" readonly>
<input type="text" class="b2" readonly>
<input type="text" class="b1" readonly>
<input type="text" class="b1" readonly>
<input type="text" class="b2" readonly>

※デフォルトのreadonlyが逆であるなら
<input>のreadonlyを消して
obj = document.getElementsByTagName("input");
for(i=0;i<obj.length;i++) {
obj[i].readOnly = true;
}

if(tmp > 0 && tmp < 101) {
の下に入れてください

※if(tmp > 0 && tmp < 101)の数値【101】は
単品の場合はid="b100"まで作る予定(?)なので101にしてます(idの数を指定)
複数の場合はclassの数を指定してください(class="b5"まで分けるなら『6』を指定)

こんにちは

単品、複数、a~bまで 
どれか分からなかったので一応単品、複数両方載せときます
(一応『複数に対して』とあるので複数だとは思いますが、スクリプトサンプルを見ると数字にあわせたtextboxをreadonly=false;にするのかなと思ったりもして・・・)
あとidを数字からはじめるのはNGになります

【単品】
<script type="text/javascript">
function display()
{
var tmp = prompt("password?",""); //表示させるかどうか判別する
if(tmp > 0 && tmp < 101) {
target = "b" + tmp+""...続きを読む

Qphp ラジオボタンのデータの渡し方

phpで自動販売機プログラムを作成しています。
ラジオボタンを使い120円または150円の飲み物を選択できるようにし、購入を押すとおつりを計算するものです。

これがhtml側のプログラムです。
<FORM ACTION="result.php" METHOD="POST">
<INPUT TYPE="RADIO" NAME="Juice" VALUE="nedan1" CHECKED>120円のジュースを購入します。お金を<INPUT TYPE="TEXT" NAME="money1" SIZE="5">円入れます。<BR>
<INPUT TYPE="RADIO" NAME="Juice" VALUE="nedan2">150円のジュースを購入します。お金を<INPUT TYPE="TEXT" NAME="money2" SIZE="5">円入れます。<BR>

<INPUT TYPE="SUBMIT" VALUE="購入">

これをphp側のプログラムで処理するさいラジオボタンでデータを渡したいのですがやり方がわかりません。
この場合120円の飲み物のおつり計算をしたいのです。
if($_POST['Juice'] = '$nedan1'){(想像)
$sonyu = $_POST['money1'];
こちらでは150円のほうの計算を。
elseif($_POST['Juice'] = '$nedan2'){
$sonyu = $_POST['money2'];
このif文とテキストの渡し方の部分がこれでは動かないのでどなたかご教授ください。

環境はPHPDEV423を使っています。(Apache、Mysql)

phpで自動販売機プログラムを作成しています。
ラジオボタンを使い120円または150円の飲み物を選択できるようにし、購入を押すとおつりを計算するものです。

これがhtml側のプログラムです。
<FORM ACTION="result.php" METHOD="POST">
<INPUT TYPE="RADIO" NAME="Juice" VALUE="nedan1" CHECKED>120円のジュースを購入します。お金を<INPUT TYPE="TEXT" NAME="money1" SIZE="5">円入れます。<BR>
<INPUT TYPE="RADIO" NAME="Juice" VALUE="nedan2">150円のジュースを購入します。お金を<INPUT TYPE="TEXT"...続きを読む

Aベストアンサー

if($_POST['Juice'] = '$nedan1'){(想像)

ラジオボタンは、1つのみ選択ですから $_POST['Juice'] の中に
nedan1かnedan2 という値のどちらかが入ってきます
ですから
比較するのであれば
if($_POST['Juice'] === 'nedan1'){
こうなります

あともうひとつ
実際の自動販売機には、お金を入れるところは1つしかありません。
しかしあなたの質問文に書いているソースを現実に当てはめると、商品毎にコイン投入口があることになります
money1 と money2です
コイン投入口が商品毎に存在する自販機を作るのであれば良いのですが・・・


いちおー私なりに、あなたが理解できるのではないかな?というソースを貼り付けておきますが、
かなりいい加減で、無作法なソースなのでこのままコピーしたりしても意味ないですよ
あくまでもヒントとしてのソースです
この例の場合、同一値段の商品が増えたときに対応できません(わざとです)


---------html
<form action="result.php" method="post">
<input type="radio"name="juice" value="120" />120円のジュースを購入します。 <br />
<input type="radio"name="juice" value="150" />150円のジュースを購入します。 <br />
お金を<inputtype="text" name="money1" size="5" />円入れます。<br />
<input type="submit" value="購入" />
</form>

---------result.php
//陳列している商品の値段と商品名
$price["juice1"]=120;
$price["juice2"]=150;

//POSTされた値を取得します
$juice = $_POST["juice"];
$money1 = $_POST["money1"];

//$money1 がお金かどうかを調べる
if( false === is_int($money1) ){
exit("お金を入れてください");
}

//選択されたジュースがいくらなのかを比較
if ( $price["juice1"] == $juice){
$change = $money1 - $price["juice1"] ;
}elseif( $price["juice2"] == $juice){
$change = $money1 - $price["juice2"];
}

if ( 0 > $change ){
print "お金が足りません";
}else{
print "おつりは".$change."円です";
}

if($_POST['Juice'] = '$nedan1'){(想像)

ラジオボタンは、1つのみ選択ですから $_POST['Juice'] の中に
nedan1かnedan2 という値のどちらかが入ってきます
ですから
比較するのであれば
if($_POST['Juice'] === 'nedan1'){
こうなります

あともうひとつ
実際の自動販売機には、お金を入れるところは1つしかありません。
しかしあなたの質問文に書いているソースを現実に当てはめると、商品毎にコイン投入口があることになります
money1 と money2です
コイン投入口が商品毎に存在する自販機を作...続きを読む

QPHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか?

PHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか?
for文やwhile文ではbreakやcontinueなどが使えるようですが、if文にはないのでしょうか?

条件分岐がいくつかあって、その一つを途中で抜けて次の条件分岐へと移行したいのですが、
exitを使ってしまうと、次へ行かずに処理が中止されてしまいますし、
どのようにすればよいのか分からず困っています。何かよい方法はないでしょうか?

Aベストアンサー

例えば「goto 演算子」を使うとかですね。
http://php.net/manual/ja/control-structures.goto.php
(参考URL)

「if文を強制終了」というより「ステップの強制移動」と言った感じです。

ただ、あまりgoto演算子はお勧めできません。
複雑な処理になればなるほど、バグが発生した際にバグ元を発見し難くなります。

本来は細かく制御文を入れていけば、あまり必要ないと思いますが・・・

Qテーブルの行の高さを指定する時全てのtdタグに?

スタイルシートでテーブルの行の高さを指定する時は、
全てのtdタグにスタイルシートを指定するべきか、
1つだけ(一番左だけ)指定すればいいのかわからないので押してください。


全てのtdタグに指定しても、一つのtdタグに指定しても、結局はその行の高さは指定した高さになります。

コードを書く上でどちらが適切か教えてください。
--------------------------------------------------


<style type="text/css">

td.test {height: 50px;}

</style>

<body>

1の例<br>(2列ともclass="test"を入れた)<br>

<table border=1>
<tr><td class="test">1</td><td class="test">2</td></tr>
<tr><td class="test">3</td><td class="test">4</td></tr>
</table>

<br><br>

2の例<br>(一番左の列だけclass="test"をいれた)<br>

<table border=1>
<tr><td class="test">1</td><td>2</td></tr>
<tr><td class="test">3</td><td>4</td></tr>
</table>

<br><br>

3の例<br>(スタイルシートは何も指定していない)<br>

<table border=1>
<tr><td>1</td><td>2</td></tr>
<tr><td>3</td><td>4</td></tr>
</table>

スタイルシートでテーブルの行の高さを指定する時は、
全てのtdタグにスタイルシートを指定するべきか、
1つだけ(一番左だけ)指定すればいいのかわからないので押してください。


全てのtdタグに指定しても、一つのtdタグに指定しても、結局はその行の高さは指定した高さになります。

コードを書く上でどちらが適切か教えてください。
--------------------------------------------------


<style type="text/css">

td.test {height: 50px;}

</style>

<body>

1の例<br>(2列ともclass="test"を入れた...続きを読む

Aベストアンサー

テーブルの行の高さ、なので <tr> タグに指定するのが素直でしょうか。

<style>
table tr { height:1em; } /* 全ての行に適用 */
table tr.test { height:3em; } /* 特定の行のみ適用 */
</style>

<table border>
<tbody>
<tr> <td> 1 <td> 2
<tr> <td> 3 <td> 4
<tr class=test> <td> 5 <td> 6
</table>

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います


人気Q&Aランキング

おすすめ情報