欢迎大家光临我的个人官方网站。在dlf5.net工作室没上线之前,我把dlf5.net域名跳转到dlf5.com个人博客。

发表于 winds | 5 条评论

Xshell 4 注册码 and Xftp 4 注册码

Xshell 4 注册码 690313-111999-999313

Xftp 4 注册码 101210-450789-147200

试用了不错,就找个注册码留着用。

发表在 未分类 | 评论关闭

ueditor-for-yii 所见即所得富文本web编辑器

ueditor-for-yii

最近看到百度开源的一个产品Ueditor 所见即所得富文本web编辑器,感觉很不错,最近又有一个项目,是用YiiFramework 开发的,就把Ueditor 用在这项目里了,于是就把它写成了extensions形式提供给大家下载!yii 地址:http://www.yiiframework.com/extension/ueditor-for-yii/        
由于文件大过2M上传不了到YII官方网站的extensions库里!不一会就好几个差评了!最来就把它上传到谷歌上面了!
如果有用到的话大家拿去吧!下载地址:http://code.google.com/p/ueditor-for-yii/downloads/list        
使用方法:

…how to use this extension…

把ueditor插件放到 extensions/ 在Html 调用

<?php   
    $this->widget('ext.ueditor.Ueditor',   
            array(   
                'getId'=>'Article_content',   
                'textarea'=>"Article[content]",   
                'imagePath'=>'/attachment/ueditor/',   
                'UEDITOR_HOME_URL'=>'/',   
            ));   
?>

订制Toolbars 方法

<?php   
    $this->widget('ext.ueditor.Ueditor',   
            array(   
                'getId'=>'Settings_about',   
                'minFrameHeight'=>180,   
                'textarea'=>"Article[content]",   
                'imagePath'=>'/attachment/ueditor/',   
                'UEDITOR_HOME_URL'=>'/',   
                'toolbars'=>"'Undo','Redo','ForeColor', 'BackColor', 'Bold','Italic','Underline', 'JustifyLeft','JustifyCenter','JustifyRight', ,'InsertImage','ImageNone','ImageLeft','ImageRight','ImageCenter',",   
            ));   
?>

 

关于UEditor

Ueditor概述 Ueditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于BSD协议,允许自由使用和使用代码 为什么使用Ueditor 体积小巧,性能优良,使用简单 分层架构,方便定制与扩展 满足不同层次用户需求,更加适合团队开发 丰富完善的中文文档 多个浏览器支持:Mozilla, MSIE, FireFox?, Maxthon,Safari 和Chrome 更好的使用体验 拥有专业QA团队持续支持,已应用在百度各大产品线上

发表在 YiiFramework | 评论关闭

新增新浪OAuth2.0登录、腾讯OAuth2.0登录 的YII扩展

新增第三方登录扩展

新浪OAuth2.0登录、腾讯OAuth2.0登录 的YII扩展

目前支持新浪微博、QQ账号

扩展下载地址:

https://github.com/windsdeng/oauth-login-for-yii

大家可以在本站体验体验。

如要代码的,可以直接下载本站代码。

欢迎大家下载学习。

 

https://github.com/windsdeng/dlfblog

 

写得不好,大家指导一下呀!

 

效果一

20121112093117.jpg

效果二

20121112093138.jpg

效果三

20121112093528.jpg

 

效果图的值:small_login and medium_login and big_login

登录的view文件PHP代码 :

<?php $this->widget('ext.oauthLogin.OauthLogin',array(
           'itemView'=>'medium_login'//效果样式
           'back_url'=>Yii::app()->homeUrl,//login成功后返回的页面
 )); ?>

插件配置
oauth-login-for-yii\config\main.php

<?php

/**
 * @var 新浪配置
 */
define( "WB_AKEY" '********' );
define( "WB_SKEY" '****************************************' );
define( "WB_CALLBACK_URL" 'http://demo.dlf5.net/site/wblogin');
  
/**
 * @var QQ配置
 */
  
define( "QQ_APPID" '********' );
define( "QQ_APPKEY" '****************************************' );
define( "QQ_CALLBACK_URL" ,'http://demo.dlf5.net/site/qqlogin');
?>
发表在 YiiFramework | 评论关闭

git与github在ubuntu下的使用

