2012-03-28 212 views
3
<?php echo $_POST['ss'];?> 
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> 
<input name="ss" type="text" /> 
<input type="submit" name="submit"> 
</form> 

这个代码应该打印什么,当点击提交时在文本框中输入name =“ss”。
但它没有打印。使用method =“get”而不是post,有什么问题。PHP POST不能正常工作

+0

你看到了什么,当你'的print_r($ _ POST);'? – Brad 2012-03-28 20:17:02

+3

为什么你使用'$ _SERVER ['PHP_SELF']',如果你想让它提交给自己,可以让action属性为空? – Shef 2012-03-28 20:17:06

+0

看起来对我来说,print_r($ _ POST)会告诉你什么? – 2012-03-28 20:17:38

回答

11

如果你刚刚刷新页面,这样做:的

action='' 

代替:

action="<?php echo $_SERVER['PHP_SELF'];?>" 

此外,添加此2号线,看看有什么被存储(如果有的话)的$ _POST数组:

var_dump($_POST); 

嗯......所以它是空的提交?尝试添加这对你的PHP文件的顶部:

if(empty($_SERVER['CONTENT_TYPE'])) 
{ 
    $_SERVER['CONTENT_TYPE'] = "application/x-www-form-urlencoded"; 
} 

好,现在请检查您的php.ini文件(通常需要须藤或根在/ etc):

post_max_size = 8M 
variables_order = "EGPCS" 

你有这两个规则组?如果是这样,请注意您分配的内存量。超过2048MB的任何内容都可能会给您带来麻烦,具体取决于您的系统规格。

注意:如果您对php.ini文件进行更改并且PHP作为apache模块运行,则需要重新启动apache。沿着线的东西:

sudo /etc/init.d/httpd restart 
+2

其不工作 – 2012-03-28 20:19:04

+0

var_dump说什么?阵列(0)? – 2012-03-28 20:20:04

+0

我做了print_r($ _ POST),当第一次加载页面的时候说Array(),但是当我提交时,没有任何数组。 – 2012-03-28 20:20:28

5

我打破了我的POST方法一旦我设定post_max_sizeupload_max_filesize相同。我觉得post_max_size必须小于upload_max_filesize
在RHEL 6.0

+1

你节省了我的一天。非常感谢 – Limon 2014-03-27 19:20:26

+1

很高兴我可以帮忙:-D – zx1986 2014-03-28 09:33:39

+0

那正是发生了什么事。谢谢! – MadTurki 2014-04-28 13:46:58

5

测试与PHP 5.3.3这可能是由于重写在.htaccess规则file.Add这个条件.htaccess文件

RewriteCond %{REQUEST_METHOD} !POST [NC] 

或加入这一行

RewriteRule ^welcome_post.php - [PT] 
+2

非常感谢!我遇到了这个问题,并且你的第一个重写条件完全解决了它!救了我几个小时的痛苦:) – wyzkid207 2015-02-17 21:23:21

+0

这是工作.. !!!! :)谢谢.. – 2015-12-28 05:30:42

-2

用这个代替;

$variable_name = $_REQUEST["ss"]; 
echo $variable_name; 
0

今天我的朋友遇到了这个问题。答案是很简单 - 基本上,你必须利用的method="POST"

POST部分的最终结果应该

<?php echo $_POST['ss'];?> 
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST"> 
<input name="ss" type="text" /> 
<input type="submit" name="submit"> 
</form> 
+1

这不可能吧...看到http://www.w3schools.com/php/showphp.asp?filename=demo_form_post – m13r 2016-09-15 08:05:44

+1

不正确。 [枚举属性(如'method')不区分大小写](https://www.w3.org/TR/html5/infrastructure.html#enumerated-attribute)。 – Quentin 2017-07-31 10:02:42

-2

改变你的IDE,我用phpstorm,这是梦幻般的,但是当我使用Dreamweaver它的工作原理可能,测试你可以直接从wampserver本地主机上运行您的网页,我改变了apache的默认端口,我认为问题是从那里,如果您使用phpstorm或更改apache服务器的端口来更改您的IDE。

-1

<form action="" method="post"> method =“post”对POST数据很重要。

使用PHP请求,而不是:

<form action="" method="post"> 
    <input type="email" name="mail"> 
    <input type="submit" name="submit" value="Submit"> 
</form> 
PHP: 

if(isset($_REQUEST['submit'])){ 
    $val= $_REQUEST['mail']; 
    echo $val; 
} 
+0

“不要忘了给POST方法的HTML表单属性” - 他们没有。您可以在问题的代码中清楚地看到它。 – Quentin 2017-07-31 10:00:44

+0

方法=“后”,如果旧的缓存存储在Web浏览器将无法正常工作。为了使method =“post”处于活动状态,客户端必须验证POST方法在高速缓存存储中正在工作。 – 2017-08-01 05:55:09