为什么PHP不处理我的请求?

时间:2017-11-16 15:21:53

标签: php html amazon-ec2

我有一个PHP项目,其中我有一个简单形式的index.html:

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

我试图像这样处理它

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

但它不起作用,因为它永远不会评估第一个,如果&#34; true&#34;。顶部的第一个回音确实有效,但如果我对$ _SERVER [&#34; REQUEST_METHOD&#34;]进行回音,它就不会给我任何东西。我已尝试使用isset($ _ POST [&#39; Hola&#39;])但我的结果相同。

这只发生在我在互联网主机上的项目中。我使用netbeans和xampp在本地计算机上编写了完全相同的代码,它完美无缺。我不明白为什么。

我觉得我犯了一些愚蠢的错误,但我找不到。

我的主机是来自ec2 Amazon Web Services的Ubuntu服务器。

修改 这是Servicios.php中<?=print_r($_SERVER);?>的输出 我用[ip]

替换了我的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] => webmaster@localhost 
    [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); ?>

的数组中
 ["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中的按钮移动到Servicios.php时,浏览器移动到Servicios.php(它显示在url中),但它根本没有显示任何内容。它只显示一些内容,如果我删除了所有代码,并将<?=print_r($_SERVER);?>这样的指示放在上面。

2 个答案:

答案 0 :(得分:0)

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

这应该有效。这是检查是使用POST方法提交的按钮。这应足以检查表单是否已提交。

答案 1 :(得分: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
}