最近开始使用git对kohana3的文档做一些补充的工作,使用了git 和 github ,从了解到使用,还是有一点距离,下面是总结的一些方法。

1、Git的安装

我使用了ubuntu 10.04 ,默认情况下,ubuntu 中并没有安装,所以首先需要在系统中进行 git 的安装。

sudo apt-get install git-core

安装完成后,在终端中输入 git 就可以看到相关的命令了。如果只是需要使用git来管理本地的代码,那么现在就可以使用了。如果需要和github上的项目结合,还需要做其他的一些操作。

安装后的效果

2、github帐号的申请

如果只是需要将github上感兴趣的代码拷贝到本地,自己进行修改使用,而不打算共享发布的话,其实不申请帐号也没有关系,只需要 git clone 代码到本地就可以了。本文对这种方法不做讨论,毕竟使用 github 就是为了开源的目的。

首先去 github.com 上注册一个帐号,具体的注册流程就不赘述了。

3、在本地建立一个文件夹,然后做一些全局变量的初始化

git config –global user.name = “用户名或者用户ID”

git config –global user.email = “邮箱”

这两个选项会在以后的使用过程中自动添加到代码中。

4、创建验证用的公钥

这个是比较复杂和困扰大多数人的地方,因为 git 是通过 ssh 的方式访问资源库的,所以需要在本地创建验证用的文件。

使用命令:ssh-keygen -C ‘you email address@gmail.com’ -t rsa

会在用户目录 ~/.ssh/ 下建立相应的密钥文件

可以使用 ssh -v git@github.com 命令来测试链接是否畅通

5、上传公钥

在 github.com 的界面中 选择右上角的 Account Settings,然后选择 SSH Public Keys ,选择新加。

Title 可以随便命名,Key 的内容拷贝自 ~/.ssh/id_rsa.pub 中的内容,完成后,可以再使用 ssh -v git@github.com 进行测试。看到下面的信息表示验证成功。

进行到这里,我们也可以利用github来管理我们的项目和参与开源工作了,大体上使用git分为三种方式。

管理自己的项目

这种情况是自己在本地有一些代码,需要利用 github 来管理自己的项目,可以按照下面的步骤进行。

1、建立仓库

在需要建立项目的文件夹中,使用 git init 进行仓库的建立。完成后,可以看到文件家中多了一个 .git 隐藏目录。

2、添加文件

使用 git add . 来进行初始文件的添加。这里 . 表示将文件夹下所有的文件都添加进去,我们也可以指定文件进行添加。

3、提交文件

使用 git -m commit  -m ‘comment’ 提交,可以将编辑的内容进行提交。

通过 git show 可以看到项目的一些状态。

这是代码已经在本地管理了,但是本地管理完全体现不出git的优势。

利用github托管自己的项目

1、如果需要将自己的项目托管在github.com上,首先需要创建项目。在 Dashboard 中选择 Create New Repository,填入相关信息后,项目就创建成功了。

2、之后,会有一个如何上传的提示,如下图已经很详细了。

Fork别人的项目

前面提到过,如果只是下载使用别人的代码,通过 git clone 就可以了,当然clone的前提是项目必须是public的,私有的项目是没办法的。如果需要参与,可以通过fork,然后合并的方式。

1、首先需要去自己感兴趣的项目中进行Fork,fork出自己的一份分支来。fork之后,一般可以看到一个ssh访问的地址。例如:git@github.com:cocowool/userguide.git

2、复制代码

使用 git clone git@github.com:cocowool/userguide.git userguide 可以将代码复制到本地的 userguide 文件夹中

3、进行自己的修改,完成后请求原作者合并

 

git pull person master

 

下面是一些比较有用的命令的介绍:

 

# 创建一个版本库
git init
# 每次修改好了后,可以先将修改存入stage(快照/索引)中
git add <modified files>
# 修改了大量文件则使用下面这个命令批量存入
git add .
# 使用commit将快照/索引中的内容提交到版本库中
git commit -m "msg"
# 也可以将git add与git commit用一个指令完成
git commit -a -m "msg"
# 将本地的git档案与github(远程)上的同步
git push
# 将github(远程)的git档案与本地的同步(即更新本地端的repo)
git pull
# 例如,pull指令其实包含了fetch(將变更复制回來)以及merge(合并)操作
git pull git://github.com/tom/test.git

