cookies在sp下无法写入

#1 xpp1000

cookies在SP下写入不了,如何处理。

2011-05-12 10:40:35

#2 jake

SP没对cookie进行处理,可以按正常PHP的cookie方式来进行

具体看手册:http://speedphp.com/interaction-session.html

PHP手册:http://cn.php.net/manual/zh/function.setcookie.php

2011-05-12 12:28:59

#3 xpp1000

我新建的PHP文件可以正常读取,但是用SP里面的页面建的无法写入

2011-05-12 16:27:58

#4 jake

setcookie会受到页面header的影响,所以要检查一下文件编码,是否有UTF-BOM存在或是其他输出存在。

2011-05-12 16:39:52

#5 xpp1000

bom清空了,cookies输出前我用ob_start()还是不行,我看了SP中用一个用cookies的地方,@ob_start();
                        $domain = ('www.' == substr($_SERVER["HTTP_HOST"],0,4)) ? substr($_SERVER["HTTP_HOST"],4) : $_SERVER["HTTP_HOST"];
                        setcookie("SpLangies", $lang, time()+31536000, '/', $domain ); // 一年过期
这个cookies也不可以读出,我用print_r($_COOKIE)只能读用PHP的写入的

2011-05-12 16:59:09

#6 jake

cookie无效一般的原因只有header发送的问题,可以看看PHP的错误日志,有没有“Cannot modify header information” 这种错误在里面。

cookies输出前可以试试用ob_ clean();

2011-05-12 17:38:56

#7 xpp1000

没有任何提示

2011-05-14 22:36:19

#8 jake

发个正常使用COOKIE的例子,当然,还是那句话:先试试,别修改任何东西!

cookie.zip


cookie.jpg

2011-05-15 08:48:11

#9 xpp1000

输出结果如下:Array
(
)
得不到cookies

2011-05-16 14:39:11

#10 jake

还是建议别改我给的代码,因为你的编辑器有可能自动加BOM!

2011-05-16 16:53:19

#11 xpp1000

清空了b0m,也没有改你的代码还是这样

2011-05-17 08:08:11

#12 xpp1000

再次测试发现你的代码可以写入cookies,我的还是无法写入,
define("APP_PATH",dirname(__FILE__));
define("SP_PATH",dirname(__FILE__).'/SpeedPHP');
date_default_timezone_set('Asia/Chongqing');
define("urls", "http://www.zhaoshang800.com/");
define("titles", "深圳_厂房出租_厂房出售_中工招商网");
define("keywords", "厂房出租,工业厂房,厂房招租,仓库出租商网");

$spConfig = array( 'dispatcher_error' => "import(APP_PATH.'/404.html');exit();",
'launch' => array( // 加入挂靠点,以便开始使用Url_ReWrite的功能
                'router_prefilter' => array(
                                array('spUrlRewrite', 'setReWrite'),  // 对路由进行挂靠,处理转向地址
                        ),
                       
                 'function_url' => array(
                                array("spUrlRewrite", "getReWrite"),  // 对spUrl进行挂靠,让spUrl可以进行Url_ReWrite地址的生成
                    ),
        ),
       
         'ext' => array(
                          // 以下是Url_ReWrite的设置
                         'spUrlRewrite' => array(
                                //'hide_default' => false, // 隐藏默认的main/index名称,但这前提是需要隐藏的默认动作是无GET参数的
                                 //'args_path_info' => false, // 地址参数是否使用path_info的方式,默认否
                                'sep' => '-',  
'suffix' => '.html', // 生成地址的结尾符
                         'map' => array(
                         'show' =>'cf@show',
                         'cz'=>'city@cz','ji'=>'city@ji','news'=>'city@news','m12'=>'city@m12','m21'=>'city@m21','t12'=>'city@t12','t21'=>'city@t21','cs'=>'sale@cz','ji'=>'sale@ji','news'=>'sale@news','m12'=>'sale@m12','m21'=>'sale@m21','t12'=>'sale@t12','t21'=>'sale@t21',),  

   'args' => array(
   'show' => array('id'),'find' => array('m1','m2','f','sa','qu','zheng'),'cz'=>array('ct','p'),'cs'=>array('ct','p'),'m12'=>array('ct','p'),'m21'=>array('ct','p'),'t12'=>array('ct','p'),'t21'=>array('ct','p'),
   ),  

),

        ),
  
       
"db" => array(
                'host' => '*.*.*',
                'login' => '*',
                'password' => '*',
                'database' => '*',
        ),
                  
'url' => array( // URL设置
  'url_path_info' => TRUE,//FALSE, // 是否使用path_info方式的URL
  'url_path_base' => '', // URL的根目录访问地址,默认为空则是入口文件index.php
),
      
   

     'view' => array(  

         'enabled' => TRUE, // Smarty  

         'config' =>array(  

            'template_dir' => APP_PATH.'/tpl', // ģŵĿ¼  

            'compile_dir' => APP_PATH.'/tmp', // ʱĿ¼  

             'cache_dir' => APP_PATH.'/tmp', // ʱĿ¼  

             'left_delimiter' => '<{',  // smarty޶  

             'right_delimiter' => '}>', // smarty޶  
'allow_php_tag'=>'true' ,
         ),  
                 

     ),  
'mode'=>'running'
);
require(SP_PATH."/SpeedPHP.php");
function utf8s($params)

{$str=$params["str"];
$from=$params["from"];
$len=$params["len"];
return preg_replace('^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
                       '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*s',
                       '$1',$str);
}
spAddViewFunction('utf8s','utf8S');
import(APP_PATH.'/functions.php');
spRun();
我的配置文件,是不是和这个有关系呀

2011-05-17 08:23:51

#13 xpp1000

谢谢了,查到原因是setcookies前面有输出,但是找不到那里有输出,没有办法只好用最郁闷的办法,开启服务器的续存:output_buffering = 4096

2011-05-17 08:46:18

#14 jake

入口文件index.php有检查bom了吗?还有functions.php文件,整个流程相关的文件,都有可能带BOM。另外编辑器最好不用dreamweaver,它会自动带bom的。

2011-05-17 09:03:27

#15 xpp1000

实现了通过修改服务器配置,把输出缓冲设成4096就可以了

2011-05-30 15:44:28