在重定向中显示值变量?

时间:2011-07-26 18:19:36

标签: php codeigniter redirect

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

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

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

<?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']);
?>

答案 2 :(得分:0)

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']);
}