# 另外版本控制系統的branch功能也很有意思,若同时修改bug,又要加入新功能,可以fork出一个branch:一个专门修bug,一个专门加入新功能,等到稳定后再merge合并
git branch bug_fix # 建立branch,名为bug_fix
git checkout bug_fix # 切换到bug_fix
git checkout master #切换到主要的repo
git merge bug_fix #把bug_fix这个branch和现在的branch合并

# 若有remote的branch,想要查看并checkout
git branch -r # 查看远程branch
git checkout -b bug_fix_local bug_fix_remote #把本地端切换为远程的bug_fix_remote branch并命名为bug_fix_local

# 还有其它可以查看repo状态的工具
git log #可以查看每次commit的改变
git diff #可以查看最近一次改变的內容,加上参数可以看其它的改变并互相比较
git show #可以看某次的变更

# 若想知道目前工作树的状态,可以輸入
git status

http://www.cnblogs.com/cocowool/archive/2010/10/19/1855616.html
发表在 精彩转载 | 一条评论

Ubuntu 11.04下安装极点五笔输入法[转]

刚刚安装好了 Ubuntu 11.04,但是没有五笔的日子实在不好过,在网上一搜,居然有高手想到引用极点五笔的字典实现可以同时打拼音和五笔,下面看如何操作:

ibus下用法
在终端中执行如下操作
sudo wget http://www.xiit.cn/wp-content/uploads/2011/03/vissible-ibus.tar.gz
tar -zxvf vissible-ibus.tar.gz
sudo cp vissible.db /usr/share/ibus-table/tables
sudo cp vissible.gif /usr/share/ibus-table/icons
完成后,在点任务栏中那个键盘小图标,在下拉菜单选“重新重启” 重启ibus输入法,然后再点一下键盘小图标并在下拉菜单中选“首选项”,然后在弹出的窗口中点击“输入法”选项卡,接着点“选择输入法”>”汉语”,然后点”添加” 极点五笔,OK!

发表在 精彩转载 | 标签为 , , | 评论关闭

mysql的FIND_IN_SET函数意义及使用方法

mysql的 find_in_set函数使用方法

很多时候我们在设计数据库时有这种情况,比如:

有个文章表里面有个type字段,他存储的是文章类型,有 1头条,2推荐,3热点,4图文 …..11,12,13等等

现在有篇文章他既是 头条,又是热点,还是图文,

type中以 1,3,4的格式存储.

那们我们如何用sql查找所有type中有4图文标准的文章呢, www~phperz~com

这就要我们的find_in_set出马的时候到了.

先看mysql手册中find_in_set函数的语法:

FIND_IN_SET(str,strlist)
假如字符串str 在由N 子链组成的字符串列表strlist 中, 则返回值的范围在 1 到 N 之间 。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。 这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。

mysql> SELECT FIND_IN_SET(‘b’,’a,b,c,d’);

-> 2

用起来很简单

就以上面我说到的情况来举例: php程序员站

以下为引用的内容:
select * from article where FIND_IN_SET(’4′,type)

来源:http://blog.phpbk.com/2012/03/mysql%E7%9A%84find_in_set%E5%87%BD%E6%95%B0%E6%84%8F%E4%B9%89%E5%8F%8A%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/

 

发表在 精彩转载 | 标签为 , , | 一条评论

Yii在Nginx下的rewrite配置

1. Nginx配置
在nginx.conf的server {段添加类似如下代码:
Nginx.conf代码:
location / {
if (!-e $request_filename){
rewrite ^/(.*) /index.php last;
}
}

2. 在Yii的protected/conf/main.php去掉如下的注释
Php代码:
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'/'=>'/view',
'//'=>'/',
'/'=>'/',
),
),

发表在 YiiFramework, 精彩转载 | 标签为 , , , | 评论关闭

