変数が表示されない理由と解決方法

このQ&Aのポイント
  • HTMLフォームからgetでphpに変数を渡しても、変数部分が表示されない問題について質問しています。
  • XAMPP2.5.8を使用しているが、なぜか変数が表示されない現象が発生している。
  • 質問者はphp.iniのregister_globalを設定し、$_GET[]を利用しない方法も試したが、結果は同じだった。解決策を求めている。
回答を見る
  • ベストアンサー

変数が表示されない。

HTMLフォームからgetで、phpに変数を渡し、それを表示させるだけなのですが、なぜか変数部分だけが表示できません。どなたかご教授お願いいたします。 XAMPP2.5.8をXP上で使用しています。 <送信側HTMLフォーム> <html> <body> <form action=/cgi-bin/sample.php method="get"> 今は西暦<input type=text name=yyyy>年 <input type=submit value="送信"> </form> </body> </html> <受信側PHPファイル> <?php print "今年は西暦" . $_GET['yyyy'] . "年\n"; ?> $_GET[$yyyy]な風にもしてみましたがダメでした。 php.iniのregister_globalはonにし、$_GET[]を利用しない方法で print "今年は西暦" . $yyyy . "年\n"; と試してみても結果は同じでした。 あまりに基本的なこと過ぎて恥ずかしい話ですが、よろしくお願いします。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

まず、getで渡しているので、urlに検索文字が表示されるかどうか みてください。 そのご、受け側で print_r($_GET); をしてみてGETを認識しているか確認してみてください。 受けられていないようであれば、さらに受け側に phpinfo(); してPHP Coreのvariables_orderに「EGPCS」のようにGがきちんと 記載されているか確認してみてください

uchan1973
質問者

お礼

ご回答ありがとうございました。解決できました。 原因は、自分がXAMPPのphp.exeを呼び出していたことにありました。 php-cgi.exe呼び出しで動きました。 お忙しい時間を割いて、お力添えをいただき感謝いたします。 ありがとうございました。

uchan1973
質問者

補足

ご回答ありがとうございました。 まず、urlには検索文字が表示されています。 受け側ですが、教えたいただいたprint_r($_GET);をしてみたところ 「Array()」と表示されました。 また、phpinfo();については、variables_orderに「GPCS」と「E」が抜けて表示されています。

