【问题标题】:show value variable in redirect?在重定向中显示值变量?
【发布时间】:2011-07-26 18:19:36
【问题描述】:

如何在重定向中显示价值 $error?
请举个例子。

if ( ! $files )
        {
            $error = array('error' => $this->upload->display_errors());
            redirect('hello/hi/insert_foreign');
        } 

【问题讨论】:

  • 将其附加到查询字符串并使用超全局 GET 来检索它。
  • 在会话中创建一个临时变量。有时,要存储的变量不能放在查询字符串中。

标签: php codeigniter redirect


【解决方案1】:

如果您考虑自己正在做的事情,那么您的问题就有点不合情理了。

标头重定向是对服务器的http请求,在这种情况下重定向到另一个URL;通常它们带有具有特定含义的状态代码,例如未找到页面的 404 等(See a list of error codes)。您不应使用它来传递针对用户且属于 UI 的任意和自定义信息,例如例如,行动。

如果你想这样做,你最好使用 php 延迟超时:

if ( ! $files )
        {
            $data['error'] = $this->upload->display_errors();
            $this->load->view('show_error',$data);
            sleep(5);
            redirect('hello/hi/insert_foreign', 'refresh');
        } 

或者使用 CI 的 flashdata,它可以方便地向用户显示临时消息(请参阅手册页 here 以获得更好的解释):

  $this->session->flashdata('error');

或者可以使用javascript:

在您的控制器中:

$data['error'] = $this->upload->display_errors();
$this->load->view('show_error', $data);

在你看来 show_error.php:

<?php echo $error; ?>
    <script type="text/javascript">
    $(document).ready(function(){
        var href = "<?php echo site_url('hello/hi/insert_foreing');?>";
        setTimeout(function() { window.location.href = href; }, 3000 );
    });
    </script>

【讨论】:

    【解决方案2】:
    if ( ! $files )
    {
         $error = array('error' => $this->upload->display_errors());
         $_SESSION['error'] = $error;
         redirect('hello/hi/insert_foreign');
    }
    
    //on other page
    if(isset($_SESSION['error'])) {
        $error = $_SESSION['error'];
        //output error
        unset($_SESSION['error']);
    }
    

    【讨论】:

      【解决方案3】:

      根据您当前的规范,我想出了这个:

      <?php
          echo implode('<br>', $error);
      ?>
      

      编辑

      在下一页显示错误。我会用 $_SESSION 来做。使用 GET 方法添加任何内容是没有意义的。事实上,会话应该更安全,当然看起来更好,您不必从 GET 方法转换任何内容..而只需从数组中获取源错误..

      <?php
          if (!$files) {
              $_SESSION['upload_errors'] = $this->upload->display_errors());
              redirect('hello/hi/insert_foreign');
          } 
      ?>
      

      您被重定向的页面:

      <?php
          echo implode('<br>', $_SESSION['upload_errors']);
      ?>
      

      【讨论】:

      • 您没有在问题中指定。无论如何,这是基本的想法。对于当前的问题,这是最好的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多