• ベストアンサー

サーバーOS、バージョンの差異?フォームリクエストについて。

こんばんわ。 現在PHPを使って動的なページを作成しています。 そこで問題です! あるサイトには・・・GETやPOSTなどで飛ばしたデータを「$a」などという形で取得できると説明していますが、ある別のサイトでは、POSTであれば「$_POST["a"] 」でGETでは「$_GET["a"]」というように異なる説明をしています。 実際、私が開発用に用意したサーバーでは後者のやり方でしか取得できませんでした。 これは何が違うからなのでしょう? 私が持っている参考資料では前者であり、意味がわからずあせっています! 前者で出来るようにしたいのですが・・・。 宜しくお願いいたします。

  • PHP
  • 回答数4
  • ありがとう数0

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

  • ベストアンサー
  • kalze
  • ベストアンサー率47% (522/1092)
回答No.2

サーバーの仕様によります。 php.iniにおいて、global_registerがONになっていると、 $aなどで使えます。 OFFになっていると$_POSTなどを使うしかないです。 global_register=ONは、バージョンいくつからかわすれましたが、デフォルトではOFFになりました。 それまではデフォルトでONでした。 しかし、global_register=ONはセキュリティ的に問題が発生しやすいので、一般的に最近はONにしていることは少ないです。 詳しく知りたければ、global_registerについて調べてみることをおすすめします (技術者の方のようなので、いろいろと自分で調べたほうがよくわかるかとおもいましたので)

zenon55
質問者

補足

ご回答有難う御座います。 ・・・なるほどそういうことなのですね。 有難う御座いました。 現在、FedoraCore2でPHPなどは全てapt-getを用いてインストールしています。 この状態でおっしゃられています「php.ini」はどこのディレクトリに格納されているかお分かりになられますでしょうか? これまでずっとWin系でしたので検索方法なども手探りの状況で・・・。 あと少し、、、お付き合いくださいませ。 お手数をお掛けいたしますが宜しくお願い申し上げます。

その他の回答 (3)

  • kalze
  • ベストアンサー率47% (522/1092)
回答No.4

#3のおっしゃることがすべてですが、補足します >php.iniについて Fedoraはサーバー向きではないので、 使っていない為に、具体的にどこのディレクトリにあるのかは解りませんが、検索してみてください。 #3の方がおっしゃっている方法でもOKですし、コンソールで検索してもいいとおもいます。 全ディレクトリを検索してしまうので、マシンスペックによっては若干時間かかるかもしれませんが、 find / -name php.ini とコンソールから入力してください。 php.iniという名前のファイルが検索されます。 もしかしたら雛型用もひっかかるかもしれませんが、その辺はわかるかと。 global_registerについては、業務でやっているのでしたら、OFFでできるようになったほうがいいです。 時代はOFFがあたりまえになっており、ONにするサーバはかなり減っていますし、今後はOFFばかりでしょう。

zenon55
質問者

補足

改善できました! ご回答有難う御座いました!

noname#18290
noname#18290
回答No.3