関連するQ&A

  • 入力フォームを変数に格納

    Perlを始めたばかりの初心者です。 inputで入力した情報を変数として取得する方法は可能でしょうか? #! c:/perl/bin/perl print "Content-type: text/html\n\n"; print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n"; print "<head><title>TEST</title></head>\n"; print "<body>\n"; print "<p><input type=\"text\" name=\"name\"></p>\n"; print "</body>\n"; print "</html>"; 上記の入力フォームで、777と入力した場合、サーバーを経由しないで、777を変数に格納したいのですが、可能でしょうか? 宜しくお願いします。

    • ベストアンサー
    • Perl
  • fputsと変数

    フォームを使って日々のサイト更新をしたいのですが、途中からどうしたらいいのかわかりません。 ほかの質問を読んでも、なさけないのですが解決しませんでした(涙) たとえば、 aaa.html(更新したいhtmlファイル 上書きしていく) form.html(更新に使うフォームがあるhtmlファイル) get.php(フォームで飛ばしたデータを受け取り処理するphpファイル) があるとします。 aaa.html内にあるテーブルに入っている値 NO.1 001 NO.2 002 NO.3 003 の数値 001 002 003 部分を更新したい時、 ↓ form.htmlのフォームから更新するデータを入力して、 <INPUT size="2" name="NO1"> データをget.phpに送信 ↓ get.phpで受け取り、変数に値を格納  &no1=$_POST['NO1']; そして、fopenでaaa.htmlを開くんだろうなーとまではわかるのですが、そしてどうしたらいいのか・・・。 aaa.htmlはhtmlファイルだから、変数をどう使えばいいのでしょう? お願いします。助けてください。

    • 締切済み
    • PHP
  • Formでの値の取得後、変数での表示ができない

    環境は; RedhatLinux7.1.2 Apache PHP PostgreSQL(今回は関係ないかな) 問題は、フォームにて値を渡した後$xxxxとして変数として表示できるはずなのにできないことです。 ちなみにPostの代わりにGetで行うとアドレス部分に確かに値が渡されたことが認められます。 同じファイルをPHPが使用できるレンタルサーバーで試したところ問題はありませんでした。 **** form.html ***** <form name="a" action="test.php" method="post"> <input type="text" name="a"> <input type="submit" value="submit" name="submit"> </form> **** test.php **** <? print $a; ?> 何が悪いのか全くわからないので、どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • Perlがサーバー上でうごきません

    htmlファイルには <html> <form action="form2.cgi" method="get"> 食品名1<input type="text"name="form1"> <br> 食品名2<input type="text"name="form2"> <input type="submit"value="送信"> </form> </html> cgiファイルには #! /usr/bin/perl require "cgi-lib.pl"; &ReadParse(); print "Content-type:text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>フォーム</title>\n"; print "</head>\n"; print "<body>\n"; print "おいしい$in{'form1'}\n; print "まずい$in{'form2'}\n; print "</body>\n"; print "</html>\n"; exit; cgi-lib.plはサーバーにいれております。 どうしてうごかないのでしょうか。

    • ベストアンサー
    • Perl
  • perlがうごきません

    htmlファイルには <html> <form action="form2.cgi" method="get"> 食品名1<input type="text"name="form1"> <br> 食品名2<input type="text"name="form2"> <input type="submit"value="送信"> </form> </html> cgiファイルには #! /usr/bin/perl require "cgi-lib.pl"; &ReadParse(); print "Content-type:text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>フォーム</title>\n"; print "</head>\n"; print "<body>\n"; print "おいしい$in{'form1'}\n"; print "まずい$in{'form2'}\n"; print "</body>\n"; print "</html>\n"; exit; cgi-lib.plはサーバーにいれております。 どうしてうごかないのでしょうか。 perlの場所も正確です。

    • ベストアンサー
    • Perl
  • perl 変数 代入

    恐れ入ります。 Perlで、フォームから送信して、変数に代入したいのですがうまくいきません。 print qq!<form action="./xxx.cgi" method="get">!; opendir(DIRHANDLE, "./xxx"); foreach(readdir(DIRHANDLE)){ next if /^\.{1,2}$/; print qq! <input type="checkbox" name="$_" value="$_"> <input type="submit" value="送信"></form> とし、ディレクトリ内のフォルダ名をnameに格納してxxx.cgiへ送信します。 xxx.cgi側では、 #!/usr/bin/perl use cgi; $form = CGI->new; として、送信されたデータを次々と代入したいのですが、どのようにしたらよいでしょうか。

    • ベストアンサー
    • Perl
  • perl で環境変数を表示できない

    perlの初心者です。下記のCGIを実行しましたが、全く表示しません。 最初の「環境変数」と言う文字も表示しません。 どこか初歩的なエラーがあると思いますが、わかりませんので質問させていただきます。 --- #!/usr/local/bin/perl print "Content-type: text/html", "\n\n"; print "<HTML><BODY>", "\n"; print "<H1>環境変数</H1><HR>", "\n"; foreach my $key( keys %ENV ){ print "$key: $ENV{$key}<BR>", "\n"; } print "<HR>", "\n"; print "</BODY></HTML>", "\n";

    • ベストアンサー
    • Perl
  • SSLでフォームから変数内容を取得できない

    SSL通信時にフォームから変数内容を取得できません。 非SSL通信時には問題なく取得できます。(同じソース) SSL通信時のフォームの値の受け渡しに何か制限があるのでしょうか。 またそのような設定等があるのでしょうか。 以下はソースです。 <html> <head><title>test</title></head> <body> <?php // 入力内容を表示する echo "<p>入力内容(\$HTTP_GET_VARS):".@$HTTP_GET_VARS["text1"]; // 入力内容を表示する echo "<p>入力内容(\$_GET):".@$_GET["text1"]; ?> <form method="GET" action="<?=$_SERVER["PHP_SELF"]?>"> <table> <tr> <td><input type="text" name="text1"></td> <td><input type="submit" value="送信" name="sub1"></td> </tr> </table> </form> </body> </html>

    • ベストアンサー
    • PHP
  • CGI1からCGI2への変数の受け渡しと表示

    他のご質問読んでもわからなくて笑 CGIの知識は、書いてあるとおりに設定を変えたりhtmlとか書き出すところの内容変えたり…いらないところに#を付けて、うごくかなぁってドキドキしている程度です(笑)わかりにく。 今回は、まず、キリ番のCGI-Aがあります。そのCGI-Aはキリ番GETしたら登録formが出てきます。登録があったらメールが管理人宛てにくるんです、その時、変数で、フォームで書いてもらった内容+その人の取ったカウント数・時間・エージェント・HOSTが、一緒に記載されてきます。 CGIではこんな感じ↓ print MAIL "時間 : $adate\n"; print MAIL "ホスト: $ahost\n"; print MAIL "使用PC: $kuag\n"; print MAIL "名前 : $aname\n"; print MAIL "カウント : $acount\n"; print MAIL "メール: $email\n"; ってちゃんと送られてきます。 で、この変数なんですが、同ディレクトリにあるメールフォームのCGI-Bに渡して(CGI-Aで登録したら必ずCGI-Bにくると)、CGI-Bが送るメールにも乗せたいのです。CGI-Bのなかのメールの雛型?の部分に ここです↓ #メール内容 $body.="取得時間 : $adate\n"; $body.="ホスト : $ahost\n"; $body.="使用PC : $auag\n"; $body.="メール : $email\n"; $body.="内容 : $nowdate\n"; 内容ってのはCGI-Bのメールフォームに書いてもらったことを表示します。でその上の4つなんですが、それがCGI-Aの変数で、これをCGI-Bのメールに一緒に送らせたいわけです。 そこで、CGI-Aの変数をCGI-Bに持ってくるにはどうするか、素人なりに考えて #キリ番からの情報取得 require "./CGI-A.cgi"; とか考えて書いてみて、やったんですが、見事に失敗しました。どうすれば変数だけをわたせますか?教えてください。 不適切な表現とかありましたら勘弁してください。 補足など、待ってます。

    • ベストアンサー
    • CGI
  • フォームを使った配列変数の受け渡し

    PHP初心者です、よろしくお願いします。 フォームからPHPで配列変数を受け渡すことを考えています。 一次元配列はうまく渡せましたので、これを二次元にしましたところ、 うまく渡せません。基本的なPHPの文法がわかってないので、つまづい ています。多分、配列変数の記述方法がおかしいのだと思うのですが・・。 ご教授よろしくお願いします。 <html> <body> <form method = "POST" action ="test2.php" > <?php //データ渡し側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10'>\n"); echo ("<br>\n"); } echo ("</tr>\n"); } ?> <input type="submit" name ="sbmit" value="data_input" > </form> </body> </html> <?php //データ受け側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j < 2;$j ++ ){ $tmp_data[$i][$j] = $_POST["data"][$i][$j]; echo ("$tmp_data[$i][$j] <br>\n"); } } ?> <html> <body> <form method = "POST" action ="test2.php" > <?php for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10' value='$tmp_data[$i][$j]'>\n"); echo ("<br>\n"); } } ?> </table> <input type="submit" name ="sbmit" value="in" > </form> </body> </html> 実行結果は、 Array[0] Array[1] Array[0] Array[1] と表示されて、実際の入力した値が反映されません。

    • ベストアンサー
    • PHP

専門家に質問してみよう