10位邀请百度网盘名额

  1. http://pan.baidu.com/netdisk/beinvited?invite_code=f9245654ac991f0da22b7ed1c06de37c
  2. http://pan.baidu.com/netdisk/beinvited?invite_code=9a062542e6afc3333012868a337d072f
  3. http://pan.baidu.com/netdisk/beinvited?invite_code=d60c2c73d7f272a237dfd22b1aa25670
  4. http://pan.baidu.com/netdisk/beinvited?invite_code=0769b72dbae3cd53319b7c0d1a47928a
  5. http://pan.baidu.com/netdisk/beinvited?invite_code=16e31ed241e87fae5d6843c111d28a50
  6. http://pan.baidu.com/netdisk/beinvited?invite_code=3390df53790896ba81ec672f78fe2486
  7. http://pan.baidu.com/netdisk/beinvited?invite_code=7f4abea559a115ca32d8f3f7c6367cbd
  8. http://pan.baidu.com/netdisk/beinvited?invite_code=ce698b77402436b38db3b51ca881948e
  9. http://pan.baidu.com/netdisk/beinvited?invite_code=3390df53790896ba81ec672f78fe2486
  10. http://pan.baidu.com/netdisk/beinvited?invite_code=c29049193568efc2542d020896a631cb
成功邀请好友,双方都可以获得300M的空间奖励,每个人仅有10位邀请名额,最多可获得3G的奖励空间
发表在 生活杂谈 | 标签为 , | 评论关闭

[转]php session丢失

抛开cookie使用session

PHP中SESSION不能跨页传递问题的解决办法

在PHP中使用过SESSION的朋友可能会碰到这么一个问题,SESSION变量不能跨页传递。这令我苦恼了好些日子,最终通过查资料思考并解决了这个问题。我认为,出现这个问题的原因有以下几点:

1、客户端禁用了cookie

2、浏览器出现问题,暂时无法存取cookie

3、php.ini中的session.use_trans_sid = 0或者编译时没有打开–enable-trans-sid选项

为什么会这样呢?下面我解释一下:

Session储存于服务器端(默认以文件方式存储session),根据客户端提供的session id来得到用户的文件,取得变量的值,session id可以使用客户端的Cookie或者Http1.1协议的Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录……。也就是说,session id是取得存储在服务上的session变量的身份证。当代码session_start();运行的时候,就在服务器上产生了一个session文件,随之也产生了与之唯一对应的一个session id,定义session变量以一定形式存储在刚才产生的session文件中。通过session id,可以取出定义的变量。跨页后,为了使用session,你必须又执行session_start();将又会产生一个session文件,与之对应产生相应的session id,用这个session id是取不出前面提到的第一个session文件中的变量的,因为这个session id不是打开它的“钥匙”。如果在session_start();之前加代码session_id($session id);将不产生新的session文件,直接读取与这个id对应的session文件。

PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了。必须注意的是:session不一定必须依赖cookie,这也是session相比cookie的高明之处。当客户端的Cookie被禁用或出现问题时,PHP会自动把session id附着在URL中,这样再通过session id就能跨页使用session变量了。但这种附着也是有一定条件的,即“php.ini中的session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid选项”。

明白了以上的道理,现在我们来抛开cookie使用session,主要途径有三条:

1、设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid选项,让PHP自动跨页传递session id。

2、手动通过URL传值、隐藏表单传递session id。

3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。

通过例子来说明吧:

 

 

s1.php

<?php

session_start();

$_SESSION['var1']=”中华人民共和国”;

$url=”<a href=”.”\”s2.php\”>下一页</a>”;

echo $url;

?>

s2.php

<?php

session_start();

echo ”传递的session变量var1的值为:”.$_SESSION['var1'];

?>


运行以上代码,在客户端cookie正常的情况下,应该可以在得到结果“中华人民共和国”。

现在你手动关闭客户端的cookie,再运行,可能得不到结果了吧。如果得不到结果,再“设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid选项”,又得到结果“中华人民共和国”

这也就是上面所说的途径1。

下面再说途径2:

修改的代码如下:

 

 

s1.php

<?php

session_start();

$_SESSION['var1']=”中华人民共和国”;

$sn = session_id();

$url=”<a href=”.”\”s2.php?s=”.$sn.”\”>下一页</a>”;

echo $url;

?>

s2.php

<?php

session_id($_GET['s']);

session_start();

echo ”传递的session变量var1的值为:”.$_SESSION['var1'];

?>


办法3还是通过例子来说明:

login.html

 

 

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>

<html>

<head>

<title>Login</title>

