如何在重定向中显示值$ error?
请举个例子。
if ( ! $files )
{
$error = array('error' => $this->upload->display_errors());
redirect('hello/hi/insert_foreign');
}
答案 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']);
}