【问题标题】:Form not sending data through Post表单不通过 Post 发送数据
【发布时间】:2016-03-11 05:55:35
【问题描述】:

作为一个大项目的一部分,我正在使用 PHP 和 CodeIgniter 实现一个简单的时事通讯表单。

我的HTML代码如下。

<form method="POST" action='http://sit.com/index.php/Users/subscribenews'>
<div class="input-group">
<input type="email" id="pkemailid" name="pkemailid">
<span class="input-group-btn">
<button class="btn btn-lg btn-primary" type="submit"> Go
</button>
</span>
</div><!-- /input-group -->
</form>

在我的控制器中,我将值处理为

$emailid = $this->input->post('pkemailid');

当我对 $_POST 变量进行 var_dump 时,我得到以下信息

array(0) { }

最大的问题是我能够在本地主机上的 WAMP 服务器上正确运行它,但它在托管服务器上不起作用。

有趣的是,如果我将 POST 更改为 GET,它就会开始工作。

【问题讨论】:

  • 其他表格适用于您的应用程序?还是只有这个不行?
  • 我现在检查了所有的表格。他们都没有工作。所有表单都有method="POST"。令人惊讶的是,这适用于我本地机器上的 WAMP 服务器。
  • 表单名称属性?
  • 提交表单后$_SERVER['CONTENT_TYPE'] var 会显示什么?
  • 执行 var_dump($_SERVER) 时找不到 CONTENT_TYPE。

标签: php codeigniter post input


【解决方案1】:

这一行

<input type="email" id="pkemailid" name="pkemailid">

试试改成

<input type="text" id="pkemailid" name="pkemailid">

type="email" 只是 html 5,我不确定——但 codeigniter 可能不支持 html 5 表单值。

===== 编辑

所以我的建议是,当您正处于试图发现错误的质疑现实阶段时 - 获取一个全新的 codeigniter 副本,安装在您的服务器上,确保您获得欢迎页面。
现在使最简单的表单成为可能,并从控制器方法中回显某些内容,以确保您将表单提交给正确的方法。接下来添加一个带有值的隐藏表单字段,并从您的方法中回显该值。

如果一切正常,那么您的原始代码中存在错误不是您的服务器。如果它不起作用,那么您的服务器就有问题。

【讨论】:

  • Codeigniter 3.0.3 在我的本地机器(wampserver)上工作正常。正如我所提到的, type="email" 不是问题。当我将方法更改为 GET 并使用 $this->input->get 时,一切都开始正常工作了。
  • 如果它在您的本地机器上工作,但不在服务器上 - 那么它必须是服务器上的配置问题。因此,请仔细检查您的配置、路由、htaccess 等,同时在测试时始终从控制器/方法中回显某些内容,以便您知道它与正确的控制器联系。
  • 我也这样做了。控制器路由等工作正常。正如我所提到的,当我将方法更改为 GET 并使用适当的 CodeIgniter 方法($this->input->get)时,一切正常。但出于显而易见的原因,我想坚持使用 Post。
  • 在上面添加了一些健全性检查建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 2020-09-03
  • 1970-01-01
  • 2020-12-27
相关资源
最近更新 更多