无法在 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-&gt;input-&gt;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",然后创建仅包含 &lt;?php print_r($_POST); ?&gt;js/test.php 文件- 也许您在 CI 使用的 HTTP 服务器重定向中丢失了您的 POST 数据!检查您的 Apache 或 nginx URL 重写配置。 我按照你说的做了,它返回了另一个空数组。我不使用本地 apcache 服务器,而是将我的东西上传到虚拟主机。此项目之外的其他形式(全新的 CI 安装)工作正常...

以上是关于无法在 codeigniter 中发布简单的表单日期的主要内容,如果未能解决你的问题,请参考以下文章

在 Codeigniter 中填充表单数据和验证数据的更简单方法?

在 CodeIgniter 4 中提交表单后重定向页面无法工作

bootstrap codeigniter 表单输入和提交按钮

在 CodeIgniter 中验证表单下拉列表

Codeigniter 表单发布数据为空

CodeIgniter 表单验证,无法获取验证错误