HTML表单未发送$_POST值

3

我正在尝试使用PHP创建一个表单生成器。这是一个非常愚蠢的“需要再看一遍”的问题。我知道这个表单应该能正常工作,但它根本没有发送任何$_POST值。以下是代码。

<form method="post" action="http://projects.zesty-designs.co.uk/orderform" class="generatedform">
<label>Ebay Username</label><br />
<input type="text" name="ebay_username" value="" /><br />
<label>Email Address</label><br />
<input type="text" name="email_address" value="" /><br />
<label>Full Name</label><br />
<input type="text" name="full_name" value="" /><br />
<input type="submit" value="Submit" /><input type="reset" value="Start Again" />
</form>

如果有人想尝试,这是实时链接。 http://projects.zesty-designs.co.uk/orderform

1
这段 HTML 代码没有问题,应该可以正常工作。服务器可能会重定向到另一个页面,这意味着使用 GET 方法并且会丢失所有已发布的数据。 - Marc B
尝试传递完整的URL,http://projects.zesty-designs.co.uk/orderform/index.php。 - Afsar
谢谢您的快速回复。我尝试将操作更改为“./”,似乎完美地解决了问题。那么URL可能有问题吗?由于我将在外部页面上放置此表单,因此需要在操作中使用完整的URL。 - Brad Bird
你不需要输入完整的URL。 - Mike
我认为Marc B是正确的:你的页面重定向到带有尾随斜杠的相同URL。尝试将缺失的斜杠添加到表单的操作属性中:<form method="post" action="http://projects.zesty-designs.co.uk/orderform/" class="generatedform"> - Viktor
我同意。将操作更改为 /orderform/(带有尾随斜杠并省略域),它应该可以工作。 - Mike
5个回答

3

看起来大部分评论都是正确的。

似乎发送信息的URL需要一个斜杠/,或者直接引用文件。

谢谢回复。


1
尝试在action方法中传递完整的URL;
http://projects.zesty-designs.co.uk/orderform/index.php

0

我在使用经典 ASP 时遇到了完全相同的问题。 我已经设置了 IIS RULE REWRITE 和 web.config 如下:

<rule name="arulename">
 <match url="somematch" />
 <conditions>
  <add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" negate="false" />
 </conditions>
 <action redirectType="Temporary" type="Rewrite" url="someurl" />
</rule>

我的问题是,当我点击提交按钮时,表单没有提交。我的表单的action属性是“http://website.extension/someshorturl”,但没有任何发布数据。
换句话说,一切都正确,但是发布数据丢失或被删除,并且没有配置或编码错误。我发现的是,因为我已经设置了服务器本身,使得使用www.前缀的域名,它会先重定向没有www.前缀的所有内容。我只需要更改我的表单,将action属性更改为“http://www.website.extension/someshorturl”,然后发布数据就出现了。
如果有人遇到和我一样的问题,我希望这可以帮助他们。
我搜索了很多地方,使用“POST DATA BEING LOST”,但没有得到任何帮助,直到我来到这里,这指向了我的问题。

0

如果它实际上是一个文件名,你应该添加.php后缀,例如action="domain.com/somepage.php"


如果 OP 使用 URL 重写,则“。php”应根据其规则存在或不存在。我们不能假设它是必需的,因为在这种情况下可能不需要。 - War10ck
这就是为什么我加上了“如果它实际上是一个文件名”的原因。 - Yaakov

0
尝试像这样转义您的字符:转义您的字符

http:\/\/projects.zesty-designs.co.uk\/orderform

反斜杠字符有几个用途。首先,如果它后面跟着一个非字母数字字符,它会取消该字符可能具有的任何特殊含义。反斜杠作为转义字符的这种用法在字符类内外都适用。

查看链接以获取更多信息:Php.net手册中的转义序列

基本上,在PHP中,您的\字符用于输出标志或转义字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接