xhui_cool 发表于 2009-2-16 15:49:49

感觉helper的redirect有问题

上次那个要登陆两次的问题,我后来直接用 Header( "Location: /admin", TRUE, 302);就不出现了可我发现另一个问题,我有地方有个删除功能,点击后重定向到 redirect('/admin/photos'); 问题就在这,第一次点击删除 会退出系统要求重新登陆(和开始的两次登陆类似,登陆完后再次做任何其他操作都可以,包括再删除都不需要在登陆,而我做第一次删除之前可以做更新等其他操作,说明session确实存在,)第一次点击删除session丢失了!!

后来我发现删除和更新操作不同的地方在于删除用的是helper的redirect,就改为 Header( "Location: /admin/photos", TRUE, 302); 问题解决了。。。
而那个要登陆两次的问题开始也是用的redirect 。。。

按理来说redirect函数就是转化为 Header( "Location: /admin/photos", TRUE, 302); 既然没有改动其他代码 问题就好了, 说明还是 redirect这出的问题,相同代码不同效果,有可能是装载helper的时候有问题,用hook监视controller 间接导致了session丢失

neversaylate 发表于 2009-2-17 14:21:01

不太清楚什么原因。看了下redirect的代码,应该没问题的。等自己使用时要留意下。
|if ( ! function_exists('redirect'))
|{
|      function redirect($uri = '', $method = 'location', $http_response_code = 302)
|      {
|          if ( ! preg_match('#^https?://#i', $uri))
|          {
|            $uri = site_url($uri);
|          }
|         
|          switch($method)      
|          {
|            case 'refresh': header("Refresh:0;url=".$uri);
|                  break;
|            default         : header("Location: ".$uri, TRUE, $http_response_code);
|                  break;
|          }         
|          exit;
|      }
|}

wgxdx 发表于 2010-4-5 22:17:59

A PHP Error was encountered
Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at F:\xacms-read-only\xacms-read-only\system\helpers\url_helper.php:536)

Filename: helpers/url_helper.php

Line Number: 541
当执行到redirect();时出现错,不知道是那不对?

jeongee 发表于 2010-4-5 22:42:07

回复 3# wgxdx


   文件编码的问题吧,PHP的文件不要存带有bom的utf-8,OK?
页: [1]
查看完整版本: 感觉helper的redirect有问题