无法在 codeigniter 中发布简单的表单日期
Posted
技术标签:
【中文标题】无法在 codeigniter 中发布简单的表单日期【英文标题】:Can't post simple form date in codeigniter 【发布时间】:2012-08-31 14:13:47 【问题描述】:我敢肯定这是一个简单的疏忽,但它在短时间内让我很头疼。
我正在尝试从此视图发布数据:
<?php
if (!$this->tank_auth->is_logged_in())
echo "<a href='index.php/auth/login'>Login</a>";
else ?>
<form method="POST" action="create_community">
<label>Community Name: </label><input type="text" name="communityname" value="231"/><br>
<label>Description: </label><br><textarea name="communitydesc"></textarea><br>
<label>Image Location(URL): </label><input type="text" name="imageloc"/><br>
<input type="radio" name="privacy" value="public" /> public<br />
<input type="radio" name="privacy" value="private" /> private<br />
<input type="radio" name="privacy" value="business" /> business<br />
<input type='submit'/>
</form>
<?php
?>
创建控制器如下:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Create extends CI_Controller
function __construct()
parent::__construct();
$this->load->library('tank_auth');
$this->load->library('encrypt');
$this->load->library('session');
$this->load->model('topbar_model');
$this->load->model('left_model');
$this->load->model('right_model');
/*
$this->load->model('right_model');
$this->load->model('left_model');
$this->load->model('topic_model');
*/
$this->load->helper('url');
$this->load->helper('form_helper');
$this->load->helper('form');
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->load->library('security');
$this->load->library('tank_auth');
$this->lang->load('tank_auth');
public function index()
$this->load->view('create_community');
public function create_community()
$this->load->view('templates/head');
echo "testing";
print_r($this->input->post());
create_community 显示“测试”但不显示帖子。我也尝试过发布个人输入内容,但一无所获。
有什么想法吗?
【问题讨论】:
刚刚看到了一些东西:我的视图与函数同名...不,没有做任何事情 您可以尝试将error_reporting(E_ALL)
添加到您的index.php
中,看看是否有任何错误?
尝试print_r($this->input->get_post());
检查浏览器是否遵循表单的method="POST"
。此外,使用 Firebug 或 Chrome 开发者控制台,检查网络选项卡以查看浏览器是否确实在发送帖子数据。您也可以尝试print_r($_POST);
和print_r($_REQUEST);
来检查表单数据是否到达PHP 端。
【参考方案1】:
相信 $this->input->get_post() 是一个方法调用,而不是一个类变量,所以你不能像 $_POST[] 那样处理。
如果您想使用 POST 进行传统的表单处理,请使用标准的 $_POST[] assoc。数组,但请注意可能会包含一个 CSRF 字段,并且您需要处理。
另外,我不知道您是如何路由的,但您的表单操作不应该是“create/create_community”,除非您此时为所有呼叫路由“创建”。
【讨论】:
谢谢,我会调查的。由于它只是一个创建页面(这不会在我的实际站点中),我实际上在表单操作中有完整的 URL。我刚刚为这篇文章编辑了它。 哇哦!谢谢。您提醒我,您不能将 http:// 放入表单操作中。当然,问题将是我编辑掉的一件事!对不起大家。感谢您的帮助!【参考方案2】:public function create_community()
var_dump($this->input->post());
【讨论】:
返回一个空白文档……嗯,返回'head'视图。 ...这就是你的函数的作用——你还期待什么? 试试print_r($_POST);
并告诉我们结果 - 至少我们会知道这是否是 Code Igniter 问题
嗯...我们假设您正在单击表单的“提交”按钮,对吧?在这种情况下,问题似乎与 HTTP 服务器或 PHP 配置有关...请尝试将表单操作更改为 action="js/test.php"
,然后创建仅包含 <?php print_r($_POST); ?>
的 js/test.php 文件- 也许您在 CI 使用的 HTTP 服务器重定向中丢失了您的 POST 数据!检查您的 Apache 或 nginx URL 重写配置。
我按照你说的做了,它返回了另一个空数组。我不使用本地 apcache 服务器,而是将我的东西上传到虚拟主机。此项目之外的其他形式(全新的 CI 安装)工作正常...以上是关于无法在 codeigniter 中发布简单的表单日期的主要内容,如果未能解决你的问题,请参考以下文章
在 Codeigniter 中填充表单数据和验证数据的更简单方法?
在 CodeIgniter 4 中提交表单后重定向页面无法工作