首页技术phpsessid?jspp下载安装

phpsessid?jspp下载安装

编程之家2026-06-24681次浏览

大家好,今天小编来为大家解答phpsessid这个问题,jspp下载安装很多人还不知道,现在让我们一起来看看吧!

phpsessid?jspp下载安装

php的session出错问题

session问题集锦对于PHP的session功能,始终找不到合适的答案,尤其是一些错误,还有一些没有错误的结果,最可怕的就是后者,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。 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()调到程序的第一行。 2.

phpsessid?jspp下载安装

错误提示

Warning: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed

分析及解决方法

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

session_save_path= c: emp

session.cookie_path= c: emp

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

错误提示

Warning: Trying to destroy uninitialized session in

分析及解决方法

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

最简单的方法是:

echo SID;

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

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

注:此问题,会出PHP4.1.2中,更高版本,没有测试过。 6.问:用session做登录主页面后,其它页面怎么用session限制登录。。。

答:最简单的方法是

session_start();

if(!session_registered('login')││$login!= true){

echo"你没有登陆";

exit;

} 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做为一个参数,传到后一个页面。 8.session如何传数组

session_register('data');

$data=array(1,2,3,4);方法是先注册后赋值 9.问题9:我是不是可以用像$HTTP_GET_VARS['**']方式来访问session值呢?回答:可以,你可以使用如下global数组来访问session,以加强网页的安全性

$HTTP_SESSION_VARS

$_SESSION

例程:

session_start();

$username='stangly.wrong';

session_register('username'); echo$HTTP_SESSION_VARS['username'];

echo'

';

echo$_SESSION['username'];

?>

请参照此例程修改符合您自己的程序。问题10:session_unregister()和 session_destroy()有何区别?

session_unregister()函数主要作用是注消当前的一sion.(译自于php.net)例程:

if(isset($_COOKIE[session_name()])){

session_start();

session_destroy();

unset($_COOKIE[session_name()]);

}

以上,所述是一些新手经常遇到的问题。或许是详述不清,难免有误所在,请高手指点批评。

php中的session的配置今天调试程序遇到了session的设置问题,网上这篇文章比较好,共拿来学习,并供大家参考。

转载自旅行论坛

首先打开php.ini文件,找到session的部分:(分号后面的是注释) [Session]

; Handler used to store/retrieve data.

session.save_handler= files;这个是session的方式,默认的files就可以了,代表用文件储存; Argument passed to save_handler. In the case of files, this is the path where data files are stored.

session.save_path=/tmp;这个是session的保存路径,比如你是c盘,那么默认就是c:/tmp,所以如果出现“Warning: open(/tmpsess_cc8b04f146a1e0494bc464305da92ea1, O_RDWR) failed”这样子的错误,你可以修改这个路径,或者在根目录下面建立一个tmp的文件夹; Whether to use cookies.

session.use_cookies= 1; sessionid的传递方式,默认是cookie,推荐使用; Name of the session(used as cookie name).

session.name= PHPSESSID; sessionid的名称,保存在cookie里面的,要避免同名; Initialize session on request startup.

session.auto_start= 0;是否自动启动session,默认为不是,不需要修改; Lifetime in seconds of cookie or, if 0, until browser is restarted.

session.cookie_lifetime= 0; sessionid的cookie生存时间,0代表知道浏览器关闭; The path for which the cookie is valid.

session.cookie_path=/; sessionid的cookie路径,不需要修改; The domain for which the cookie is valid.

session.cookie_domain=;;sessionid的cookie域名,不需要修改; Handler used to serialize data. php is the standard serializer of PHP.

session.serialize_handler= php;保存data的默认文件名后缀,不需要修改; Percentual probability that the'garbage collection' process is started on every session initialization.

session.gc_probability= 1; After this number of seconds, stored data will be seen as'garbage' and cleaned up by the garbage collection process.

session.gc_maxlifetime= 1440; session文件的保存时间; Check HTTP Referer to invalidate externally stored URLs containing ids.

session.referer_check=; How many bytes to read from the file.

session.entropy_length= 0; Specified here to create the session id.

session.entropy_file=;session.entropy_length= 16;session.entropy_file=/dev/urandom; Set to{nocache,private,public} to determine HTTP caching aspects.

session.cache_limiter= nocache; Document expires after n minutes.

session.cache_expire= 180; use transient sid support if enabled by compiling with--enable-trans-sid.

session.use_trans_sid= 1 url_rewriter.tags="a=href,area=href,frame=src,input=src,form=fakeentry"======================================================================

session的生命周期是多长 1浏览器结束时其生命周期也同时结束,但是档案仍然存在于/tmp/(sess_???)

2下次重新开浏览器时会重新分配 sessionID,如果你使用 session_id()把以前的 ID带回来,

则会去读取残存在/tmp处的 sess_???,取回你之前所有已经设定的参数

3可以在 php.ini里修改 session档案残存的时间 session.gc_maxlifetime= 1440; after this number of seconds, stored

