我有一个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]
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);?>
这样的指示放在上面。
答案 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
}