我爱她,就如

洞洞鞋一样,更甚

她一直陪着我,这个春夏,未来的秋冬

她很好

她说我的朋友不好

我的朋友说她不好

她的朋友我不喜欢

然后,她还是很好

或许,我很不好——

但是,希望这个秋天

她很好,就算错过

  • Share/Bookmark

PHP session 失效不传递的解决办法

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配置,作为临时解决方法很管用,我今天的一个问题就是这么解决的,谢谢作者

大功告成。

  • Share/Bookmark

疯狂的柠檬博客突破500IP

这样的IP,不多,也不算少,多少有点欣慰

应该是最近更新比较频繁,长尾词多了不少,主要是和技术有关的,虽然文章很菜,但搜的人还是多的

无奈,很多技术核心的东西只有E文的,很累,中文很难找到

主要来源:RTX破解通达OA破解,等等,这一类主要是百度的,说明百度很支持破解或盗版的东西,而google则比较内敛

谷歌:一些linux相关文章,虽然没什么水平的,还有类似什么是五毛党的政治类东西,google比较重技术,也不回避政治;当然,我也不喜欢政治,只是跟风调侃,自娱自乐

百度与google的来源比列约为190:70,这并不能说明用百度的比google的多,只能说中文上应该不相上下吧,毕竟很多是技术贴,我觉得学技术的人不会很喜欢用百度找东西;而疯狂的柠檬之前被谷歌降过权,通过申斥回来的IP不会太多,希望会慢慢多起来,以超过百度

其它的,有道,微软必应,狗狗,基本一日一次,有点无语,难道用的人就这么少么,还是他们和主流搜索引擎的世界观太不一样

  • Share/Bookmark

博客惊现异常

Results for http://www.crazylemon.net/
Checked From   Result KBytes Seconds Kbps
Dortmund, Germany (5 Mbps)   Der Remoteserver hat einen Fehler zurückgegeben: (500) Interner Serverfehler. 0.00 0.81 0
Beijing, China (5 Mbps)   远程服务器返回错误: (500) 内部服务器错误。 0.00 0.69 0
Sydney, Australia (5 Mbps)   (500) Internal Server Error. 0.00 0.84 0
Gloucester, UK (5 Mbps)   OK 51.11 2.11 194
Chicago, IL (45 Mbps)   OK 51.11 1.64 249
Los Angeles, CA (1.5 Mbps)   OK 51.08 1.52 270
Santiago, Chile (760 Kbps)   (500) Internal Server Error. 0.00 0.66 0
Complete.

如上图表,使用http://internetsupervision.com测试,不过还好我还是可以访问的

不知道php或http的执行方式是怎么样,是对每个客户端区别对待的?

因为有时一个页面不能正常打开,或说卡壳了,但在另一浏览器中打开又是正常的

然后关了原来的浏览器重新打开,也是正常的,可能是区别对待的吧,要死,也只死在一个对话里

  • Share/Bookmark

Parallels Power Panel之Container

买了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端口居然还是坚挺着,赞一个

  • Share/Bookmark

相关部门

相关部门,或有关部门,很难判定么

在中国,就是这么

今天来了个老朋友,国安调查过的

  • Share/Bookmark

职业

他们微微动动手,大部份只是用眼睛,而我却快耗尽了大脑,想着一些莫明其妙的问题,似乎累了

  • Share/Bookmark

8.21

上午和土人两个人吃了六碗炝肉,他更多点,土人就是土人

很久没通宵了

最近迷上微软的小游戏,喜欢这简单的规则,不简单的难度

女友说永别了,我不知道女人的永远到底有多久,只是她们一向说话是没有道理成份的,而我喜欢讲道理,讲自己而非别人认为的道理

下午听歌,很久没听,无所适从,左右为难,连自己想不想听,想听什么都不知道

最近很少喝酒,牙更敏感了,生活还是折腾,如果不能习惯,那就有点白活了

  • Share/Bookmark

Zen Cart HTML Editor问题

Zen Cart后台有个功能,在Configuration->my store->HTML Editor里,可以选择是否在后台使用HTML编辑器来编辑产品描述等

但应该很多人碰到这个问题,就是选择了HTMLAREA之后,仍然是纯文本编辑框

查看了代码才知道,原因是这个选择在程序中是记录在session中的,你如果不退出游览器重开或session没超时,是不生效的

很低级的问题,但很烦人

  • Share/Bookmark

MYSQL 字符集

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打开表时发现乱码,可能是字符集不匹配,可以试着换连接字符集

  • Share/Bookmark