; data will be seen as'garbage' and

; cleaned up by the gc process默认是 1440秒,24分钟

=========================================================================使用无限生命期Session的方法

在PHP4.0中加入了对Session的支持,方便了我们很多程序,比如购物车等等!

在很多论坛中,Session也用于处理用户的登陆,记录下用户名和密码,使得用户不必每次都输入自己的用户名和密码!但是一般的Session的生命期有限,如果用户关闭了浏览器,就不能保存Session的变量了!那么怎么样可以实现Session的永久生命期呢?

大家知道,Session储存在服务器端,根据客户端提供的SessionID来得到这个用户的文件,然后读取文件,取得变量的值,SessionID可以使用客户端的Cookie或者Http1.1协议的Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录……

要实现Session的永久生命期,首先需要了解一下php.ini关于Session的相关设置(打开php.ini文件,在“[Session]”部分):

1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递;

2、session.name:这个就是SessionID储存的变量名称,可能是Cookie,也可能是Query_String来传递,默认值“PHPSESSID”;

3、session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以Session不能永久使用!

4、session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除!

还有很多的设置,不过和本文相关的就是这些了,下面开始讲使用永久Session的原理和步骤。

前面说过,服务器通过SessionID来读取Session的数据,但是一般浏览器传送的SessionID在浏览器关闭后就没有了,那么我们只需要人为的设置SessionID并且保存下来,不就可以……

如果你拥有服务器的操作权限,那么设置这个非常非常的简单,只是需要进行如下的步骤:

1、把“session.use_cookies”设置为1,打开Cookie储存SessionID,不过默认就是1,一般不用修改;

2、把“session.cookie_lifetime”改为正无穷(当然没有正无穷的参数,不过999999999和正无穷也没有什么区别);

3、把“session.gc_maxlifetime”设置为和“session.cookie_lifetime”一样的时间;

设置完毕后,打开编辑器,输入如下的代码:

------------------------------------------------------------------------------------<?php session_start();

session_register('count');

$count++;

echo$count;

?>

------------------------------------------------------------------------------------

然后保存为“session_check.php”,用浏览器打开“session_check.php”,看看显示的是不是“1”,再关闭浏览器,然后再打开浏览器访问“session_check.php”,如果显示“2”,那么恭喜了,你已经成功;如果失败的话,请检查你前面的设置。

但是如果你没有服务器的操作权限,那就比较麻烦了,你需要通过PHP程序改写SessionID来实现永久的Session数据保存。查查php.net的函数手册,可以见到有“session_id”这个函数:如果没有设置参数,那么将返回当前的SessionID,如果设置了参数,就会将当前的SessionID设置为给出的值……

只要利用永久性的Cookie加上“session_id”函数,就可以实现永久Session数据保存了!

但是为了方便,我们需要知道服务器设置的“session.name”,但是一般用户都没有权限查看服务器的php.ini设置,不过PHP提供了一个非常好的函数“phpinfo”,利用这个可以查看几乎所有的PHP信息!

------------------------------------------------------------------------------------

------------------------------------------------------------------------------------

打开编辑器,输入上面的代码,然后在浏览器中运行这个程序,会见到PHP的相关信息(如图1所示)。其中有一项“session.name”的参数(图中已经标出),这个就是我们需要的服务器“session.name”,一般是“PHPSESSID”。

记下了SessionID的名称后,我们就可以实现永久的Session数据储存了!

打开编辑器,输入下面的代码:

------------------------------------------------------------------------------------

session_start();//启动Session

session_register('count');//注册Session变量Count

if(isset($PHPSESSID)){

session_id($PHPSESSID);

}//如果设置了$PHPSESSID,就将SessionID赋值为$PHPSESSID,否则生成SessionID

$PHPSESSID= session_id();//取得当前的SessionID

$count++;//变量count加1

setcookie('PHPSESSID',$PHPSESSID, time()+3156000);//储存SessionID到Cookie中

echo$count;//显示Session变量count的值

?>

------------------------------------------------------------------------------------保存之后,利用和刚才拥有服务器权限时候的检测一样的方法,检测是否成功的保存了SessionID。

后记:

其实真正的永久储存是不可能的,因为Cookie的保存时间有限,而服务器的空间也有限……

但是对于一些需要保存时间比较长的站点,以上方法就已经足够了!关于Session的其他应用,可

以参见zphp.com的文章。

最后,笔者的调试环境:Windows98DigExt(SE)+Apache+PHP 4.04。本文来自CSDN博客,转载请标明出处:

为什么设置php的session

一、介绍

PHP中session默认过期时间是1440S,超过这个时间没有页面刷新或者用户关闭了浏览器,session就会失效。

二、设置

session文件存储在服务器端,通过保存在用户端的SessionId与服务器进行交互,session的配置文件是php.ini,相关参数如下:

1.session.use_cookies= 1,默认1,代表SessionId通过cookie来传递,否则会用Query_String