<meta http-equiv=”Content-Type” content=”text/html; charset=??????”>

</head>

<body>

请登录:

<form name=”login” method=”post” action=”mylogin1.php”>

用户名:<input type=”text” name=”name”><br>

口 令:<input type=”password” name=”pass”><br>

<input type=”submit” value=”登录”>

</form>

</body>

</html>

mylogin1.php

<?php

$name=$_POST['name'];

$pass=$_POST['pass'];

if(!$name || !$pass) {

echo ”用户名或密码为空,请<a href=\”login.html\”>重新登录</a>”;

die();

}

if (!($name==”laogong” && $pass==”123″)) {

echo ”用户名或密码不正确,请<a href=\”login.html\”>重新登录</a>”;

die();

}

//注册用户

ob_start();

session_start();

$_SESSION['user']= $name;

$psid=session_id();

$fp=fopen(“e:\\tmp\\phpsid.txt”,”w+”);

fwrite($fp,$psid);

fclose($fp);

//身份验证成功,进行相关操作

echo “已登录<br>”;

echo “<a href=\”mylogin2.php\”>下一页</a>”;

?>


mylogin2.php

 

 

<?php

$fp=fopen(“e:\\tmp\\phpsid.txt”,”r”);

$sid=fread($fp,1024);

fclose($fp);

session_id($sid);

session_start();

if(isset($_SESSION['user']) && $_SESSION['user']=”laogong” ) {

echo ”已登录!”;

}

else {

//成功登录进行相关操作

echo “未登录,无权访问”;

echo “请<a href=\”login.html\”>登录</a>后浏览”;

die();

}

?>


同样请关闭cookie测试,用户名:laogong 密码:123 这是通过文件保存session id的,文件是:e:\tmp\phpsid.txt,请根据自己的系统决定文件名或路径。

至于用数据库的方法,我就不举例子了,与文件的方法类似。

总结一下,上面的方法有一个共同点,就是在前一页取得session id,然后想办法传到下一页,在下一页的session_start();代码之前加代码session_id(传过来的session id);

原文:http://hi.baidu.com/%D0%A1code/blog/item/3d36130b0f034ca32fddd47a.html

林锋博客:http://www.dlf5.com/

发表在 精彩转载 | 标签为 , , | 评论关闭

[转]Yii CDbCriteria 常用方法

这是Yii CDbCriteria的一些笔记和常用用法:
    PHP代码

   $criteria = new CDbCriteria;      
   $criteria->addCondition(“id=1″); //查询条件,即where id = 1  
   $criteria->addInCondition(‘id’, array(1,2,3,4,5)); //代表where id IN (1,23,,4,5,);  
   $criteria->addNotInCondition(‘id’, array(1,2,3,4,5));//与上面正好相法,是NOT IN  
   $criteria->addCondition(‘id=1′,’OR’);//这是OR条件,多个条件的时候,该条件是OR而非AND  
   $criteria->addSearchCondition(‘name’, ‘分类’);//搜索条件,其实代表了。。where name like ‘%分类%’  
   $criteria->addBetweenCondition(‘id’, 1, 4);//between 1 and 4   
     
   $criteria->compare(‘id’, 1);    //这个方法比较特殊,他会根据你的参数自动处理成addCondition或者addInCondition,  
                                   //即如果第二个参数是数组就会调用addInCondition  
    
   $criteria->addCondition(“id = :id”);  
   $criteria->params[':id']=1;  
    
   $criteria->select = ‘id,parentid,name’; //代表了要查询的字段,默认select=’*';  
   $criteria->join = ‘xxx’; //连接表  
   $criteria->with = ‘xxx’; //调用relations   
   $criteria->limit = 10;    //取1条数据,如果小于0,则不作处理  
   $criteria->offset = 1;   //两条合并起来,则表示 limit 10 offset 1,或者代表了。limit 1,10  
   $criteria->order = ‘xxx DESC,XXX ASC’ ;//排序条件  
   $criteria->group = ‘group 条件’;  
   $criteria->having = ‘having 条件 ‘;  
   $criteria->distinct = FALSE; //是否唯一查询  

原文:http://blog.sina.com.cn/s/blog_4291fcdb0100tg3r.html

发表在 精彩转载 | 标签为 , , | 一条评论