【问题标题】:Codeginiter: Get the a URI segment of a page and add it to the URL of its redirect pageCodeigniter:获取页面的 URI 段并将其添加到其重定向页面的 URL
【发布时间】:2018-03-03 05:38:51
【问题描述】:

所以我有这两页 如果 page1 的 URL 是:http://localhost/project/page1/page1/5

该页面中有一个链接重定向到 page2 的 URL:

http://localhost/project/page2/page2/2
(它的第 3 段 - 2 来自所选的下拉值)

是否可以使用如下 URL 制作重定向页面 - page2: http://localhost/project/page2/page2/5/2

-这样我就可以对 page1 的值做一些事情,比如在数据库中动态查询。

在第 1 页查看:

<div class="form-group form-inline">
  <select id="p2_val">

      <?php 
          foreach($v_p2 as $row) {
      ?> 
      <option 
          value="<?php  echo base_url('page2/page2/').$row->p2_val;?>">
          <?php echo $row->p2_num; ?>
      </option>
      <?php }  ?> 

  </select>

      <input  class="SubmitButton" type="submit" 
      name="SUBMITBUTTON" value="Submit" />
</div>

第 1 页中的控制器:

class Page1 extends CI_Controller{

     public function __construct()
        {
            parent::__construct(); 
            $this->load->model('page1_model');

        }

    public function page1(){
        if($this->session->userdata('logged')){

            $this->load->model('page1_model');

            $data["v_p2"] = $this->page1_model->v_p2($this->session->userdata('user_id'));

            $this->load->view('pages/page1', $data);

            $this->load->view('templates/footer');

        }

    }

page2 的控制器:

类 Page2 扩展 CI_Controller{

     public function __construct()
        {
            parent::__construct(); 
            $this->load->model('page2_model');

        }

    public function page2(){
        if($this->session->userdata('logged')){

            $this->load->model('page2_model');

            $data["get_p2"] = $this->page2_model->get_p2($this->session->userdata('user_id'));

            $this->load->view('pages/page2', $data);

            $this->load->view('templates/footer');

        }

    }

【问题讨论】:

  • 1.据我所知,这是不可能的,您仍然可以查看codeigniter.com/userguide3/general/routing.html 2。为什么您要在 url 中传递您的值,它真的不安全
  • 定义你的控制器和方法。子目录项目中是否有第 2 页和第 1 页控制器?第二页定义是那些控制器的方法吗?如果不了解更多信息,这非常令人困惑。
  • @sayalok 我似乎无法解决这个问题。如果记录这些页面会话仍然不安全吗?
  • @kurwaaa 不,你可以通过 url 发送多少数据而你需要发送大量数据你会怎么做?
  • @Alex 编辑怎么样,是这样吗?是的,两者都在同一个目录上。

标签: php codeigniter url uri


【解决方案1】:

我将 page1 的视图更改为:

  <option 
      value="<?php  echo base_url('page2/page2/').$row->p1_val.'/'.$row->p2_val;?>">
      <?php echo $row->p2_num; ?>
  </option>

控制器没有变化,只是通过以下方式处理模型:

$this->uri->segment();

- 大多数更改都在我所做的数据库查询中。
- 由于我在 page2 中添加了额外的段,因此我将 " ../ " 添加到资产的路径中。

示例 - page2 的模型:

   function v_p2($data){
        $p1_val = $this->uri->segment(3);
        $p2_val = $this->uri->segment(4); 

         //DO smth with $p1_val & $p2_val
         //These values were used for querying


}

【讨论】:

  • 只要确保在不使用查询生成器时手动转义数据即可。
【解决方案2】:

我仍然不确定我是否理解你,但你可以做到:

public function page2($var1, $var2){

}

http://localhost/project/page2/page2/5/2

其中$var1 是5,而$var2 是上述网址中的2

【讨论】:

  • 感谢您花时间回答。我最近才解决它。
  • 很高兴听到这个消息。您可以回答自己的问题,以便将来遇到类似问题的人有所帮助。
  • 是的,我刚刚回答了谢谢。不知道这是否足够清楚
猜你喜欢
  • 2017-05-21
  • 2023-04-09
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
相关资源
最近更新 更多