2.session.name= PHPSESSID,默认PHPSESSID,代表SessionID储存的变量名称,可能是Cookie,也可能是Query_String来传递

3.session.cookie_lifetime= 604800,是SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID立即失效,这里我设置了7天

4.session.gc_maxlifetime= 604800,默认是1440,代表session在服务器端保留的时间,超过这个时间就会失效。这里我设置了7天,与客户端的cookie有效时间一致

三、其他情况

一般情况下把这四个值设置好之后就可以更改session的有效期了,但是当多个站点的session文件都保存在公用临时路径时,由于php的GC(Garbage Collector)机制,某个站点启动垃圾回收机制,都会把公用临时文件目录下的文件全部清除,这就会导致session失效,解决方法就是更改php.ini里session文件的保存路径:

session.save_path=‘你的路径’;

怎么把session统一到一个域

实现多域名下共用一个SESSION

要实现多域名共享session,首先就得了解SESSION的运行机制。基本概念我就不说了。

session是这样运行的:

用户A访问站点Y,如果站点Y执行了session_start();(以下假定session_start()总是存在)那么会产生一个 session_id,这个session id一般会以COOKIE的形式保存到用户A(我们可以通过在php.ini里设置session.use_only_cookies为1,强制SESSION ID必须以COOKIE传递。)。这时候SESSION ID表现为$_COOKIE['PHPSESSID'];(PHPSESSID可用session_name()函数来修改)

用户A接着访问,这个session id($_COOKIE['PHPSESSID'])就会在A每次访问Y的时候传送到站点Y。

在站点Y上,会有这么一个目录,是用来保存SESSION的实际数据的。站点Y接收到session id,然后通过session id,来获得与SESSION数据的关联,并返回SESSION数据。

可能聪明的你已经想到了,既然服务器端和客户端之间的SESSION是通过一个SESSION ID来联系,并且SESSION数据是以普通文件的形式保存在一个特定的文件夹里。

那么我们要实现不同域名,只需要满足以下两个条件:

1)不同域名的SESSION数据目录统一到一起,或者同步更新。2)对同一个客户,使用统一的一个SESSION ID

第一个条件的实现。

如果是同一台服务器,就不需要进行任何设置了。

如果是集群/分布式的,那么我想也不需要我来说了。。能做分布式应用的,在目录共享方面的经验应该比我丰富。我也没有进行过多服务器的测试,主客观条件的原因都有。

我在这里主要是想说一下第二个条件——使不同的域名,拥有统一的SESSION ID。

那我们应该怎么统一呢?

首先必须在不同域名之间传递这个SESSION ID,且由于 cookie必须是针对域名的,所以传递动作是由客户端来完成。如果传递过程不是由客户端来完成,那么接受传递的域名就不知道针对的是哪个客户。

其次就是修改接受传递的域名下的SESSION ID。

如何传递:

HTML里,我们可以使用很多种方法。例如

iframe

<iframe src=”"></iframe>

或者.js

<script type=”text/javascript” src=”"></script>

或者是一个img html元素

<img src=”"/>

只要能调用某个地址,就行。

在wml里,由于wml script的特点,我们无法使用script这样的形式来调用,而wml里也没iframe..但是我们还是可以通过img来实现传递的。

如何修改:

既然SESSION ID一般情况下是通过COOKIE来传递,那么我们只需要通过传递$_COOKIE['PHPSESSID'];即可。但是如果PHPSESSID被session_name改变了,我们又得修改setcookie中的PHPSESSID..这样就会变得很麻烦。。所以我们可以选择一个session特有的函数session_id来修改$_COOKIE['PHPSESSID'];

需要注意的几点:

如果session.use_only_cookies为0(PHP默认),那么session id有可能会以url或其他形式传递session_id()和session_name必须在session_start()前使用

以下是我写的一个简单的实现多域名的类。如果上面的看不太明白,可以看看我的这个多域名类。这个类是在HTML下以iframe形式实现的。

?

<?phpclass mdSession{function mdSession(){}function set($urls){if(!is_array($urls)){$urls=array($urls);}foreach($urls as$value){echo'<span style="position:absolute;visibility:hidden"><iframe src="'.$value.'?'.session_id().'"></iframe></span>';}return true;}function get(){session_id($_SERVER['QUERY_STRING']);session_start();return true;}function _set($urls){$obj=new mdSession();return$obj->set($urls);}function _get(){$obj=new mdSession();return$obj->get();}}?>?index.php:<?php? include"mdSession.php";?session_start();$_SESSION['php']="yogurt8";mdSession::_set(';);var_dump($_SESSION);?>?ses_get.php<?php?include"mdSession.php";mdSession::_get();?>?b.php:?session_start();var_dump($_SESSION);?先访问 然后在 看效果?在firefox与谷歌浏览器是没问题,但在 Ie下还是不行

关于phpsessid到此分享完毕,希望能帮助到您。

html登录按钮,html按钮超链接fread读取文件里面所有内容,为什么fread一直重复读取文件