>現在、FedoraCore2でPHPなどは全てapt-getを用いてインストールしています。 >この状態でおっしゃられています「php.ini」はどこのディレクトリに格納されているかお分かりになられますでしょうか? FedoraCore2は使っていませんが、phpfino();の出力に Configuration File (php.ini) Path があるので、それを見れば実動作環境におけるphp.iniが どこにあるかわかります。 >前者で出来るようにしたいのですが・・・。 (ergister_globals=on) その設定は、onでも細心の注意を払えば安全なスクリプトを記述出来ますが、お奨めしません。 スクリプトの保守性等も含めて考える場合、外部から取り込んだ変数を探す場合、$_POST['hoge', $_GET['hoge']と記述しておけば、後でソースを読む際に一目瞭然です。 参考とされている資料にある「$aで取得できる」を「$_POST['a']で取得できる」と読みかえたほうがよろしいかと。

zenon55
質問者

補足

改善できました! ご回答有難う御座いました!

  • chupark
  • ベストアンサー率41% (90/218)
回答No.1

 PHPのバージョンが分かりませんが、最近のバージョンのものであると仮定して回答します。    PHPにおいて、HTTPから送られてきた値を取得するにはご質問にも書かれている、$_GETや$_POSTを用いる必要があります。  それを$aなどの任意の変数へ取得したければ、    $a = $_POST["a"];  などのように$_POST["a"]を通じて$aへ渡します。   >あるサイトには・・・GETやPOSTなどで飛ばしたデータを「$a」などという形で取得できると説明していますが これはどちらのサイトなのかわかりませんが、上記のような方法で取得する方法が解説されているのではないでしょうか?

参考URL:
http://jp.php.net/manual/ja/reserved.variables.php
zenon55
質問者

補足

ご回答有難う御座います。 まず、このサイトをご覧ください。 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k07.htm ここでは、$_POST["a"];という方法ではなくフォーム情報を使っています・・・。 これはどういう処理なのでしょうか? 私の書籍にはご回答の内容にもありますような例が載っていました。 上記サイトだけではなく複数のサイトでこの方法が紹介されているのです・・・。 困ったものです・・・。お助けください。

関連するQ&A

  • 外部サーバーからのパラメータ取得について

    外部サーバーからimgタグにて出力したパラメーターを取得するにはどうすればよいでしょうか。 サーバーA php内で出力 <img src=http://bbb.net/get.php?id=1> サーバーB(http://bbb.net/get.php) get.php内で $_GET(id) で取得を試みたのですができませんでした。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 他のサーバーへGETし、POSTの値を得たいです。

    みなさま、こんにちは。 この質問をみて頂いた方ありがとうございます。 例えば、自分のサーバーから、別サーバーへ http://****.com/?a=1&b=2&c=3 などとGETで値を送信すると、その別サーバーからあるPOSTの値を 返してくれて、それを取得したいと考えています。 但しその別のサーバーは、自分のサーバーからしかGETの受付と POSTの送信をしないようにIPで制限しているとすると 自分のサーバーからURLを送信したようにしたいのです。 (前提として自分のサーバーのIPは伝えていて設定OKとして) ブラウザで見た人のIPではなく、自分のサーバーが送信したんだよ~ という風にして、うまいことPOSTされた値を取得したいです。 PHPでしたら、fopen などでいけると思ったのですが うまくPOSTされた値が取得できずに困っています。 自分でも調べてみたのですが、 pearのRequest.php、fsockopen でできそうと言うことを 知っただけでどうすれば良い物かと行き詰ってしまいました。 どなたか、そういった経験などある方いらっしゃいましたら ぜひぜひ、ご教示頂きたく、宜しくお願い致します。m(_ _;)m

    • ベストアンサー
    • PHP
  • サーバ上でGETはできるがPOSTができない

    Linuxサーバ上でGETはできるがPOSTができない、という現象が出ています。 ローカルのWindowsPCで試していて、その状態ではPOSTできています。 また、同一サーバ上でもいくつかPOSTはしており、そこでは問題なくPOSTできています。 POST先に画面遷移はしており、GETで渡す値は取れているのですが、POSTをvar_dumpしてやると array(0){} と、全く取得できていません。 ちなみにphp.ini のmax_input_vars、post_max_sizeなどはサイズを大きくしています(ここが関連してくるほどのサイズではないと思いますが) このような状態は初めてなので、わかる方が居たらぜひ教えてください。

    • 締切済み
    • PHP
  • $_SERVER["REQUEST_METHOD"]に変な値が返ってき

    $_SERVER["REQUEST_METHOD"]に変な値が返ってきて困っています。 お世話になります。 最近PHPの勉強をしていて全くの初心者ですが、少し理解できない動作をしているようで困っています。 タイトルのとおり、$_SERVER["REQUEST_METHOD"]に予期せぬ値が返ってきて困っています。 <?php  ~  echo $_SERVER["REQUEST_METHOD"];  ~ ?> <html>  <head>   <meta http-equiv="Content-type" content="text/html; charset=UTF-8">  </head>  <body>   ~   <form action="<?=$_SERVER["PHP_SELF"]?>" method="POST" enctype="multipart/form-data">    ~    echo "<input type=\"submit\" name=\"submit_upd\" value=\"変更する\">";    ~   </form>    </body> </html> 上記ソースコードのうち、下のほうでechoされている<input>タグのボタンをクリックしたときに、ソース冒頭でechoされる$_SERVER["REQUEST_METHOD"]に関してです。 予期している値とは、下記URLの通り、POST/GET等の値となります。 http://php.net/manual/ja/reserved.variables.server.php しかし、echoで実際に返ってくる値を確認してみると、下記みたいになります。 submit_upd%5B3%5D=%E5%A4%89%E6%9B%B4&contentres=&usr_no=1&log_no=3GET どうも原因が分かりません。 サーバーは@pagesのものを使用、文字コードは全てUTF-8で統一してあります。 (ソースコードに関してはBOMなしで記述しています) PHPのバージョンは5.2.6です。 補足ですが、phpinfo()がセキュリティ上の理由で拒否されるので、PHPのその他の情報はほとんど分からないと思います。 その他に必要な情報があれば回答させていただきます。 情報が少なく、文章も稚拙で恐縮ですがご教授願えればと思います。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • リクエストメソッド

    以下はPHPでBMIを計算するプログラムです。リクエストメソッドを取得する意味がよくわかりません。 $request_method = $_SERVER['REQUEST_METHOD']; の部分です。 <?php // 初期化 $height = ''; $weight = ''; $bmi = ''; $err_msg = array(); // エラーメッセージ用の配列 // リクエストメソッドを取得する $request_method = $_SERVER['REQUEST_METHOD']; // 「BMI計算」ボタンをクリックした(POSTされた)場合に処理する if ($request_method === 'POST') { // POSTデータを取得する $height = get_post_data('height'); $weight = get_post_data('weight'); // 身長の値が数値かどうかをチェックする if (is_numeric($height) === FALSE) { $err_msg[] = '身長は数値を入力してください'; } // 体重の値が数値かどうかをチェックする if (is_numeric($weight) === FALSE) { $err_msg[] = '体重は数値を入力してください'; } // エラーがない場合にBMIを算出する if (count($err_msg) === 0) { // BMIを算出する $bmi = calc_bmi($height, $weight); } } /** * BMIを計算する * @param mixed $height 身長(cm) * @param mixed $weight 体重(kg) * @return float 計算したBMIの値を返す */ function calc_bmi($height, $weight) { return round($weight/($height/100*$height/100),1); } /** * POSTデータを取得する * @param str $key 配列キー * @return str POSTの値 */ function get_post_data($key) { $str = ''; if (isset($_POST[$key]) === TRUE) { $str = $_POST[$key]; } return $str; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>BMI計算</title> </head> <body> <h1>BMI計算</h1> <form method="post"> 身長(cm) : <input type="text" name="height" value="<?php print $height ?>"> 体重(kg) : <input type="text" name="weight" value="<?php print $weight ?>"> <input type="submit" value="BMIを計算する"> </form> <?php if (count($err_msg) > 0) { ?> <?php foreach ($err_msg as $value) { ?> <p><?php print $value; ?></p> <?php } ?> <?php } ?> <?php if ($request_method === 'POST' && count($err_msg) === 0) { ?> <p>あなたのBMIは<?php print $bmi; ?>です</p> <?php } ?> </body> </html>

    • 締切済み
    • PHP
  • WordPressで孫ページ一覧を取得

    下記のコードで子ページ一覧を取得していたのですが、子ページ一覧ではなく孫ページ一覧を取得する必要が出てきました。 <?php $parentId = get_the_ID(); $args = 'posts_per_page=-1&post_type=page&orderby=menu_order&post_parent='.$parentId; query_posts($args); if (have_posts()) : while (have_posts()) : the_post(); ?> <div class="child-box"> <a href="<?php the_permalink(); ?>"><img src="<?php echo wp_get_attachment_url( get_post_thumbnail_id() ); ?>" width="190" alt=""></a> <p class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <p>価格:<span class="price"><?php $selling_price = get_field('selling_price'); echo $selling_price."円"; ?></span></p> </div> <?php endwhile;?> <?php wp_reset_query(); ?> <?php else:?> <?php endif;?> 上記のような形で孫ページ一覧を取得する方法をご存知のかた、是非ご教授ください。

    • ベストアンサー
    • PHP
  • PHPのタイトルの取得

    こちら(http://wsd.zombie.jp/gw/php_curl_file_get_contents/)のページとこちら(https://www.php.net/manual/ja/funct ion.file-get-contents.php)のページを参考に別ページからタイトルを取得したいと思っているのですが、できませんでした。(上記のサイト様では、ヤフーニュースの取得ができるらしいのですが、表示されませんでした。) webページのタイトルを取得したいです。 index.phpファイル <a href>="ここに下記タイトルを取得"</a> ーサーバー上の別ページー page1.php <title>練習</title> このようにしたいので教えてください。

    • ベストアンサー
    • PHP
  • PHPからPOSTで他のPHPを実行する方法

    サイトのアクセスログ収集をするPHPを初心者が悩みながら作ってます。Javascriptで拾いきれないアクセスを解析するためです。PHPからPOSTで他のPHPを実行する方法って、file_get_contents以外に何かありますでしょうか? やりたいこと、というか今考えているフローとしては、 (1)ページにアクセスしてきたユーザー情報をhoge.phpで取得(hoge.php) (2)取得した情報を書き込み用のfuga.phpにPOSTで渡す(hoge.php) (3)fuga.phpでPOSTを受け取り、POST情報を元に地域情報を取得(fuga.php) (4)POSTで受け取った情報と地域情報を合体させてログファイルに書き込み(fuga.php) ということでやってみようとしています。 PHP自体はなんとか動くところまできて、ログの書き込み自体はなんとかうまくできているようなんですが、実際にアクセスされるページが重くなってしまいました。 色々と調べてみたりこねくり回してみてわかったのは、どうも(3)の部分で時間がかかっているようです。大量のデータから地域情報を抽出するので、しかたないのかなとは思いつつも、実際アクセスされるページの表示はサクッと表示されたいと考えています。 なんとかできないものかと考えているのですが、どうやら(2)でPOST送信するために使っているfile_get_contentsが、fuga.phpからの情報を受け取るためにfuga.phpの処理が終わるのを待っているのではないかというところにようやく行きつきました。 別に戻り値を必要とするわけではなく、hoge.phpからfuga.phpへ投げっぱなしジャーマンのようにしたいのですが、方法はありますでしょうか? いろいろググってみたのですが、戻り値を受け取るための情報はあるのですが、受け取らないで投げっぱなしにする情報が見当たりません。 なにぶん素人なため、説明もわかりにくいと思いますが、ごうかご助言よろしくお願いします。 サンプル的なソースや情報など、素人にもわかる形でよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • フォームから送信される値について教えてください

    ある人とwebのフォームを作成する話をしていて、相手の方からフォーム のテキストやチェックボックスなどinput要素では、name属性は必須では なくid属性が必須で、ブラザーからはidとvalueの組み合わせがサーバに 送信されるといわれました。 私の認識としては 「一般にHTMLのフォームをサーバーへ送信する時には、 get・postに かかわらずブラウザが自動的にFORMの子要素内のnameとvalueの値の ペア(name=value&name=valueというような値)を送信する」 だということを話したところ。 getに関しては今もそうかもしれないが、現在のpostの場合はidとvalueの 値のペアが送信され、それをサーバで処理しているというようなことを 言われました。 私自身phpやperlを使っています、ブラウザからの送信方法は get・postで違うが、送られてくる内容はpostの場合もnameとvalueの 組み合わせだと認識しています。 実際にスクリプトを作成して、テストしてもidとvalueの組み合わせは サーバ側のプログラムでは取得できませんでした。 相手の方が言うように最近のブラウザー(クライアント)はサーバに id=valueの組み合わせを送信するものや場合によってそのように振る舞う ことがあるのでしょうか。 この件に関して詳しい方、ご教授いただけないでしょうか。 できればRFC等の確かな資料をお示しいただけると助かります。

    • ベストアンサー
    • HTML
  • オンラインストレージサーバー

    オンラインストレージサーバーと レンタルサーバーって何が違うのでしょうか? 後者は自分で作ったサイトを置くサーバーですか? 前者は何でしょう?

専門家に質問してみよう