2017-11-16 6 views
-1

私はシンプルなフォームでのindex.htmlを持っているPHPプロジェクトがあります。このPHPでリクエストが処理されないのはなぜですか?

<?php  
    echo "can you print this"; 
    if($_SERVER["REQUEST_METHOD"]=="POST") 
    { 
     if(!empty($_POST["Test"])) 
     { 
     echo "Hello world"; 
     } 
    } 

のようにそれを処理しようとしている。しかし、それはないServicios.phpイムに

<p>Test connection</p> 
    <form action="Servicios.php" method="post"> 
     <input type='submit' name='Test' value='Test'> 
    </form> 

を"true"のように最初のものを評価することはないからです。一番上の最初のエコーは機能しますが、$ _SERVER ["REQUEST_METHOD"]にエコーすると何も出ません。私はisset($ _ POST ['Hola'])で試しましたが、同じ結果が出ました。

これは私がインターネットホストにあるプロジェクトでのみ発生します。私はnetbeansとxamppを使用して私のローカルコンピュータでこの全く同じコードを書いて、それは完全に動作します。なぜ私は考えていない。

私は愚かな間違いをしている気がしますが、私はそれを見つけることができません。

私のホストはec2 Amazon Web ServicesのUbuntuサーバーです。

編集 は、これは私が私のIPが

Array ( 
    [HTTP_HOST] => [ip] 
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0 
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
    [HTTP_ACCEPT_LANGUAGE] => es-MX,es-ES;q=0.9,es;q=0.7,es-AR;q=0.6,es-CL;q=0.4,en-US;q=0.3,en;q=0.1 
    [HTTP_ACCEPT_ENCODING] => gzip, deflate 
    [HTTP_REFERER] => http://[ip]/ProyectoPM/ 
    [CONTENT_TYPE] => application/x-www-form-urlencoded 
    [CONTENT_LENGTH] => 11 
    [HTTP_CONNECTION] => keep-alive 
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1 
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
    [SERVER_SIGNATURE] => Apache/2.4.18 (Ubuntu) Server at [ip] Port 80 
    [SERVER_SOFTWARE] => Apache/2.4.18 (Ubuntu) 
    [SERVER_NAME] => [ip] 
    [SERVER_ADDR] => 172.31.43.105 
    [SERVER_PORT] => 80 
    [REMOTE_ADDR] => 189.208.87.127 
    [DOCUMENT_ROOT] => /var/www/html 
    [REQUEST_SCHEME] => http 
    [CONTEXT_PREFIX] => 
    [CONTEXT_DOCUMENT_ROOT] => /var/www/html 
    [SERVER_ADMIN] => [email protected] 
    [SCRIPT_FILENAME] => /var/www/html/ProyectoPM/Servicios.php 
    [REMOTE_PORT] => 5672 
    [GATEWAY_INTERFACE] => CGI/1.1 
    [SERVER_PROTOCOL] => HTTP/1.1 
    [REQUEST_METHOD] => POST 
    [QUERY_STRING] => 
    [REQUEST_URI] => /ProyectoPM/Servicios.php 
    [SCRIPT_NAME] => /ProyectoPM/Servicios.php 
    [PHP_SELF] => /ProyectoPM/Servicios.php 
    [REQUEST_TIME_FLOAT] => 1510846404.812 
    [REQUEST_TIME] => 1510846404) 1 

これは、それが<?=var_dump($_SERVER); ?>

で返す配列にある[IP]で示したされた部品を交換しServicios.php で <?=print_r($_SERVER);?>の出力であります
["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" 
["REQUEST_METHOD"]=> string(4) "POST" 
["QUERY_STRING"]=> string(0) "" 
["REQUEST_URI"]=> string(25) "/ProyectoPM/Servicios.php" 
["SCRIPT_NAME"]=> string(25) "/ProyectoPM/Servicios.php" 
["PHP_SELF"]=> string(25) "/ProyectoPM/Servicios.php" 
["REQUEST_TIME_FLOAT"]=> float(1510847672.582) 
["REQUEST_TIME"]=> int(1510847672) } 

さらに重要な編集 最初に私は言った単純なecho "can you print this";がホストで働いていたのですが、今でもそうは見えません。私がindex.htmlのMyボタンをクリックしてServicios.phpに移動すると、ブラウザはServicios.php(URLに表示されます)に移動しますが、何も表示しません。すべてのコードを削除した場合は、<?=print_r($_SERVER);?>のようなインストラクションを私がすでに上に置いたものにするだけです。

+1

を実行し 'ますprint_r($ _ SERVER)'そこに何があるかを確認するかどうかをチェックするために、これを試すことができます。 –

+0

その要求のWebサーバーログを表示します。 –

+0

Ok、print_r($ _ SERVER)は長い配列を返します。正確に何を検索するのですか? – Quique

答えて

0
if(isset($_POST['Test'])){ 
echo 'Hello world'; 
} 

これは動作するはずです。これはPOSTメソッドを使用してボタンが送信されたことを確認しています。フォームが提出されたかどうかを確認するのに十分なはずです。いくつかのバージョン抽出コマンドで

+0

これはOPのためにはうまくいかないでしょう。これはlocalhostで動作しています。 – pr1nc3

+0

'empty() 'で行われたチェックOPを削除しています –

0

http://php.net/manual/en/function.extract.php

使用されるべきです。

if(extract($_POST)) { 
    // code 
} 
+2

これは問題が何も表示されていないので、何かがあればコードが悪化しています。変数として配列キーを使うのは良い考えではありません。 –

+1

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 17969986) – Jehy

0

あなたはpostメソッド

if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST') { 
// if form submitted with post method 
    // validate request, 
    // manage post request differently, 
    // log or don't log request, 
    // redirect to avoid resubmition on F5 etc 
} 
+1

大文字にする必要はありません([この回答は理由を示しています](https://stackoverflow.com/a/10766285/6651287))、 _equal_でチェックをしても動作しない場合、_identical_を使用してもどちらも動作しません。 –

関連する問題