如何在codeigniter中使用sites_url

时间:2015-12-23 07:09:00

标签: php html wordpress codeigniter

我正面临这个问题。当我尝试在我的视图中访问我的test_product / import.php时,我会遇到这个问题。

  

遇到错误您请求的操作不是   允许的。

我的import.php位于/view/test_product/import.php中。我通过/view/test_product/all.php

中的all.php打开它

以下是all.php的代码

<form id="submit_form" action="<?php echo site_url("Test_product/import");?>" method="post">
<p align="right"><button name="import" type="submit" class="btn btn-primary" id="submiting" data-loading-text="Adding ... <span class='fa fa-fw fa-spinner'></span>" form="submit_form">Import </button></p>

它们都位于同一目录/ view / test_product /下。这样做的目的是访问我的其他页面import.php。

3 个答案:

答案 0 :(得分:1)

此错误与&#34; site_url&#34;无关。它与Codeigniter CSRF保护有关。 为了解决这个问题,您应该:

  • 使用form_open()和form_close()辅助函数,而不是使用纯HTML来创建表单。当你使用辅助函数&#34; csrf token&#34;将自动插入表单中的隐藏字段。

  • 如果您不能使用form_open()或form_close(),则可以使用

    获取CSRF令牌名称和值

    $这 - &GT;安全 - &GT; get_csrf_hash();

    $这 - &GT;安全 - &GT; get_csrf_token_name();

    并通过在表单中​​添加令牌作为隐藏输入字段手动发送它们。

    <input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>">

  • 关闭CSRF保护,不建议这样做。

答案 1 :(得分:1)

由于您说您的import.php在视图中,因此它被归类为视图文件。您无法直接从site_url访问视图文件。您需要创建一个控制器才能访问视图

application > controllers > test_product > Import.php 

Controller for Import.php

<?php

class Import extends CI_Controller {

public function index() {
   // Form submit info goes here.
   $this->load->view('import_view');
}

}

然后你可以使用。

<form action="<?php echo base_url("test_product/import");?>"  method="post">

How to use URL Helpers

表格Helper

表单验证Library

答案 2 :(得分:0)

你在双引号内使用双引号。
试试"<?php echo site_url('Test_product/import');?>"

如果没有加载url_helper .try
如果你想自动加载网址

file location :application/config/autoload.php
$autoload['helper'] = array('url');

如果想根据需要加载:

$this->load->helper('url');

建议自动加载url_helper会更好,因为我们到处都需要它。 如果您想访问css,js,image等资源,请使用base_url(),否则使用site_url()