搜尋
首頁php教程php手册PHP session错误提示与调试

Q 1

错误提示:

Warning: Cannot send session cookie - headers already sent 
Warning: Cannot send session cache limiter - headers already sent 

这一类问题,原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将你的session_start()调到程序的第一行。

Q 2

错误提示:

Warning: open(F:/689\php\sessiondata\sess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed 

出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为

session_save_path = c:\temp 
session.cookie_path = c:\temp 

然后在c:\目录下建立一个temp目录,即可。

Q 3

错误提示:

Warning: Trying to destroy uninitialized session in 

出类这样的提示,一般情况都是你直接调session_destroy()函数造成的。很多的朋友认为session_destroy()函数可以独立的运行,其实不然。解决的方法是在你调session_destroy()函数之前,要用session_start()开启session的功能。

Q 4

怎么获得当前session的id值呢?

最简单的方法是:echo SID; 你会发现的。

Q 5

我的程序,在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了session_start()的缘故呢?

或许你确实认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出!但是你是否用光标键在?>这个PHP代码结束语句后移动检查呢?那么你会发现在?>这个后面,有一个空行或几个空格,你删除了这几个空行或空格,那么问题就解决了。

注:此问题,会出PHP4.1.2中,更高版本,没有测试过。

Q 6

用session做登录主页面后,其它页面怎么用session限制登录。

最简单的方法是

session_start(); 
if(!session_registered('login') ││ $login != true) { 
echo "你没有登陆"; 
exit; 
} 

Q 7

我用session_register()注册了session变量,可是当我用header或用javascript的重定向语句,那么在一下页面中,我却访问不到session所注册的变量值。请问如何解决?

问题的程序片段:

<? 
session_start(); 
$ok = 'love you'; 
session_register('ok'); 
header("location : next.php"); 
?> 

next.php

<? 
session_start(); 
echo $ok; 
?> 

当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失,关于这个问题的原因,至今仍没有一个详细的回答。不过有解决的方法。如下所示:

header("Location: next.php" ."?" . SID); 

在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。

Q 8

session如何传数组?

session_register('data'); 
$data=array(1,2,3,4); 

方法是先注册后赋值。

Q 9

我是不是可以用像$HTTP_GET_VARS['**']方式来访问session值呢?

可以,你可以使用如下global数组来访问session,以加强网页的安全性。$HTTP_SESSION_VARS、$_SESSION。

<?php 
session_start(); 
$username = 'stangly.wrong'; 
session_register('username'); 
echo $HTTP_SESSION_VARS['username']; 
echo '<br />'; 
echo $_SESSION['username']; 
?> 

请参照此例程修改符合您自己的程序。

Q 10

session_unregister() 和 session_destroy() 有何区别?

session_unregister()函数主要作用是注消当前的一个session变量。不过要注意的是,如果你用$HTTP_SESSION_VARS或$_SESSION在当前页面中引用过session变量,那么你可能需要和unset()配合 来注消session变量。

而session_destroy()是清除当前的session环境。意思就是说,当你用session_destroy()函数后,那么你就不可能再用session_is_registered()来检测session的变量了。但是需要注意的是他不能清除global中的session或使用了session cookie的中的session.所以在用session_destroy之前,最好不要用$HTTP_SESSION_VARS $_SESSION来访问session.(译自于php.net)

例程:

if(isset($_COOKIE[session_name()])) { 
	session_start(); 
	session_destroy(); 
	unset($_COOKIE[session_name()]); 
}
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境