2009-10-22 / php+Mysql
<?php

//定义操作页面
define('CURscrīpt', 'logging');

//包含公共文件
require_once './include/common.inc.php';
//包含misc函数文件
require_once DISCUZ_ROOT.'./include/misc.func.php';
//判断动作
//注销
if($action == 'logout' && !empty($formhash) && $formhash == FORMHASH) {
//清除cookies
clearcookies();
//重置用户状态为游客
阅读全文...
2009-10-22 / php+Mysql
discuz提供了通行证 可有时候使用通行证不一定适用 就比如说那一段很长很长的url吧 看着就让人心烦

有什么解决方法捏? 那就是生成一个discuz 验证cookie

废话说完了 开始正题:
开始之前 咱先了解一下discuz的登陆机制
先来一个简单的form

<?php <form action='i_login.php'>
user:<input name='username' type='text'>
password:<input name='password' type='password'>
<input type='submit' value='login'阅读全文...
2009-10-22 / php+Mysql

康盛的 authcode 函数可以说对中国的PHP界作出了重大贡献。包括康盛自己的产品,以及大部分中国使用PHP的公司都用这个函数进行加密,authcode 是使用异或运算进行加密和解密。

原理如下,假如:

加密

明文:1010 1001

密匙:1110 0011

密文:0100 1010

得出密文0100 1010,解密之需和密匙异或下就可以了

解密

密文:0100 1010

阅读全文...
2009-10-09 / php+Mysql
忽然间想到这东西,
<?php
$str="dsadfdf";
$co=strlen($str);
for($i=$co;$i>=0;$i--){
echo $str{$i};
}
?>阅读全文...
2009-09-19 / php+Mysql

from_unixtime()是MySQL里的时间函数
date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串
后面的 '%Y%m%d' 主要是将返回值格式化
例如:
mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' )  
->20071120
mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y年%m月%d' )
->2007年11月20
UNIX_TIMESTAMP()是与之相对正好相反的时间函数

阅读全文...
2009-09-19 / php+Mysql
错误路径泄露
1.漏洞原因:
PHP遇到错误时,就会给出出错脚本的位置、行数和原因,例如:
Notice: Use of undefined constant test - assumed ''test'' in D:interpubbigflytest.php on line 3
有很多人说,这并没有什么大不了。但泄露了实际路径的后果是不堪设想的,对于某些入侵者,这个信息可是非常重要,而事实上现在有很多的服务器都存在这个问题。
有些网管干脆把PHP配置文件中的display_errors设置为Off来解决,但本人认为这个方法过于消极。有些时候,我们的确需要PHP返回错误的信息以便调试。而且在出错时也可能需要给用户一个交待,甚至导航到另一页面。
2.漏洞解决:
PHP从4.1.0开始提供了自定义错误处理句柄的功能函数set_error_handler(),但很阅读全文...
2009-09-19 / php+Mysql
在php中,我们一般通过$_SERVER['HTTP_HOST']来活得URL中网站的域名或者ip地址。php手册中的解释如下:

“HTTP_HOST”
当前请求的 Host: 头信息的内容。

一般来说,这样子不会遇到什么问题,在一些常见的php框架中,如PFC3和FLEA也是基于该预定义变量。

然而最近在做的一个项目,程序移交到客户手里测试时,竟然发现程序的跳转总是会出错。

最后找出原因:$_SERVER['HTTP_HOST']在客户的环境里,取得的值总是程序所在的服务器在其局域网内的ip值。

究其原因,是因为,客户的公司通过一台服务器连接至因特网,而我们的程序所在的服务器,是通过域名映射出来的,也就是中间有个“代理”的过程。因此$_SERVER['HTTP_HOST']在这样的环境里,取得的值总是程序所在的服务器在其局域网内的ip值。

阅读全文...
2009-07-24 / php+Mysql
PHP版本: <?PHP echo PHP_VERSION; ?>
ZEND版本: <?PHP echo zend_version(); ?>
MYSQL支持: <?php echo function_exists(mysql_close)?"是":"否"; ?>
MySQL数据库持续连接: <?php echo @get_cfg_var("mysql.allow_persistent")?"是":"否"; ?>
MySQL最大连接数: <?php echo @get_cfg_var("mysql.max_links")==-1 ? "不限" : @get_cfg_var("mysql.max_links");?>
阅读全文...
2009-07-20 / php+Mysql
onst DIR_SEP = DIRECTORY_SEPARATOR;// 路径分割 win下 linux下/

    /**
     * 构造方法
     *
     * @return void
     */
    private function __construct()
    {
        $this->_options = array(
     阅读全文...
2009-07-19 / php+Mysql

当我第一次见到php模板的时候,简直被迷上了。原来php世界里还有这么好的东西。我疯狂地学习。
好在当时的php模板还不是很庞大,很快我了解了它的原理,并也能自己写一些了。
后来,smarty横空出世,更是拥有了许多为它着迷的fans.许多人开始写模板引擎,将smarty或其他模板加以改造,使之符合自己的需要。
纵观当今模板世界,php模板引擎主要分为两种:
一种是替换特定字串型的。美工做出来的页面,中间会嵌入一些什么{block.title}这样的字符串,然后程序读入这个模板文件,将中间的{block.title}的字样替换成实际从数据库中读取的内容。
还 有一种符杂一些,是一种编译型的。以smarty为代表,模板文件中实际上包含了一些简化的php代码,比如有的写的是< {=$site_name}>,<{if $counts>0 }>这样的语句,实际是一种自行定义的语言格式。web开发久的人一眼能看出它们指的是什么。这一类往往会在第一次访问时被预编译,转换成一个 php文件何存起来。比如 <{=$site_name}>就变成了,<{if $count>0 }> 就变成了0) {?>。从第二次起,就直接包含已经编译出来的php文件。当然,各种模板的处理的具体细节不一样。

阅读全文...