洞洞鞋一样,更甚
她一直陪着我,这个春夏,未来的秋冬
她很好
她说我的朋友不好
我的朋友说她不好
她的朋友我不喜欢
然后,她还是很好
或许,我很不好——
但是,希望这个秋天
她很好,就算错过
PHP中,session不能传递到下一个页面去,一般有两种情况:
我们先写个php文件:<?=phpinfo()?>, 传到服务器去看看服务器的参数配置。
转到session部分,看到session.use_trans_sid参数被设为了零。
这个参数指定了是否启用透明SID支持,即session是否随着URL传递。我个人的理解是,一旦这个参数被设为0,那么每个URL都会启一个session。这样后面页面就无法追踪得到前面一个页面的session,也就是我们所说的无法传递。两个页面在服务器端生成了两个session文件,且无关联。(不知道这样理解对不对?请高手指教。)
所以一个办法是在配置文件php.ini里把session.use_trans_sid的值改成1。
当然我们知道,不是谁都有权限去改php的配置的,那么还有什么间接的解决办法呢?
下面就用两个实例来说明吧:
文件1 test1.php
<?php
//表明是使用用户ID为标识的session
session_id(SID);
//启动session
session_start();
//将session的name赋值为Havi
$_SESSION['name']=”Havi”;
//输出session,并设置超链接到第二页test2.php
echo “<a href=\”test2.php\”>”.$_SESSION['name'].”</a>”;
?>
文件2: test2.php
<?php
表明是使用用户ID为标识的session
session_id(SID);
//启动session
session_start();
//输出test1.php中传递的session。
echo “This is “.$_SESSION['name'];
?>
所以,重点是在session_start();前加上session_id(SID);,这样页面转换时,服务器使用的是用户保存在服务器session文件夹里的session,解决了传递的问题。
不过有同鞋会反映说,这样一来,多个用户的session写在一个SID里了,那Session的价值就发挥不出来了。所以还有一招来解决此问题,不用加session_id(SID);前提是你对服务器的php.ini有配置的权限:
output_buffering改成ON,道理就不表了。
第二个可能的原因是对服务器保存session的文件夹没有读取的权限,还是回到phpinfo.php中,查看session保存的地址:
session.save_path: var/tmp
所以就是检查下var/tmp文件夹是否可写。
写一个文件:test3.php来测试一下:
<?
echo var_dump(is_writeable(ini_get(“session.save_path”)));
?>
如果返回bool(false),证明文件夹写权限被限制了,那就换个文件夹咯,在你编写的网页里加入:
//设置当前目录下session子文件夹为session保存路径。
$sessSavePath = dirname(__FILE__).’/session/’;
//如果新路径可读可写(可通过FTP上变更文件夹属性为777实现),则让该路径生效。
if(is_writeable($sessSavePath) && is_readable($sessSavePath))
{session_save_path($sessSavePath);}
最后一种方法挺不错的,不用改php配置,作为临时解决方法很管用,我今天的一个问题就是这么解决的,谢谢作者
大功告成。
这样的IP,不多,也不算少,多少有点欣慰
应该是最近更新比较频繁,长尾词多了不少,主要是和技术有关的,虽然文章很菜,但搜的人还是多的
无奈,很多技术核心的东西只有E文的,很累,中文很难找到
主要来源:RTX破解,通达OA破解,等等,这一类主要是百度的,说明百度很支持破解或盗版的东西,而google则比较内敛
谷歌:一些linux相关文章,虽然没什么水平的,还有类似什么是五毛党的政治类东西,google比较重技术,也不回避政治;当然,我也不喜欢政治,只是跟风调侃,自娱自乐
百度与google的来源比列约为190:70,这并不能说明用百度的比google的多,只能说中文上应该不相上下吧,毕竟很多是技术贴,我觉得学技术的人不会很喜欢用百度找东西;而疯狂的柠檬之前被谷歌降过权,通过申斥回来的IP不会太多,希望会慢慢多起来,以超过百度
其它的,有道,微软必应,狗狗,基本一日一次,有点无语,难道用的人就这么少么,还是他们和主流搜索引擎的世界观太不一样
| Results for http://www.crazylemon.net/ | |||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
如上图表,使用http://internetsupervision.com测试,不过还好我还是可以访问的
不知道php或http的执行方式是怎么样,是对每个客户端区别对待的?
因为有时一个页面不能正常打开,或说卡壳了,但在另一浏览器中打开又是正常的
然后关了原来的浏览器重新打开,也是正常的,可能是区别对待的吧,要死,也只死在一个对话里
买了VPS,预装cpanel,对方提供了除了一个
https://xxx.xxx.xxx.xxx:2086/
或
http://xxx.xxx.xxx.xxx:2087/(ssl加密)
还有一个这样的地址:
Virtuozzo Power Panel
https://xxx.xxx.xxx.xxx:4643/
登陆进去便是Parallels Power Panel了,这东西应该是个虚拟机管理系统,但不知道有什么用
直到有次VPS连接不上了,ping不通,不知道是网络故障还是死机或莫名关机了,无奈下登陆入这个Parallels Power Panel
提示Container是挂起状态,我不知道这个Container是什么东西,容易?有必要运行么
在对比了另一台VPS后,发现这个是该运行的,遂启动它,OK了,VPS正常了
业务不熟害死人,一键能搞定的事情,还在等老外回复,汗自己一个
另外的,ping不通这个IP并不意味着这个IP的一切都连不上,关于端口或端口映射的懂得不是很多,但至少,在其它端口无法访问时,这个开放给Virtuozzo Power Panel的4636端口居然还是坚挺着,赞一个
MySQL的字符集支持(Character Set Support)有两个方面:
字符集(Character set)和排序方式(Collation)。
对于字符集的支持细化到四个层次:
服务器(server),数据库(database),数据表(table)和连接(connection)。
1.MySQL默认字符集
MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。
但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?
(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;
(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;
(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
简单的总结一下,如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用 latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。
2.查看默认字符集(默认情况下,mysql的字符集是latin1(ISO_8859_1)
通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令:
mysql> SHOW VARIABLES LIKE ‘character%’;
+————————–+———————————+
| Variable_name | Value |
+————————–+———————————+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:”mysql-5.0.37″share”charsets” |
+————————–+———————————+
mysql> SHOW VARIABLES LIKE ‘collation_%’;
+———————-+—————–+
| Variable_name | Value |
+———————-+—————–+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+———————-+—————–+
3.修改默认字符集
(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,
如 default-character-set = utf8
character_set_server = utf8
修改完后,重启mysql的服务,service mysql restart
使用 mysql> SHOW VARIABLES LIKE ‘character%’;查看,发现数据库编码均已改成utf8
+————————–+———————————+
| Variable_name | Value |
+————————–+———————————+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:”mysql-5.0.37″share”charsets” |
+————————–+———————————+
(2) 还有一种修改字符集的方法,就是使用mysql的命令
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
一般就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES ‘utf8′;
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
总结:
因此,使用什么数据库版本,不管是3.x,还是4.0.x还是4.1.x,其实对我们来说不重要,重要的有二:
1) 正确的设定数据库编码.MySQL4.0以下版本的字符集总是默认ISO8859-1,MySQL4.1在安装的时候会让你选择。如果你准备使用UTF- 8,那么在创建数据库的时候就要指定好UTF-8(创建好以后也可以改,4.1以上版本还可以单独指定表的字符集)
2) 正确的设定数据库connection编码.设置好数据库的编码后,在连接数据库时候,应该指定connection的编码,比如使用jdbc连接时,指定连接为utf8方式.
另外的,navicat可以设置连接所使用的字符集,如果用navicat打开表时发现乱码,可能是字符集不匹配,可以试着换连接字符集
Arclite theme by digitalnature | powered by WordPress