forecho 的独立博客

把生命浪费在美好的事物上

Yii学习笔记(四)-用户登录

2012年07月10日

先在 \protected\components\文件夹里面找到UserIdentity.php

然后用gii的Model Generator生成User的Model

然后在UserIdentity.php找到这段代码:

public function authenticate()
{
    $users=array(
        // username => password
        'demo'=>'demo',
        'admin'=>'admin',
    );
    if(!isset($users[$this->username]))
        $this->errorCode=self::ERROR_USERNAME_INVALID;
    else if($users[$this->username]!==$this->password)
        $this->errorCode=self::ERROR_PASSWORD_INVALID;
    else
        $this->errorCode=self::ERROR_NONE;
    return !$this->errorCode;
}

替换为:

private $_id;

public function authenticate()
{
    //用户名转换为小写
    $username=strtolower($this->username);

    //$username作为条件进入数据库查询匹配
    $user=User::model()->find('LOWER(username)=?',array($username));

    //用户名不存在,报错
    if ($user===null) {
        $this-> errorCode=self::ERROR_USERNAME_INVALID;
    }else{

        //调用一个函数,匹配相应的密码
        if (!$user->validatePassword($this->password)) {
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        }else {

            //匹配成功,赋值
            $this->_id = $user->id;
            $this->username = $user->username;
            $this->errorCode=self::ERROR_NONE;
        }
    }
    return $this->errorCode === self::ERROR_NONE;
}

public function getId() {
    return $this->_id;
}

在Models里面的User.php添加两个新的方法。添加如下代码:

// 查询密码是否匹配
public function validatePassword($password)
{
    return $this->encrypt($password)===$this->password;
}

public function encrypt($pass)
{
    return md5($pass);
}

// 添加的密码进行MD5加密
protected function beforeSave() {
    if (parent::beforeSave()) {
        //判断是否是新的密码
        if ($this->isNewRecord) {
            $this->password = $this->encrypt($this->password);
        }
        return true;
    }else {
        return false;
    }
}

然后用gii的Crud Generator生成User的Controllers文件UserController.php 这个文件的下面代码是一个简单的权限系统

