用 jquery 实现一个 加载选中的例子

我们经常看到这样的东西: 当你保存个人资料的时候 ,在下拉框中选择了 你所在的省,城市;
当你下次在来到这个 页面的时候,页面显示的是你保存过的内容: 那这种效果怎么实现呢;
用jqery 去实现这个效果非常的方便, 下面我把实现的代码贴出来:
[html]
$(function(){
$(‘#select’).val(’001′);//测试一选中
//如果是$(‘#select’).val(’002′); 测试二 选中
})
[/html]
[html]
<select id=’select’>
<option value=’001′>测试一</option>
<option value=’002′>测试二</option>
<option value=’003′>测试三</option>
</select>
[/html]

王志博16:23

linux svn 安装与部署

下面是我整理的 svn 的 安装和 部署 的完整步骤 (多项目版本), 下面是我 今天下午自己使用然后总结的, 希望对你们有帮助
第一: 安装svn服务器端,从镜像下载安装svn服务器端
第二: 创建SVN 仓库 (创建的目录自己选择) 我把他创建 在 /usr/local/svn 下面了 (也就是我的所有的svn 项目都放在这下面)
svnadmin create /usr/local/svn/tarfly (第一个项目) ,
svnadmin create /usr/local/svn/zhibo (第二个项目)
第三: 配置 svn(进入 tarfly, zhibo))
(1)vi svnserve.conf //配置版本库信息和用户文件和用户密码文件的路径、版本库路径
[

# anon-access = read
# auth-access = write
# password-db = passwd
//这三行,前面的#号和空格去掉,变成
anon-access = none //改成none
auth-access = write
password-db = passwd
realm = yixin //改成自己的版本库
保存
(2)vi authz //文件,创建svn组和组用户的权限
[group]
tarfly= wzb,tarfly//创建一个tarfly的组,并制定两个用户gep和wce
[/] //制定根目录下的权限
@tarfly= rw //tarfly组用户权限为读写
* = r //其他用户只有读权限
保存退出
(3) vi passwd //创建或修改用户密码
[users]
wzb= 123456 //用户名为wzb的用户的密码为123456
tarfly= 123456 //。。。
保存退出

这样svn 就算创建好了,但是要把他启动

应该把他设置成开机就启动,修改方法如下
vi /etc/rc.local 打开自启动文件
在里面加入 ,加入的语句如下
svnserve -d -r /usr/local/svn/ (这样保证svn 能够开机启动)
svnserve -d -r /usr/local/svn 这个命令是启动SVN

SVN 仓库建立好了, 那么 我们要利用 SVN 的钩子 ,让SVN 仓库 和我们的WEB 项目同步 , 下面我写下我今天下午的配置方法

第一: 在你的 web 项目的地方 创建 一个目录 mkdir /data0/htdocs/tarfly 这是我的web 项目的目录
第二;增加svn 配置文件
其实是在你的 svn 仓库的 hooks 下面创建一个 文件 ,方法:tarfly 仓库为例:
vi /usr/local/svn/tarfly/hooks/post-commit
在里面加入下面的信息:
#!/bin/sh
[php]
#设置一些变量
SVN=/usr/bin/svn(这个地方我还没搞清楚为什么)
WEB=/data0/htdocs/tarfly#要更新的目录
export LANG=en_US.UTF-8
$SVN update $WEB –username 你的用户名 –password 你的密码
[/php]
保存退出.
然后 修改 这个post-commit 的权限为 777 chmod -R 777 post-commit

确保 :svn 仓库 的文件 和 web 项目同步的方法;

svn checkout svn://ip/项目名称 web地址 我的例子 svn checkout svn://ip/tarfly /data0/htdocs/tarfly (这样2 个地方的版本库就相同了 )

好了到 这里, svn 就全部搞定了, svn 可能不只是单独的这点东西, 还有很多东西, 但是, 个人感觉, 这点东西 在做项目的时候完全够用了 !
有不完美的地方希望大家指证!
王志博22:12

轻松实现cookie 的跨域问题

如何让 www.test.com 中设置的cookie 在 bbs.test.com,home.test.com 里面 运用呢? 只要用setcookie() 这个函数就可以轻松的搞定!
setcookie() 共有6 个参数:
第一: 键名
第二: 值
第三: 有效时间
第四: 作用域(/表示作用在跟目录下,/bbs 表示作用在bbs这个目录下)
第五: 域(.test.com) 这样设置就可以作用在整个域名下面
第六:规定是否通过安全的 HTTPS 连接来传输 cookie。

只要在 www.test.com 这个地方 设置 setcookie(‘test’,'test’,time()+3600,’/',’.test.com’);
这样就可以把整个Cookie 的信息 在所有的域下共享
轻松解决跨域问题!

王志博

自己的项目 完全同步 ucenter , 注册登录,同步更新信息

最近一直有朋友问我关于ucenter 同步的问题, 由于自己的下一个项目也有可能用到这方面的的功能; 于是昨天晚上写了一个用户注册登录的例子,去同步登录我自己的uchome , 和discuz 这两个项目;
第一: 添加新的应用(自定义添加)
应用名称写自己项目名称就可以;URL 写自己项目的URL ;应用IP 根据自己的情况填写;通信密钥越负责越好;应用类型选择其他;应用接口文件名称:自己定义(默认是uc.php) 这个文件一定要放在根目录/api/uc.php(这里面的内容可以在 ucenter 下载包里面的demo 里面直接copy); 这些填好了直接 保存, 会生段应用的 UCenter 配置信息, .把这段信息 赋值到 根目录下面的 config.inc.php(这个文件要在uc.php 包含的) 里面; uc.php 里面会加载很多的 包, 一定要确定这些包能正确加载到才能 通宵成功
第二: 确保项目的通信成功
注意: 所有的东西你可以 考 ucenter demo 里面的东西, 路径根据自己额需要具体的配置
API/uc.php inculde uc_client , 一共包含这几个文件 , 还有生成的ucenter 的配置信息 config.inc.php (这里面放入你自己的 数据的配置信息,库名称等)
这些信息都 配置争取可以确保成功

第三: 项目代码的书写
我把我自己的正项目放在 www.wangzhibo.com/uc.rar 里面, 欢迎大家下载!

王志博

完美解决 ecshop 和 jquery 不兼容的问题

ECSHOP 不兼容 JQUERY 是一直很困扰我们的问题, 今天终于找到了这个问题的解决方法!
jquery包:jquery-1.4.2.min.js
把下面的代码加入到transport.js 的最后面就可以完美解决:
[php]
if (Object.prototype.toJSONString){
var oldToJSONString = Object.toJSONString;
Object.prototype.toJSONString = function(){
if (arguments.length > 0){
return false;
}else{
return oldToJSONString.apply(this, arguments);
}
}
}
[/php]

php版本比较函数 version_compare()

看TP 的代码看到了这么一句:
[php]
if(version_compare(PHP_VERSION,’6.0.0′,’<’) ) {
}
[/php]
下面我来说下 version_compare()这个函数的意思,
php中比较php版本,一般用version_compare()函数

举个列子 version_compare(’5.2.6′,’6.0′,’>'); 5.2 是否大于6.0 版本;
version_compare(’5.2.6′,’6.0′,’<‘); 5.2 是否小于6.0 版本;
看到这里,你肯定明白了,这里你可以用各种 运算符号

mysql 防止注入的一个解决思路

上午看到这么一道题目:
请具体举一个有sql注入漏洞的php代码,并详细说明针对该代码进行对应的sql注入的步骤,以及提供对应的漏洞的修改的具体代码?
[php]
举例:http:://www.wangzhibo.com?id=1
$id = $_GET['id'];
$sql = "SELECT * FROM TABLE WHERE ID = $id";
从上面的 sql 我们可以看到很多安全问题,引号问题、and、or 等种种问题
eg: select * from table where id = 1 or 1=1;
我还是把我写的函数帖出来把

$sql = "SELECT * FROM TABLE WHERE ID = ‘%s’";
$mysql = new mysql();
$mysql->createSql($sql,$array($id));
//最后形成的sql: select * from table where id = ’1 or 1=1′
class mysql {
public function createSql($sql,$data = array()) {
if($data) {
$args = array_map(‘mysql_escape_string’, $data);
array_unshift($args, $sql);
return call_user_func_array(‘sprintf’, $args);
}
return $sql;
}
}
[/php]

欢迎交流

It is you i have loved

朋友问我有没有好听的英文歌, 好久没听了, 这首歌 突然浮现在我的脑海。 是我高中时候最喜欢的歌 .
旋律特别优美, 有空可以去听听
it is you i have loved
顺便把歌词帖出来
there is something that i see 从你看我的眼神中
in the way you look at me 我发现了一些东西
there s a smile 你的眼神里充满了微笑
there s a truth in your eyes 和信任
but an unexpected way 但是以一中想不到的方式
on this unexpected day 在意想不到的一天
could it mean this is 那是不是就意味着
where i belong 你是我的归属
it is you i have loved all along 我一直爱着的就是你

it s no more mystery 没有比这更神奇的了
it is finally clear to me 最后我明白了一切
you re the home my heart 你是我心灵的归属
searched for so long 你是我一直所要寻找的人
and it is you 是你
i have loved all along 我一直都爱的人

there were times i ran to hide 以前我还去掩饰
afraid to show the other side 我害怕把另一面展示给你看
alone in the night without you 在没有你的孤独的夜晚

but now i know just who you are 但是我现在知道你对我意味着什么
and i know you hold my heart 我知道占据着我的灵魂
finally this is where i belong 这是我最后的归属
it is you i have loved all along 你是我一直都爱的人

it s no more mystery 没有比这更神奇的了
it is finally clear to me 最后一切都明白了
you re the home my heart 你是我的心灵的寄居地
searched for so long 是我一直要找寻的
and it is you 是你
i have loved all along 我一直爱的人

over and over 一次又一次
i m filled with emotion 我满是激情
your love, it rushes 你给我的爱
through my veins 在我的血液里奔涌澎湃

and i am filled 我陶醉于这
with the sweetest devotion 甜蜜爱情
as i, i look into 当我看着你
your perfect face 你那完美的面颊

it s no more mystery 没有比这更神奇的了
it is finally clear to me 最后我明白了一切
you re the home my heart 你是我心灵的归属
searched for so long 你是我一直所要寻找的人
and it is you 是你
i have loved all along 我一直都爱的人

it s no more mystery 没有比这更神奇的了
it is finally clear to me 最后我明白了一切
you re the home my heart 你是我心灵的归属
searched for so long 你是我一直所要寻找的人
and it is you 是你
i have loved all along 我一直都爱的人

王志博23:38

dedecms 关于自定义频道列表 总结

自己想个dedecms 建立的频道都自定义模板文件 ,首先声明我是在 default 下面操作的;当生成页面的时候 ,页面会显示下面错误;
(第一个是默认的,把信息存在 default下面)
文章内容页总是出现:你会看到这个提示,那是因为你的系统无法识别某栏目的模型信息,或者你新建模型后,没为这个模型设计单独的模板。不同模型的文档浏览页的模板为:article_模型名字标识.htm 如“article_article.htm”,更多的信息你可以在频道模型管理的地方查看。

经过我的排查,如果你自己想指定模板的话,必须要 要自己新建立模板目录,不能放在default 下面
谨记: 如果自定义频道,务必要新建立模板文件夹

搞了我一晚上, 在看看他具体的源代码 ,睡觉喽。。。。
王志博0:06

权限验证函数 , strpos() 函数的运用

上午简单写了个权限函数:
[php]
/**
* 判断用户是否有权限
* @param $nowAction
* @return Bool
* @author tarfly
* @date 2010-9-13
*/
private function checkPrv($nowAction = ”) {
$actionList = $_SESSION['action_list'];//登录时把所存在的权限写入session里面
if ($actionList == ‘all’)
{
return true;
}
if(!strpos(‘,’ . $actionList . ‘,’, ‘,’ . $nowAction . ‘,’)) {//这个函数的运用值得思考
return false;
}else{
return true;
}
}
[/php]

strpos(‘,’ . $actionList . ‘,’, ‘,’ . $nowAction . ‘,’);这个地方为什么这样做呢 ?
举个例子说,1(作为一个单元) 是否存在(0,2,3);这里面,结果显而易见,不存在;
如果是 1 是否存在(123,1234,12345);我们是想判断1 这个单元是否存在,但是结果会返回 是存在,所有 就有问题了;
但是 按照我函数写的这样 ,1 ,是否存在 ,123,1234,12345, ;显而易见,肯定就不存在了,OK ,问题解决

用PHP写了一个function实现数组内每个元素之间加法的递代运算

今天精神特别大,不知道那来的激情,睡觉前就是想敲段代码…
找了个题,敲了敲。
写一个function实现数组内每个元素之间加法的递代运算?(注:数组元素全部为自然数)

例:
$data=array(1,2,3);
程序要求打印出数组每个数组元素相互之间各种可能性加法(包括元素自已本身加法)

1+1=2,1+2=3,1+3=4,
2+2=4,2+3=5,
3+3=6

打印出以下结果
Array
(
[0] => Array
(
[0] => 2
[1] => 3
[2] => 4
)
[1] => Array
(
[1] => 4
[2] => 5
)
[2] => Array
(
[2] => 6
)
);
考虑片刻,动手写了下面代码
[php]
/**
* 实现数组内每个元素之间加法的递代运算
* @date 2010/9/9
* @autor Tarfly
*/
$data=array(1,2,3,4);
$count = count($data);
for($i=0;$i<$count;$i++) {
for($j=$i;$j<count($data);$j++) {
$sum[$i][$j] = $data[$i] + $data[$j];
}
}
echo ‘<pre>’;
print_r($sum);
exit;
[/php]
肯定还有别的做法, 个人感觉这是最优的算法

王志博 0:30

PHP 执行计划任务

采用 smtp 发邮件的话,不是为所欲为的,每天只能发送200 封,而且发送邮件的时间也不能间隔太短。 简单的写了个计划任务函数 ,每隔 1 分钟发一次邮件
[php]
/**
* 执行计划任务
* @param lockfile 锁文件的路径
* @param runtime 间隔时间
* @retrun Bool
* @date 2010-9-8
* @author Tarfly
*/
private function runcron($lockfile,$runtime) {
$time = time();
if(is_writeable($lockfile)) {
$locktime = filemtime($lockfile);
}else{
@touch($lockfile);
}
if(($time – $locktime)>$runtime) {
@set_time_limit(1000);
@ignore_user_abort(TRUE);
file_put_contents($lockfile,’tarfly 邮件测试用例!’);
echo ‘可以发送下一封邮件了!’;
}
else{
return false;
}
}
[/php]
这不是真正的计划任务,只是有一个触发点,当到达这个触发点的时候,去执行计划任务函数,如果超过了计划时间,则执行计划任务;

读取目录下的所有的PHP 文件

[php]
/**
* 读取一个目录下的所有的后缀为php 的文件
* @param driector 目录
* @date 2010-9-7
* @author tarfly
*/
private function read_shipping($directory = ”) {
$dir = @opendir($directory);
while (false !== ($file = @readdir($dir)))
{
if (preg_match("/^.*?\.php$/", $file))
{
include_once($directory. ‘/’ .$file);
}
}
@closedir($dir);
}
[/php]
你可以改动扩展名,读取目录下的任何文件

实现PHP mkdir() 函数创建多级目录

简单的写了个php 自动创建多级目录的函数
[php]
<?php
/**
* 自动创建多层目录
* @date 2010/9/6
* @author tarfly
*/
function auoMkdir($dir) {
$dir = explode(‘/’,$dir);
for($i=0;$i<count($dir);$i++) {
$mkdir .= $dir[$i]."/";
@mkdir($mkdir);
}
}
$dir = ‘aa/bb/cc’;
auoMkdir($dir);
?>
[/php]
其实,php 本事的mkdir 函数就可以自动创建多级目录的 ,值要加上第三个参数为true 就行
mkdir($path,0777,true); 第一个参数是路径 第二个参数是权限,第三个参数是可以创建多长目录
王志博 22:22

把产品的配置信息存入文件缓存中

简单写了个小例子, 把缓存文件存入缓存当中, 主要运用了 var_export() 函数;
简单介绍下这个函数 函数类似与我们常用的 var_dump(); 返回的是变量的结构信息
还是把我写的小例子贴出来把

王志博23:36