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>错误提示
代码如下 | 复制代码 |
Warning: open(F:/webphpsessiondatasess_76666aecf239891edc98b5, 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目录,即可
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>可以用像 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']; ?> 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.
例程:
代码如下 | 复制代码 |
if(isset(_COOKIE[session_name()])) { session_start(); session_destroy(); unset(_COOKIE[session_name()]); } |
代码如下 | 复制代码 |
<?php //i字符 短整形 32位 4个字节 64位8个字节 //s字符 短整形 2个字节 //l字符 长整形 4个字节 //f字符 单精度浮点 4个字节 //d字符 双精度浮点 8个字节 function getascill($str) |
更多详细内容请查看:http://www.111cn.net/phper/php-function/php-ord.htm
实例二
代码如下 | 复制代码 |
<? |
通用的ASCII码对照表
图解ASCII码对照表图,以字符A为例
Dec表示十进制,如65
Hx表示十六进制,如41
Oct表示八进制,如101
Char表示显示字符,如A
ASCII码对照表图分为两个单元
1,控制字符 0-31和127
2,可显示字符 32-126
(1)48~57为0到9十个阿拉伯数字;
(2)65~90为26个大写英文字母;
(3)97~122号为26个小写英文字母;
(4)其它标点符号、运算符号等;
二,ASCII扩展码对照表
三,PHP字符转换函数说明
具体字符转换函数说明请参考[PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明]
十进制转二进制 decbin() 函数
十进制转八进制 decoct() 函数
十进制转十六进制 dechex() 函数
二进制转十六制进 bin2hex() 函数
二进制转十制进 bindec() 函数
八进制转十进制 octdec() 函数
十六进制转十进制 hexdec()函数
任意进制转换 base_convert() 函数
字符转换实例
实例一,如何把一个字符转换为二进制、八进制或十六进制,可以使用ord()函数先把字符转换为ASCII值,然后使用相应的进制转换函数进行转换,如下
a 这个字符转换为其二进制/八进制/十六进制,如下
a字符的十进制:ord('a'); //输出97
二进制:decbin(ord('a')); //输出1100001
八进制:decoct(ord('a')); //输出141
十六进制:dechex(ord('a')); //输出61
然后可以通过把各进制输出的结果对应上面ASCII码对照表图进行核对。
实例二,如何把一个二进制转换为十六进制或十进制,如a的二进制,如下
采用实例一的方法获取a字符的二进制
decbin(ord('a'));
然后把二进制转换为十六进制或十进制
十六进制:bin2hex(decbin(ord('a')));//输出31313030303031
二进制J:bindec(decbin(ord('a'))); //输出97
上面讨论的ord()函数,将在下一期中文字符编码研究系列中详细讨论。
四,参考资料
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
asciitable对照表图
维基百科ASCII
百度百科ASCII
本文章同时解决两个问题就是php 中require和include引用url和 php的文件编码转换函数问题,有需要的朋友可以看看哈,参考一下。
PHP配置中“allow_url_fopen”这个选项是打开了的话,可以使用url作为include或者require的参数。
以及 allow_url 相关的参数,具体可以参考php.ini中说明
对整个页面进行转换
该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用 NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正常显示。
另一个问题:
该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用 NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正常显示。
在php文件的头部加上下面三行代码:
代码如下 | 复制代码 |
mb_internal_encoding("gb2312"); // 这里的gb2312是你网站原来的编码 mb_http_output("HTML-ENTITIES"); ob_start('mb_output_handler'); |
使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展。
如果没有没有开启php的mbstring扩展,则需要做如下设置
在 PHP 众多预定义服务器变量中,$_SERVER["REQUEST_URI"] 算是经常用到的,但是这个变量只有 apache 才支持,因此,我们需要一个更加通用的方式来获取 REQUEST_URI 的值
代码如下 | 复制代码 |
<?php |
相关文章
Ecshop提示Only variables should be passed by reference in错误
在安装好ecshop软件之后我们打开首页时提示Only variables should be passed by reference in错误了,碰到这个问题是什么原因呢?下面我们就一起来看看解决办法吧。...2016-11-25- 409错误是什么?http 409错误怎么解决呢?不少站长在遇到这个错误代码之后都一筹莫展,本次一聚教程网为大家带来了详细的说明,快来看看吧。 409错误是什么: HTTP 40...2017-01-22
PHP session_start()很慢问题分析与解决办法
本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25- 414错误是HTTP协议状态码中的一种,很多都还不知道414错误是什么,以及不知道怎么解决414错误,那么就来看看小编带来的介绍吧。 414错误是什么: HTTP 414错误,(Requ...2017-01-22
- http 405错误是什么?http 405错误怎么解决?相信很多站长都在找这两个问题的答案,本次小编为大家带来了详细的教程,快来看看吧。 405错误是什么: HTTP 405错误是H...2017-01-22
php中json_decode()和json_encode()用法与中文不显示解决办法
本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。 php中json_decode()和json_encode() 1.json_decode(...2016-11-25- 在php中我们如果要导入excel数据我们通常会使用phpexcel插件了,但是有朋友会发与使用phpexcel导出数据出现身份证后四位是0000情况了,下面我们就来看解决办法。 最...2016-11-25
- 401是HTTP状态码的一种,属于“请示错误”,表示请求可能出错,已妨碍了服务器对请求的处理。具体的401错误是指:未授权,请求要求进行身份验证。登录后,服务器可能会返回对页面...2017-01-22
- http 402错误是什么?402错误较为少见,一般不轻易出现,下面小编就来告诉大家402错误是什么吧。 HTTP 402错误是HTTP状态码的一种,表示“要求付费”; 所求的...2017-01-22
- 411错误是HTTP协议状态码的一种,很多人都还不知道411错误是什么,本次一聚教程网将为大家进行解答,并且告诉大家411错误怎么解决。 411错误是什么: HTTP 411错误,(Lengt...2017-01-22
- Apache status 503 的原因大致有如下几种情况 : 1、 CPU 负载过高,服务器响应不过来,返回503 2、 系统连接数超限,超过MaxVhostClients的上限,返回503 3、 单IP连接数超限,超过M...2016-01-28
- 403错误是网站访问过程中,常见的错误提示。资源不可用,服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致,比如IIS或者apache设置了访问权限...2017-01-22
- 403错误是HTTP状态码的一种,属于“请示错误”,表示服务器拒绝请求。如果在搜索引擎尝试抓取您网站上的有效网页时显示此状态代码,那么,这可能是您的服务器或主机拒绝搜索...2017-01-22
- 412错误是什么?412错误怎么解决?本次一聚教程网将为大家带来详细的介绍,帮助大家全面了解412错误的意思以及解决412错误的方法。 412错误是什么: HTTP 412错误,(Precond...2017-01-22
- 今天用CPAN安装Term::ReadLine,报了个这样的错误 Going to read /root/.cpan/sources/modules/03modlist.data.gz Can't locate object method "data" via package "C...2016-11-25
- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 407错误是什么?407错误怎么解决?不少站长都遇到过407错误,下面小编将告诉大家如何处理407错误。 407错误是什么: HTTP 407错误是HTTP协议状态码的一种,表示需要代...2017-01-22
- HTTP 406错误是HTTP协议状态码的一种,表示无法使用请求的内容特性来响应请求的网页。一般是指客户端浏览器不接受所请求页面的 MIME 类型。 而MIME类型是在把输出...2017-01-22
- 410错误是HTTP协议状态码的一种,本次一聚教程网将为大家详细介绍HTTP 410错误是什么,以及410错误的解决办法。 410错误是什么: HTTP 410错误是HTTP协议状态码的...2017-01-22
- 每当遇到http错误代码为400,代表客户端发起的请求不符合服务器对请求的某些限制,或者请求本身存在一定的错误,那么HTTP 400错误怎么解决呢?请看下文介绍。 目前400错...2017-01-22