背景:最近ssl安全问题,难免在用户登录时也会多想想这方面的问题,而web端的登录什么的安全是一个长时间有方案处理的问题,但PC应用程序的自动登录安全防范,不是太多关于这方面的安全讨论的文章,近来有oauth2+ssl获取到token,通过token就能知道是谁,但这个token如何加密放哪儿是磁盘还是内存才能不被破解才能更安全呢?如果你的程序是c编译的是否真的就不会被反编译?参考腾讯的键盘屏蔽什么的投入成本是否太大了对于一些小的应用程序来说,想如何平衡,我想这确实是一个值得探讨的问题。
————————————————————————————————————————————————————
很多主流的网站都支持用户自动登录的功能,浏览器登录过一次之后,下次再访问就不用再输用户名密码了。
有一种糟糕的做法:
用户登录后在服务器端用session保存用户的登录数据,在客户端存键为sessionid的cookie;服务器处理请求时检查这个请求带来的sessionid,看是不是保存了对应的数据,如果有就自动登录,没有就让输入用户名密码。
这个做法,只要拿了别人的sessionid就可以用来登录了,非常不安全。
用户数据很重要,那些巨头的网站是怎么实现自动登录的呢?
回答一:
基本上都是通过保存sessionid来实现,如果想安全性好一点可以在服务器端做一个ip验证,看看两次登陆的ip是否一样,不过这个实现起来有问题,如果你是用着笔记本电脑,ip老变就有问题了,所以还是保存一个seesion比较靠谱。
如果其他人能拿到你的sessionid,那么也代表他完全可能拿到你的用户名密码,所以你的担心没有必要。
回答二:
我告诉你开源php框架的symfony中的一个很有名的扩展sfGuard是怎么做的,可能可以给你提供一些思路:
首先你的数据库需要一个rememberkey表:它包含了一下三个字段:
user_id, remember_key(string(32),unique), ip_address, 当然还有两个时间字段created_at和updated_at那几乎是必须有的就不提了。
如果用户在登录的时候勾选了remember me
那么用md5一个随机值,比如timestamp + rand(0, 9999999)产生一个remember_key。因为随机的变化还是很大的,所以remember_key几乎不可能会出重复的key。
然后把此key在客户端cookie和数据库各存放一份,cookie的存放时间就是你记住密码设置的时间长度,另外ip要记在数据库里面。
如果用户点击退出,那么在删除session的同时,也把cookie里的remember_key以及数据库对应的key那条记录删除,当然为了防止垃圾数据越来越多,此时也可以顺便把所有过了失效的key全部删除
如果用户下次访问页面但是session已经失效,那么检测是否有remember_key这个cookie,如果有的话,拿这个值以及访问的ip去数据库里找记录,如果找到了,那么这条记录的user_id对应的user就自动登录了。
当然你可以做一些修改,比如ip不见得是必须的,因为国内的用户ip会老变嘛。
来自:http://segmentfault.com/q/1010000000094837
————————————————————————————————————————————————————
很多主流的网站都支持用户自动登录的功能,浏览器登录过一次之后,下次再访问就不用再输用户名密码了。
有一种糟糕的做法:
用户登录后在服务器端用session保存用户的登录数据,在客户端存键为sessionid的cookie;服务器处理请求时检查这个请求带来的sessionid,看是不是保存了对应的数据,如果有就自动登录,没有就让输入用户名密码。
这个做法,只要拿了别人的sessionid就可以用来登录了,非常不安全。
用户数据很重要,那些巨头的网站是怎么实现自动登录的呢?
回答一:
基本上都是通过保存sessionid来实现,如果想安全性好一点可以在服务器端做一个ip验证,看看两次登陆的ip是否一样,不过这个实现起来有问题,如果你是用着笔记本电脑,ip老变就有问题了,所以还是保存一个seesion比较靠谱。
如果其他人能拿到你的sessionid,那么也代表他完全可能拿到你的用户名密码,所以你的担心没有必要。
回答二:
我告诉你开源php框架的symfony中的一个很有名的扩展sfGuard是怎么做的,可能可以给你提供一些思路:
首先你的数据库需要一个rememberkey表:它包含了一下三个字段:
user_id, remember_key(string(32),unique), ip_address, 当然还有两个时间字段created_at和updated_at那几乎是必须有的就不提了。
如果用户在登录的时候勾选了remember me
那么用md5一个随机值,比如timestamp + rand(0, 9999999)产生一个remember_key。因为随机的变化还是很大的,所以remember_key几乎不可能会出重复的key。
然后把此key在客户端cookie和数据库各存放一份,cookie的存放时间就是你记住密码设置的时间长度,另外ip要记在数据库里面。
如果用户点击退出,那么在删除session的同时,也把cookie里的remember_key以及数据库对应的key那条记录删除,当然为了防止垃圾数据越来越多,此时也可以顺便把所有过了失效的key全部删除
如果用户下次访问页面但是session已经失效,那么检测是否有remember_key这个cookie,如果有的话,拿这个值以及访问的ip去数据库里找记录,如果找到了,那么这条记录的user_id对应的user就自动登录了。
当然你可以做一些修改,比如ip不见得是必须的,因为国内的用户ip会老变嘛。
来自:http://segmentfault.com/q/1010000000094837
背景:有时获取到Url后要加个随机数刷新,是前端好还是后端好,都有利弊,但关键是都多少有些忘记了,找了下,找到了,贴下面。
JavaScript获取当前网页的URL代码,实际上这是一个有用的功能,有时候我们不想使用ASP/PHP/JSP等动态网页语言去截获URL中 的字符串,用JS可减轻服务器压力,而且速度也比较快,灵活性高,示例中,我们可以获得本页面的URL,从网址根目录开始,一直到本页面的URl。同时它 还可取得网站的域名。
来自:http://l758.com/newsinfo/75.html
php如何获取当前链接(包括参数)?
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
请教一下php如何获取当前链接+参数?
$_SERVER['HTTP_HOST']
$_SERVER['REQUEST_URI']
JavaScript获取当前网页的URL代码,实际上这是一个有用的功能,有时候我们不想使用ASP/PHP/JSP等动态网页语言去截获URL中 的字符串,用JS可减轻服务器压力,而且速度也比较快,灵活性高,示例中,我们可以获得本页面的URL,从网址根目录开始,一直到本页面的URl。同时它 还可取得网站的域名。
来自:http://l758.com/newsinfo/75.html
php如何获取当前链接(包括参数)?
echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
请教一下php如何获取当前链接+参数?
$_SERVER['HTTP_HOST']
$_SERVER['REQUEST_URI']
背景:在虚拟主机域名里安装dokuwiki,出现:Parse error: syntax error, unexpected $end, expecting ',' or ';' in /home/jackxiang/domains/jackxiang.com/public_html/wiki/inc/html.php on line 1082 ,但是自己的测试机用的apache里没有这个问题,Nginx下也没有这个问题,查了下,原来是虚拟主机没有打开:short_open_tag:short_open_tag On On 。
PHP报错:Parse error: syntax error, unexpected $end, expecting T_FUNCTION in...
The error may caused by a missing curly bracket in PHP script coding. Beside, it may also caused by error in PHP coding in class definition, as in PHP, a class definition cannot be broke up and distributed into multiple files, or into multiple PHP blocks, unless the break is within a method declaration.
首先要检查是不是缺少了PHP脚本的结束标记, "?>" 或者缺少了 ";"或者是“}”;还有一个原因是一个PHP类的代码不能在多个文件或者多个PHP块。
原来Parse error 提示一般是 语法错误,使用了开放的标签,语句没有结束 也就是编程基本的一些错, 比如没注意 语句结束加 ";" 或者 if(){...} 后面忘了"}" ;〈?php...?〉忘了“?〉”。仔细检查代码,果然是一处漏掉了“}”,修改程序正常运行.
But more commonly, the error is often caused by the use of Short Open tags in PHP,
To use short open tags, it must be enabled in PHP.INI. Search for short_open_tag in PHP.INI, and change the value to On. The line should look line:
short_open_tag = On
如果没有错,则:
其实更多的也是最主要的是因为使用了<? ?>的简写标签,这就需要在PHP.ini中开启短标签,设置方法是打开php.ini,找到short_open_tag = Off,修改为short_open_tag = On。
short_open_tag On On
来自:http://hi.baidu.com/luoziding/item/e34dc12d25c0ba9fb6326369
PHP报错:Parse error: syntax error, unexpected $end, expecting T_FUNCTION in...
The error may caused by a missing curly bracket in PHP script coding. Beside, it may also caused by error in PHP coding in class definition, as in PHP, a class definition cannot be broke up and distributed into multiple files, or into multiple PHP blocks, unless the break is within a method declaration.
首先要检查是不是缺少了PHP脚本的结束标记, "?>" 或者缺少了 ";"或者是“}”;还有一个原因是一个PHP类的代码不能在多个文件或者多个PHP块。
原来Parse error 提示一般是 语法错误,使用了开放的标签,语句没有结束 也就是编程基本的一些错, 比如没注意 语句结束加 ";" 或者 if(){...} 后面忘了"}" ;〈?php...?〉忘了“?〉”。仔细检查代码,果然是一处漏掉了“}”,修改程序正常运行.
But more commonly, the error is often caused by the use of Short Open tags in PHP,
To use short open tags, it must be enabled in PHP.INI. Search for short_open_tag in PHP.INI, and change the value to On. The line should look line:
short_open_tag = On
如果没有错,则:
其实更多的也是最主要的是因为使用了<? ?>的简写标签,这就需要在PHP.ini中开启短标签,设置方法是打开php.ini,找到short_open_tag = Off,修改为short_open_tag = On。
short_open_tag On On
来自:http://hi.baidu.com/luoziding/item/e34dc12d25c0ba9fb6326369
背景:博客下面要写XXXX-Now Year,有点像公司成立多少年,以前估计的是2007年写在博客底部了,但估计不是很真实,今天突然想起 ,可以从那博客的最早的一篇博客是什么时候写的哩?于是查了一下,那个时候我也就开始用回忆未来这人名了,进入新浪后,偶听到后来在中南大学毕业的张宴和我是同事,也叫回忆未来(中间不知有多少兄弟说我是山寨的,呵呵,但我一直坚持未修改网名,,中间辗转换了好几个域名:xiangdong.org,happycun.com,3gpnet.com,jackxiang.com ,后直接托管给bo-blog的作者bob帮我打理了好几年,一直没有动,中间还换成vps了,后又让bob打理了两年,现在一直还在打理,中间也提醒过安全及升级,后主机由国内转到国外,出现偶连接不上美国的服务器,在这中间多少次想换wordpress但都没有换成,几经评估,博客数量都快上7千了,大多数是copy过来的,这些年没事就copy也不少了,看着wordpress长起来的,也从中想换bo-blog成wordpress,但一直也没有换,把它当笔记本使,主要是还是它运行相对快一些(快就是用户体验),就这样用bo-blog用了八年,用回忆未来的网名也用了八年,从北京到深圳,再回北京,转战南北,要是在当年抗日战争时期,打日本鬼子都胜利了,真是个值得值得纪念的日子。),可转眼八年过去了,时光荏苒,岁月如梭啊。
select count(*) from boblog_blogs;
+-----+
6882
+-----+
select blogid,title,pubtime from boblog_blogs order by pubtime asc limit 10;
blogid title pubtime
2 群殴时总结的技巧 1155018983
3 大学打架手册 1155049193
4 给大学生的忠告,不是真理,但是足够你用四年 1155049223
6 黄家驹的歌曲片段 1155259448
7 勤奋不是成功的根本原因 1155307410
8 少走弯路的十大忠告 1155307458
9 如果你是男人,请记住这二十二条忠告 1155307569
10 华为的笑话:老实人在华为 1155307651
11 手表的等级分类 1155307701
12 子网掩码计算方法 1155307744
mysql> SELECT FROM_UNIXTIME(1155018983);
+---------------------------+
| FROM_UNIXTIME(1155018983) |
+---------------------------+
| 2006-08-08 14:36:23 |
+---------------------------+
1 row in set (0.01 sec)
感慨良久:2006年8月8日,我的个天,那时还上大学,那时我还上大三,对技术涉及还很少,都是些心灵鸡汤的事,还在考虑是否跨个专业考研还是工作,到现在都8年了,时间真是快啊,但那又怎样,生活还得继续,人生的路还得狂奔不止一路走下去,fight ,come on,加油。
阅读全文
select count(*) from boblog_blogs;
+-----+
6882
+-----+
select blogid,title,pubtime from boblog_blogs order by pubtime asc limit 10;
blogid title pubtime
2 群殴时总结的技巧 1155018983
3 大学打架手册 1155049193
4 给大学生的忠告,不是真理,但是足够你用四年 1155049223
6 黄家驹的歌曲片段 1155259448
7 勤奋不是成功的根本原因 1155307410
8 少走弯路的十大忠告 1155307458
9 如果你是男人,请记住这二十二条忠告 1155307569
10 华为的笑话:老实人在华为 1155307651
11 手表的等级分类 1155307701
12 子网掩码计算方法 1155307744
mysql> SELECT FROM_UNIXTIME(1155018983);
+---------------------------+
| FROM_UNIXTIME(1155018983) |
+---------------------------+
| 2006-08-08 14:36:23 |
+---------------------------+
1 row in set (0.01 sec)
感慨良久:2006年8月8日,我的个天,那时还上大学,那时我还上大三,对技术涉及还很少,都是些心灵鸡汤的事,还在考虑是否跨个专业考研还是工作,到现在都8年了,时间真是快啊,但那又怎样,生活还得继续,人生的路还得狂奔不止一路走下去,fight ,come on,加油。
阅读全文
背景:防止盗链,大多数能搞定,但防止抓取有些困难。curl 模拟浏览器头和refer及Curl模仿http浏览器常见命令:http://www.jackxiang.com/post/6641/
.htaccess
DirectoryIndex search.php
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^$ [NC]
RewriteCond %{HTTP_REFERER} !^http://你的网站IP [NC,OR]
RewriteRule ^search_result.php search.php
如果HTTP_REFERER为空或者与指定的网站IP不匹配。访问search_result.php时跳到search.php.
[NC] ,[OR]这个我也不太懂。望高手指点下。
摘自:http://yulei568.blog.163.com/blog/static/135886720084231390136/
更多相关:http://www.jb51.net/os/RedHat/1060.html
.htaccess
DirectoryIndex search.php
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^$ [NC]
RewriteCond %{HTTP_REFERER} !^http://你的网站IP [NC,OR]
RewriteRule ^search_result.php search.php
如果HTTP_REFERER为空或者与指定的网站IP不匹配。访问search_result.php时跳到search.php.
[NC] ,[OR]这个我也不太懂。望高手指点下。
摘自:http://yulei568.blog.163.com/blog/static/135886720084231390136/
更多相关:http://www.jb51.net/os/RedHat/1060.html
关于Sina Weibo PHPSDK里的php <?= > 输出不了的问题
Php/Js/Shell/Go jack 2014-4-13 14:13
背景:下了一个新浪微博的PHPSDK,里面有<?=$a?>输出,但是我用的wamp套件输出不了,换成echo就能输出来。
php <?= > 问题
$i = o;<?= $i ?>为什么输不出来结果呢?换成echo就能输出来,我很奇怪,是不是我的配置文件没配好,请大家帮帮我!谢谢
在php.ini文件中设置short_open_tag为on即可,但是不建议使用这种简短风格的写法!
规范写法:<?php echo $i; ?>
————————————————————————————————————
解决方法:
wamp默 认有2个地方
; - short_open_tag = Off [Portability]
short_open_tag = Off
当 在wamp里php里勾选short open tag时,这两个地方都变成On
需要改2个地方吗?验证ing
; - short_open_tag = Off [Portability]
short_open_tag = On 不行,重启也不行
; - short_open_tag = On [Portability]
short_open_tag = On 不行,重启也不行
把 php里的short open tag勾选了,才行,php.ini都是On,其他并未改变,难道还有别的文件?
搜索发现有2个 php.ini
C:\wamp\bin\php\php5.2.8
C:\wamp\bin\apache\Apache2.2.11\bin
现 在wamp里勾选,apache文件夹里的ini变成2个on,php文件夹里的还是off。
使用phpinfo查看,最终证明只有 C:\wamp\bin\apache\Apache2.2.11\bin\php.ini里的一个short_open_tag = On管用,而且编辑文本不会使wamp的勾选变化。
要在PHP文件中的PHP.INI文件改了才起作用.
摘自:http://hi.baidu.com/123123la/item/e84c431eb823f9fe65eabf98
实践如下:
打开wamp后,在任务栏里左键,找到PHP项,后在PHP-》PHP设置里的short open tag勾选上。
short_open_tag = On //如只编辑php.ini的文本不会使wamp的勾选变化。
php <?= > 问题
$i = o;<?= $i ?>为什么输不出来结果呢?换成echo就能输出来,我很奇怪,是不是我的配置文件没配好,请大家帮帮我!谢谢
在php.ini文件中设置short_open_tag为on即可,但是不建议使用这种简短风格的写法!
规范写法:<?php echo $i; ?>
————————————————————————————————————
解决方法:
wamp默 认有2个地方
; - short_open_tag = Off [Portability]
short_open_tag = Off
当 在wamp里php里勾选short open tag时,这两个地方都变成On
需要改2个地方吗?验证ing
; - short_open_tag = Off [Portability]
short_open_tag = On 不行,重启也不行
; - short_open_tag = On [Portability]
short_open_tag = On 不行,重启也不行
把 php里的short open tag勾选了,才行,php.ini都是On,其他并未改变,难道还有别的文件?
搜索发现有2个 php.ini
C:\wamp\bin\php\php5.2.8
C:\wamp\bin\apache\Apache2.2.11\bin
现 在wamp里勾选,apache文件夹里的ini变成2个on,php文件夹里的还是off。
使用phpinfo查看,最终证明只有 C:\wamp\bin\apache\Apache2.2.11\bin\php.ini里的一个short_open_tag = On管用,而且编辑文本不会使wamp的勾选变化。
要在PHP文件中的PHP.INI文件改了才起作用.
摘自:http://hi.baidu.com/123123la/item/e84c431eb823f9fe65eabf98
实践如下:
打开wamp后,在任务栏里左键,找到PHP项,后在PHP-》PHP设置里的short open tag勾选上。
short_open_tag = On //如只编辑php.ini的文本不会使wamp的勾选变化。
基于统计的冗余设计
如:
count(*)操作。
需要不精准结果,可以直接show table status like …获得。
需要精准结果,可以在缓存层增加key-value对,实时更新该key-value。同时异步更新到数据库中冗余字段,或冗余表中。
查询数据表有多少行,多少容量
不要使用select count(*)
使用show table status like ‘table_name’ 但是innodb的话会有50%左右的浮动,是个预估值
阅读全文
如:
count(*)操作。
需要不精准结果,可以直接show table status like …获得。
需要精准结果,可以在缓存层增加key-value对,实时更新该key-value。同时异步更新到数据库中冗余字段,或冗余表中。
查询数据表有多少行,多少容量
不要使用select count(*)
使用show table status like ‘table_name’ 但是innodb的话会有50%左右的浮动,是个预估值
阅读全文
近来翻墙后访问facebook后,突然跑到: www.facebook.com.gos.saveinter.net,一看就不是 facebook 啊,saveinter.net 是挂在 GODADDY.COM 服务提供商下面的网站,Facebook 需要 godaddy 提供服务? 可以直接判定为钓鱼了!此网站是一个钓鱼网站无误。
最后,无论域名多少长,最后的两位才是真正的有效域名,比如这个域名中的 saveinter.net 就是一个例子,无论前面有多长的字符都是 saveinter.net 的二级域名。二级域名表明都是 saveinter.net 的子域,跟 facebook.com 毫无关系,无论前面提到了 facebook.com 什么云云。都是忽悠的,这就是传中的钓鱼,呵呵。网上不安全,时刻要警醒。
最后,无论域名多少长,最后的两位才是真正的有效域名,比如这个域名中的 saveinter.net 就是一个例子,无论前面有多长的字符都是 saveinter.net 的二级域名。二级域名表明都是 saveinter.net 的子域,跟 facebook.com 毫无关系,无论前面提到了 facebook.com 什么云云。都是忽悠的,这就是传中的钓鱼,呵呵。网上不安全,时刻要警醒。
背景:
Linux 下的权限比较起Windows是个问题,但它保证了其安全性,Cache 会出现 chmod(): Operation not permitted 这个讯息。查看 cache 目录应该是 PHP 以 safe mode 执行的关系,所以没办法建出 777 权限目录。
php -i|grep safe_mode
safe_mode => Off => Off
—————————————————想办法以try catch实现抓权限———————————————————————————
问:PHP在Linux下以www运行为了确保你要读取的WEB页面可以访问,如何才能获得文件的相关属性?
答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用请参阅手册。
来自:http://jingyan.baidu.com/article/bea41d4346a1b2b4c51be6a1.html
文件:fileowner.php
运行:
php fileowner.php
48
48是谁?
vi /etc/passwd 找48即可,是www,如下:
www:x:48:48::/home/www:/sbin/nologin
更多函数一块写:
文件:fileInfo.php
运行情况:
文件拥有者id:48
文件属组id:48
文件权限值:0644
更多PHP手册函数:
http://www.wapm.cn/phpdoc/zh/function.fileperms.html
http://www.w3school.com.cn/php/func_filesystem_filegroup.asp
http://www.w3school.com.cn/php/func_filesystem_fileowner.asp
php异常捕获try catch实例解析:
http://www.jbxue.com/article/10331.html
—————————————————以try catch实现对其权限不够的不活并写入日志—————————————————
permitted.php
这块故意给它一个root权限,chown -R root permitted.php
去执行和写的权限:chmod a-xw permitted.txt
在web下运行结果,tail -f /tmp/logPermissionFile4My.txt :
DateTime:2014-03-25 13:23:22
Error on line 7 in /data/htdocs/tools.jackxiang.com/fileowner.php, ErrorException[Warning]:chmod():Operation not permitted
文件拥有者id:0
文件属组id:0
文件权限值:0444
Linux 下的权限比较起Windows是个问题,但它保证了其安全性,Cache 会出现 chmod(): Operation not permitted 这个讯息。查看 cache 目录应该是 PHP 以 safe mode 执行的关系,所以没办法建出 777 权限目录。
php -i|grep safe_mode
safe_mode => Off => Off
—————————————————想办法以try catch实现抓权限———————————————————————————
问:PHP在Linux下以www运行为了确保你要读取的WEB页面可以访问,如何才能获得文件的相关属性?
答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用请参阅手册。
来自:http://jingyan.baidu.com/article/bea41d4346a1b2b4c51be6a1.html
文件:fileowner.php
运行:
php fileowner.php
48
48是谁?
vi /etc/passwd 找48即可,是www,如下:
www:x:48:48::/home/www:/sbin/nologin
更多函数一块写:
文件:fileInfo.php
运行情况:
文件拥有者id:48
文件属组id:48
文件权限值:0644
更多PHP手册函数:
http://www.wapm.cn/phpdoc/zh/function.fileperms.html
http://www.w3school.com.cn/php/func_filesystem_filegroup.asp
http://www.w3school.com.cn/php/func_filesystem_fileowner.asp
php异常捕获try catch实例解析:
http://www.jbxue.com/article/10331.html
—————————————————以try catch实现对其权限不够的不活并写入日志—————————————————
permitted.php
这块故意给它一个root权限,chown -R root permitted.php
去执行和写的权限:chmod a-xw permitted.txt
在web下运行结果,tail -f /tmp/logPermissionFile4My.txt :
DateTime:2014-03-25 13:23:22
Error on line 7 in /data/htdocs/tools.jackxiang.com/fileowner.php, ErrorException[Warning]:chmod():Operation not permitted
文件拥有者id:0
文件属组id:0
文件权限值:0444
js detect image 404,read the HTTP header to check for 404 with jQuery without performing an ajax request
Php/Js/Shell/Go jack 2014-3-24 18:02
js detect image 404:
一、用Ajax,代码量较长:
二、用图像的onerror函数实现判断404,实践OK:
_________________________________________________________________________
来自:http://forums.mozillazine.org/viewtopic.php?f=25&t=315570
Hello All,
can do this either by Jquery or Javascript...
来自:
http://www.coderanch.com/t/624410/HTML-CSS-JavaScript/check-url-returns-error-status
一、用Ajax,代码量较长:
二、用图像的onerror函数实现判断404,实践OK:
_________________________________________________________________________
来自:http://forums.mozillazine.org/viewtopic.php?f=25&t=315570
Hello All,
can do this either by Jquery or Javascript...
来自:
http://www.coderanch.com/t/624410/HTML-CSS-JavaScript/check-url-returns-error-status
[实践OK]PHP 遇到mysql header不致的问题:Headers and client library minor version mismatch是myql不同版本同在一台机器上导致的,如何卸载重新安装以成功避免。
Php/Js/Shell/Go jack 2014-3-19 16:10
Percona MySQL 升級 5.6 後, PHP 的 mysql_connect() 就出現下述警告(Warning)訊息:
PHP Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50531 Library:50613 ...
Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50153 Library:50613 in /data/htdocs/jackxiang.com/libraries/database/mysqlrw.php on line 271
要如何解決?
实践Ok步骤及注意点:
第一点:出现这种情况的可能性必定是因为这个Linux不是纯净的Linux,里面以前有rpm,或低版本的Mysql安装,如何解决之:
第一步:干掉所有的mysql相关的rpm包:
rpm -qa | grep -i mysql | xargs rpm -e --allmatches --nodeps
第二步:是干掉所有相关mysql的各种通过源码安装的安装包及动态库:
find /usr -name "mysql" -exec rm -rf {} \;
find /usr -name "my*" -exec rm {} \;
这下一下子就清静了。
注意点:
1)有可能出现你是干掉了,但是你再安装时还是出现上述错误,为何:
这涉及到有可能关于编译make的问题,makefile如果你颠倒了(也就是你先编译后,再去删除mysql,重新编译(没有clean掉生成的so,.a),因为之前编译的还在,它引用的还是原来的那个mysql header,依旧不行滴。),为此,你得先干死mysql,php,然后是把它们的目录挪动到加上-bak的,如:mysql-bak。
2)把源码包删除掉,重新tar 解压出一份目录,mysql再cmake,php再进行./configure。当然,如果通过make clean能清完,也可以不用删除再重新解包,我是直接删除,再完全重新编译。
总之,不能让先前安装好的包,先前编译的源码包里沾染上原来旧版本的mysql包,这才是核心,否则,编译出来问题依旧,达不到想要的目的。
阅读全文
PHP Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50531 Library:50613 ...
Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50153 Library:50613 in /data/htdocs/jackxiang.com/libraries/database/mysqlrw.php on line 271
要如何解決?
实践Ok步骤及注意点:
第一点:出现这种情况的可能性必定是因为这个Linux不是纯净的Linux,里面以前有rpm,或低版本的Mysql安装,如何解决之:
第一步:干掉所有的mysql相关的rpm包:
rpm -qa | grep -i mysql | xargs rpm -e --allmatches --nodeps
第二步:是干掉所有相关mysql的各种通过源码安装的安装包及动态库:
find /usr -name "mysql" -exec rm -rf {} \;
find /usr -name "my*" -exec rm {} \;
这下一下子就清静了。
注意点:
1)有可能出现你是干掉了,但是你再安装时还是出现上述错误,为何:
这涉及到有可能关于编译make的问题,makefile如果你颠倒了(也就是你先编译后,再去删除mysql,重新编译(没有clean掉生成的so,.a),因为之前编译的还在,它引用的还是原来的那个mysql header,依旧不行滴。),为此,你得先干死mysql,php,然后是把它们的目录挪动到加上-bak的,如:mysql-bak。
2)把源码包删除掉,重新tar 解压出一份目录,mysql再cmake,php再进行./configure。当然,如果通过make clean能清完,也可以不用删除再重新解包,我是直接删除,再完全重新编译。
总之,不能让先前安装好的包,先前编译的源码包里沾染上原来旧版本的mysql包,这才是核心,否则,编译出来问题依旧,达不到想要的目的。
阅读全文
修改 /etc/ssh/ssh_config
vim /etc/ssh/ssh_config
GSSAPIAuthentication no
----------------------------------
修改 /etc/ssh/ssh_config
vim /etc/ssh/ssh_config
在server 把GSSAPIAuthentication yes
后面的yes 改成no
然后/etc/init.d/sshd restart
来自:http://jafy00.blog.51cto.com/2594646/810716
http://fleiou2008.blog.163.com/blog/static/819810172012631111922846/
vim /etc/ssh/ssh_config
GSSAPIAuthentication no
----------------------------------
修改 /etc/ssh/ssh_config
vim /etc/ssh/ssh_config
在server 把GSSAPIAuthentication yes
后面的yes 改成no
然后/etc/init.d/sshd restart
来自:http://jafy00.blog.51cto.com/2594646/810716
http://fleiou2008.blog.163.com/blog/static/819810172012631111922846/
Fix broken UTF8 encoded RSS feeds in php,RSS出现“Input is not proper UTF-8, indicate encoding !”的解决方法。
Php/Js/Shell/Go jack 2014-3-19 10:14
背景:输出xml提示:error on line 323 at column 23: Input is not proper UTF-8, indicate encoding !<username><![CDATA[*这儿有一个隐藏字符*執↘著]]></username>,去掉就好了,但是这个是用户的输入。
RSS出现“Input is not proper UTF-8, indicate encoding !”的解决方法:
This page contains the following errors:
error on line 402 at column 25: Input is not proper UTF-8, indicate encoding !
Bytes: 0×07 0×43 0×68 0×61
Below is a rendering of the page up to the first error.
搜索一下,说是内容中有不完整的utf8字符导致xml解析器出错。
根据提示的错误位置,把附近的文字复制到Emeditor中,那个隐藏的不完整字符出现了,Emeditor中是用一个大黑点表示的,删除后把文本复制回去,搞定。
上面这个不是长久办法,最后一老外有一篇文章:
http://www.mybelovedphp.com/2009/07/03/fix-broken-utf8-encoded-rss-feeds-in-php/
RSS出现“Input is not proper UTF-8, indicate encoding !”的解决方法:
This page contains the following errors:
error on line 402 at column 25: Input is not proper UTF-8, indicate encoding !
Bytes: 0×07 0×43 0×68 0×61
Below is a rendering of the page up to the first error.
搜索一下,说是内容中有不完整的utf8字符导致xml解析器出错。
根据提示的错误位置,把附近的文字复制到Emeditor中,那个隐藏的不完整字符出现了,Emeditor中是用一个大黑点表示的,删除后把文本复制回去,搞定。
上面这个不是长久办法,最后一老外有一篇文章:
http://www.mybelovedphp.com/2009/07/03/fix-broken-utf8-encoded-rss-feeds-in-php/
linux shell 脚本实现监听端口的shel协议通讯(重定向应用)。
Unix/LinuxC技术 jack 2014-3-17 22:04
零、一段监听端口的shell:
摘自:http://ajiewps.sinaapp.com/?p=266
一、通过shell脚本重定向实现监控memcache状态:
通过nc命令实现:
[chengmo@centos5 shell]$ (echo "stats")|nc 127.0.0.1 11211
二、通过重定向读取远程web服务器头信息:
(echo -e "HEAD / HTTP/1.1\n\n\n\n\n";sleep 2)|telnet www.baidu.com 80
参考:http://www.cnblogs.com/chengmo/archive/2010/10/22/1858302.html
摘自:http://ajiewps.sinaapp.com/?p=266
一、通过shell脚本重定向实现监控memcache状态:
通过nc命令实现:
[chengmo@centos5 shell]$ (echo "stats")|nc 127.0.0.1 11211
二、通过重定向读取远程web服务器头信息:
(echo -e "HEAD / HTTP/1.1\n\n\n\n\n";sleep 2)|telnet www.baidu.com 80
参考:http://www.cnblogs.com/chengmo/archive/2010/10/22/1858302.html
MD5数值大小写有关系吗?无!php-md5变换算法之大小写变换干涉代码。
Php/Js/Shell/Go jack 2014-3-14 17:11
背景:外包对下一个客户端的MD5值里的字母是大小写敏感,说道:你的md5怎么给成大写的了?之前不是给的小写的?我是想问一下你们 这个值确定是大写还是小写 还是不确定?我的回答是:我想说的是你得兼容。
C++也有PHP这样的类似函数:http://www.zedwood.com/article/cpp-strtoupper-function
Continuing on with our efforts to replicate the php string manipulation with C++ and the STL, I have implemented strtoupper() and strtolower();
由于PHP所提供的md5()函数返回的密文中的英文字母全部都是小写的,因此我们可以把它们全部转为大写,然后再进行一次MD5运算。
来自:
http://zhidao.baidu.com/question/54522503.html
http://www.oschina.net/code/snippet_59519_2946
C++也有PHP这样的类似函数:http://www.zedwood.com/article/cpp-strtoupper-function
Continuing on with our efforts to replicate the php string manipulation with C++ and the STL, I have implemented strtoupper() and strtolower();
由于PHP所提供的md5()函数返回的密文中的英文字母全部都是小写的,因此我们可以把它们全部转为大写,然后再进行一次MD5运算。
来自:
http://zhidao.baidu.com/question/54522503.html
http://www.oschina.net/code/snippet_59519_2946