public function accessRules()
{
    return array(
        array('allow',  // allow all users to perform 'index' and 'view' actions
            'actions'=>array('index','view'),
            'users'=>array('*'),
        ),
        array('allow', // allow authenticated user to perform 'create' and 'update' actions
            'actions'=>array('create','update'),
            'users'=>array('@'),
        ),
        array('allow', // allow admin user to perform 'admin' and 'delete' actions
            'actions'=>array('admin','delete'),
            'users'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

注: - “ * ”—-任何人都可以访问。 - “ @ ”—-登录用户才能访问。 - “ admin ”—-是指只有admin用户才能访问。

Yii学习笔记(三)-gii的使用以及模块的使用

2012年07月10日

gii的使用 gii可以帮你生成很多文件,很方便。

访问:http://localhost/blog/index.php?r=gii  输入之前设置的密码,进入gii。

选择 Model Generator在Table Name下面输入数据库 表名称,然后点Preview 预览,点Generate 生成文件。

然后在左边再选择Crud Generator在Model Class 下面输入你刚才生成对应的controllers文件(也就是controllers文件夹对应的文件名,注意大小写要匹配),然后点Preview 预览,点Generate 生成文件。

模块的使用(就是使前后台分离)

在gii左边选择Module Generator 在Module ID下面输入Admin,然后点Preview 预览,点Generate 生成文件。这个时候你会发现protected文件夹下面自动生成了一个modules文件夹。

然后修改main.php配置文件。在gii这个数组下面添加:

1
2
3
'Admin'=>array(
    'class'=>'application.modules.Admin.AdminModule',
),

那么接下来就可以在gii中给Admin添加模块了。

在左边再选择Crud Generator在Model Class 下面输入对应的controllers文件(也就是controllers文件夹对应的文件名,注意大小写要匹配),但是注意要修改Controller ID的内容,要在前面加上 “Admin/” ,然后点Preview 预览,点Generate 生成文件。

Yii学习笔记(二)-修改配置文件

2012年07月09日

配置文件在 protected\config\main.php 开启gii 找到下面这段代码,把注释去掉:

1
2
3
4
5
6
7
8
/*
'gii'=>array(
    'class'=>'system.gii.GiiModule',
    'password'=>'Enter Your Password Here',
    // If removed, Gii defaults to localhost only. Edit carefully to taste.
    'ipFilters'=>array('127.0.0.1','::1'),
),
*/

修改password为自己使用的密码。 ps:如果访问gii的时候提示文件不存在,那就修改ipFilters中127.0.0.1为自己的IP。 开启数据库 找到下面这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
'db'=>array(
    'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
// uncomment the following to use a MySQL database
/*
'db'=>array(
    'connectionString' => 'mysql:host=localhost;dbname=testdrive',
    'emulatePrepare' => true,
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
),
*/

把上面一段注释掉,下面一段开启,修改之后如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*
'db'=>array(
    'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
*/
// uncomment the following to use a MySQL database

'db'=>array(
    'connectionString' => 'mysql:host=localhost;dbname=appyii',
    'emulatePrepare' => true,
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
    'tablePrefix'=>'fe_',//指表前缀,需要的自行添加
),

dbname:指数据库名。

Yii学习笔记(一)-yii初使用

2012年07月06日

之前学的CI框架,现在用的已经很顺手了,感觉还不错的时候找了份工作,但是这家公司是用yii框架开发项目的,没办法,只能抓紧时间自学了。好了,废话不多说,直接进入主题。

首先刚开始学肯定是去google一下学习资料,发现了这个:http://www.yiichina.com/ 还有这个:http://yiiblog.info/blog/yii-go/。这两个网站都不错。刚开始看权威指南还是有点晕晕的感觉,感觉还是上不了手,然后想到了视频,yii-go的视频还不错,很简单易懂,安装上面操作,大致了解了这个框架的用法,下面简单总结一下;

  • yii框架需要执行命令启用,会自动生成一些基础的网页,功能。这个相对于ci来说,省事很多。但是刚开始我确实很不习惯。
  • 简单说一下怎么生成,这个问题看了介绍的时候不是很明白,还是看视频才了解的。下载yii框架找打yiic这个文件,找到文件所属位置 ,打开cmd,然后执行 :
1
2
3
D:
xampp\htdocs\yii\framework\yiic webapp xampp\htdocs\yiiapp
yes

好了,现在一个基本的web应用已经生成了,那么你现在要做的就是修改这个web为自己所用。

ps:用win+wamp的的朋友可能会遇到下面的问题:

在执行yiic webapp命令时,就报以下错误了: ‘”php.exe”’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 这个事yiic批处理程序找不到php.exe引起的

  1. 方法一、修改yiic.bat文件 打开yii安装目录d:/www/yii/framework/yiic.bat,yiic.bat有记事本打开有如下一行: if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe 由于我的WAMP安装时没有将php.exe加入到Windows环境变量中,难怪yiic找不到。这样也只需要将php.exe的绝对路径赋给PHP_COMMAND即可。如在我这环境下是这样设置的: if "%PHP_COMMAND%" == "" set PHP_COMMAND=D:\xampp\php\php.exe
  2. 方法二:参考文章

关于实习报告

2012年05月25日

马上就到了该回学校的时候了,这就意味着我们”实习”的日子也该结束了。这一段时间的实习,可以说对我们的人生影响很大,人生的路改怎样走,我更加的清晰了。

从刚开始出校门的懵懵懂懂,到现在的”眼高手低”。记得还出校门找工作的时候,那个辛苦,为了能找到一份给自己锻炼的机会,没有考虑到很多东西,一心想着多学点经验。差点就在暑假的时候去爱普当销售员了。现在想想还好当时他们爱普招满了人,没收我们当兼职。后来就再学校快封校的时候,我不甘心就那样回家去了,于是就在网上投了几份简历,效果还不错,很快就有回复。但是不是所有的工作都适合我的,微博营销就真的不适合我。后来我接到一份PHP程序员的面试,并且面试我的是经理本人,一个看上去是跟我年纪差不多的经理。面试的内容很轻松,我们聊了几句,我就顺利被录取了,那时候我真的很高兴,能找到一个跟自己专业有关系的工作,并且待遇还不错。

由于没有工作经验,也没有实战经验,公司也是刚创业不就的公司,刚开始做网站的时候都不知如何下手,还过还有有老师上课的案例,第一个项目我们花了半个多月的时间总算给客户交差了。功能都给人家齐了。但现在看来还有存在一定的bug。

小公司有小公司的好处,刚开始我们很有激情,不知道为什么每天都很开心的忙碌着工作,很开心,即使有时候会很累。公司还没开始扩张的时候,我们每个月都有一次”月终酒会”,那天我们会提前一个小时下班,放开所有的工作,开心的去吃饭、KTV。小公司还有一个好处,就是你不会被人给忽视掉。不忙的时候下班我会留下来跟经理和同事一起打一盘Dota,虽然我那时候Dota技术很烂,总是坑队友,但是,现在真是很怀恋。

随着业务的扩张,销售的给力,经理做出了扩张的决定,现在看来,当时的决定是错误的。扩张就意味着我们就要换到新的办公室了。公司来了新的员工,人数少的时候可能不存在管理的问题,但是扩张之后的公司的管理就出现了问题,即使后来我们搞了几次体能训练来增加同事之间的团队精神,但显然效果不是很明显。公司的人员增多,意味着公司要接到更多的项目,老板才能养活我们,扩张是因为那时候的项目没人手做,好吧,当时的项目做完了,我们又没能接到项目了。这直接导致公司的盈利,老板都快发不起工资了,所以就采取了裁员政策,我能在那次幸免能够留下来,确实是很不错。但是呢?我那时候突然有一种感觉上班会很累,虽然我上班都没有事干。我越想越累,就在我学完PHP框架之后,找了个机会跟老板说了我有辞职的意愿,老板也同意了。说实话,还真是有点不舍得。

从什么时候开始上班变是一件很没有激情的事,写的代码,都是重复再重复。辞职之后我就疯狂的玩了几天,然后开始写了个博客导航的小程序,还挂到的网上。(现在不能访问了,因为用的是美国空间,现在不能访问了),现在我一直在写另外一个程序,一边写一边学习。但是效率可想而知的没有在上班的时候高,但是确实也学到了很多东西。

我觉得我现在又站在了人生的十字路口了,我梦想着能做出一个百万级用户的产品出来。但是现在是时候吗?我的技术成熟了吗?我现在又能力吗?答案我都不能肯定。但是现在在武汉确定找不到让我满意的工作的了,要么工资开的不满意,要求还很高。要么工资还行,但是做的事情我不愿意干,二次开发、套模板,我感觉太无聊了,我是不愿意浪费那时间的了。现在的我只等着拿毕业证,然后呢?离开武汉,去深圳、杭州、北京??都是不错的地方。但是前面的路还是未知。我只能满怀期待的走下去。希望能早点实现自己的梦想。

Comments

上海做网站: 愿楼主找到心仪的工作

石膏公仔: 程序员是练出来的!

颜成: 不错 有个自己展示自己的平台 自己可以控制

锁匠工具: 一切都需要过程,在过程中慢慢成长,有梦想,就去努力。 :razz:

刘杰: 这个主题有点意思

刘杰: 这个主图不错,有点意思 http://www.57li.com

一起去找点路子吧

2012年05月06日

貌似从1月底被辞职之后,就一直窝在宿舍里,说是在学习,在写代码,等待着拿毕业证然后出去混工作。现在想来已经都3个多月了,又啃了三个月的老,可耻啊。

关于自己一直想做的网站,想法是有的了,但是还是没写完,功能有点多,一个人写的话确实还真是点累,想找个人一起写,但是找谁呢?功能的话只写了差不多才一半,照这速度,何时才能上线呢?现在又有点犹豫了,有在武汉找工作的想法了,毕业论文,答辩都解决了,还有两个月才能达到毕业证,那这两个月,我要干嘛呢?每天我们三个人在一起,只有打游戏跟打游戏还有打游戏,这尼玛的时间都花在打游戏上面了,错过了很多东西,这个其实我心里都有数。

感觉自己的人生到了的十字路口了,做选择很艰难。想做自己感兴趣的时,想有一种无拘无束的生活,工作也是。现在都害怕去面试了,怕接触陌生的公司,陌生的社会。想趁着自己年轻做点自己感兴趣的事。想法有很多,但是真正去做的又是很少,正如那句话说的“晚上想想千条路,白天还是走原路”。刚开始的路很艰难,这个我知道,但是每天你至少都进步一点点啊,就像之前看的一篇许朝阳讲的关于登山的故事一样,他们不管什么天气每天前进33米,最后第一个登上了山顶,有时候生活过得太随意,也不行。

最近在尝试很多东西,这次买了一个国内的空间把“博客导航”给挂上去了,还在备案中。还是希望这个网站能给大家带来用处,这样我的钱才没白花。备案还是真是一件很麻烦的事。最近还把淘宝店申请成功了,可以开店了,但是不知道卖什么???还真不知道有什么好卖的。

我还是在想要不要去找工作呢?

Comments

钱玉刚: 这个主题太黑暗,不喜欢 事情就是这样,其实真心没啥。 就是专注力不够, 去哪,说一声 SAY GO LET US GO YOU HAVE I HAVE SO DO ALL

钱玉刚: 这么说吧,各种刷信誉先。 事情就是这样,其实没啥, 干自己想干的呗。 一起出去也行, SAY GO LET US GO YOU HAVE I HAVE SO DO ALL

很简单的一个js实现下拉列表实现跳转

2012年03月03日

直接上效果页面,请猛击~ 代码很简单,完整版的HTML代码,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>下拉菜单实现页面跳转</title>
</head>
<body>
<select name="menu122" onchange="if(this.options[this.selectedIndex].value!=''){window.open(this.options[this.selectedIndex].value,'_self');}">
<option value="#">友情链接站点</option>
<option value="http://www.baidu.com">百度</option>
</select>
</body>
</html>

或者用jQuery这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<select id="dynamic_select">
    <option value="" selected>Pick a Website</option>
    <option value="http://www.google.com/">Google</option>
    <option value="http://www.youtube.com/">YouTube</option>
    <option value="http://www.stackoverflow.com/">Stack Overflow</option>
</select>

<script>
    $(function(){
      // bind change event to select
      $('#dynamic_select').bind('change', function () {
          var url = $(this).val(); // get selected value
          if (url) { // require a URL
              window.location = url; // redirect
          }
          return false;
      });
    });
</script>

Comments

yokelai: 当选项不为空时执行事件,学习啦!

谈谈登陆页面Div上下左右居中的事

2012年03月02日

最主要的CSS样式

1
2
3
4
5
6
7
8
9
10
.login{
    width:631px;
    height:314px;
    margin-top:-157px;
    margin-left:-316px;
    position: absolute;
    top:50%;
    left:50%;
    background:url(images/mod.gif);
}

使用 绝对定位  然后margin-top选取div height的一半值 margin-left 选取div width的一半值  

其他方法参考这里~

我开始使用的一些网站和软件(不定时更新)

2012年02月27日

现在是2012年2月27号

  • 知乎:一个问答网站,去年的5月6号我有幸获取一枚邀请码,从此就踏上知乎寻找答案的不归路了,哈哈…不过在这里你确实能学到很多东西。
  • 鲜果网:一个在线订阅服务网站,生活需要阅读,特别是你玩手机很无聊的时候,鲜果Android HD 版的客户端做的还不错,同类网站还有Google reader。客户端的话,网易阅读也不错。
  • 落网:在这里你将听到不一样的音乐,网站界面做的非常干净,简洁。风格很喜欢。
  • Lofter:一个轻博客,轻博客那么多,就觉得这个界面做的很舒服,网易的UI真不是盖的,现在的话,lofter我只是用来放一些我平常拍的照片。
  • 下载吧:一个很好软件下载的网站,界面做的很不错,下载按钮很显眼,一看就知道在哪下载。最讨厌那种广告满天飞,然后下载都不知道点哪的网站,好不容易下载一个软件然后还不是你想要的,是广告的,尼玛真是坑爹的。
  • 音悦台:就是一个很好的音乐MV网站,看MV的话,我首先在这里面搜索,如果没有的话,才去优酷,土豆什么的。
  • 时光网:看电影资料什么的,我就去这个网站,很专业。上面的视频,预告片都很好。
  • V2EX:最近发现这个网站也不错。看介绍说是 创意工作者们的社区。
  • Evernote: 一款非常著名的免费笔记软件,具备强大的网页剪辑功能。它最大的特点就是支持多平台,而且数据能通过网络互相同步。可以随时在手机上的Evernote新增笔记,回家后在电脑上也能看到它了。
  • 够快: 一个网盘。免费版的有8G,它的强大在于能同步本地文件夹到服务器,支持自定义路径,很方便。 2012年3月14号
  • 悦读FM:提供有质量的有声阅读体验,阅读也可以像听歌一样简单方便。适合晚上睡觉之前安静的听一下,很有感觉。
  • 点点:国内首家轻博客,其实很早就注册了点点,但一直没怎么用,突然的有一天喜欢上了点点的UI,于是开始用了,很喜欢。 2012年11月30号
  • Doit.im:是一款跨平台的任务管理工具,并支持与iPhone, Android同步。Doit.im采用优秀的任务管理理念(GTD理念),有条不紊地组织规划各项任务,轻松应对各项庞大繁杂的工作,在感受无压工作乐趣的同时,畅享高效工作的成就感!(这个国内开发的项目,真心不错。)
  • 番茄土豆:使用当下最高效的时间管理方式——番茄工作法作为核心模式,帮助你专注于工作,大大提高工作效率,是为“番茄”;通过 To-do List 记录和管理任务,是为“土豆”。(关于番茄工作法请看这篇文章。)

Comments

打篮球的女孩: 博主你的网站做的不错哦,知更鸟的这个主题我也用过,挺不错的。最近闲来无事,我写了一篇小说–打篮球的女孩。在起点上,有时间了帮我顶一下哦!!!!

2012年,生活还得继续

2012年02月18日

到今天为止,上班也快差不多一个星期了吧。公司的情况还有待进一步的去了解,好像是负责运营几个视频网站和淘宝API链接的,听说公司也自己开淘宝卖衣服。

过完年在家待一个星期左右就想出来找工作了,只是一直苦于来武汉没地方睡觉。我们学校太坑爹了,到现在都没开门,真是好意思。还有我有个舅舅在武汉,于是匆忙赶过来,找工作,找房子,以至于我走的时候,都有点不舍了,感觉在家还没待够,这是我以前每次走的时候所没有的感觉。

到了武汉先是玩了两天,然后等待星期一,开始面各种试,因为之前有在网上发简历,武汉已经有好几家打电话让我去面试了,所以说工作的事我还不是很担心。那天真是一口气面试了三家公司,累死了都。说实话刚开始的时候对自己还是挺有自信的,毕竟自己已经上班过5个月了,有上班经验了,有时候自己都觉得自己挺牛逼的,但是那天的三个面试,让我重新认识了自己。上午面试的第一个公司,面试官看了我简历,然后跟我聊天,看了我以前做的项目,然后问我的几个问题,有的我基本上算是答上来了,有的确实还是不知道。。。我只记得两个我没能回答好的问题。其他的我都忘了。

  1. cookie和session的区别?(当时我只是说了一下,一个缓存保存在客户端,一个缓存保存在服务器端)—-查看答案
  2. 网站上的图片路径地址和网站地址为什么不一样?(当时我真没想出来,就说了个不知道,后来猜想,应该有两台服务器,一台专门存放图片的)

第二个公司,问的问题有点专业了,说了好多转有名次我都没听说过,比方是了解B/S吗?还有什么什么的?我都忘了,还有问我们之前项目是怎样部署的。额。。。。之前我们哪有那么规范呀,就一个小公司,直接写网站的,连个说明文档都很简单的,有时候甚至都没有。好在这个面试官看我对自己职业的热爱,让我第二天去上班试用。给我布置点任务,是看我的实力吧?后来我才知道这家公司也是刚成立的,基本上都是做软件开发的,做网站的目前就我一个,感觉自己一个人还真没有挑大梁的实力,还是撤了。

好吧,那就第三个公司了,也就是这个公司,这个公司对技术要求没那么高,上班气氛也不错,公司也有很多人,不过就技术部的人还是很少的,只不过地理位置不怎么好,并且是单休。但是话又说回来‘这个世界从来没有任何一件工作叫“钱多、事少、离家近” ’。如果在公司待着不错,有发展前途那就最好不过了,如果实在不行,那也要撑到我拿到毕业证吧,那时候不行的话,我至少可以出去也好找工作。

找房子是一件很麻烦的事,特别是在一个我们都不怎么熟的地方找房子,找了一整天,连中介都去了,到晚上的时候我们勉强找到现在的这个房子了,房子还好吧,有不错的地方,也有不满意的地方。

偏偏是在2月14号的时候选择下班了去搬家,那天偏偏又是下雨,那天真是有点狼狈了。 通过这几天我发现武汉的发展也不怎么样,武汉说是一线城市,其实是二线城市,乍一看是三线城市,仔细一看你会发现其实武汉就是一个大农村。

武汉的这几年物价上涨的很快啊,但是工资没涨多少,你在武汉拿3K/月的时候,看上去还不错,但是却没有剩下多少钱,因为这边消费贵,当然肯定还是不能和深圳那边比的。 武汉的互联网公司,找来找去,也就那么几十家。并且都不怎么样。这也导致很多大学生毕业了就直接选择去了“北上广深”发展了,没有了人才,以至于恶性循环。在这边我想找个公司有人带着你一起的,那八成是不可能的,只能靠自己起摸索。哎。。。 我要是有毕业证说不定我也不在武汉待了,在外面待个两三年再回来也不迟吧,当然这是后话了。

好了,今天就暂时写到这了,肚子都饿了,最近饭量大增啊。

Comments

PHP淮北: 呵呵 原来是你引用了我的cookie和session的文章,咱们同姓都是做php的都是刚工作的新人,呵呵咱们交互一个友链:http://www.php10086.com/, PHP10086博客网–专注LAMP技术,做最靠谱的PHP技术博客分享网站

李军的博客: 博客导航有权限BUG,可任意删除添加推荐

caicai: 因为当时我做的时候 基本上算是没做后台管理 没做用户什么的 只是做了一个链接 我因为别人是不会找到得 我很好奇 你是怎么进去的?