04 2010

Window7 xampp下zend framework 1.10.7 quickstart、配置与调试

Category: Zend Frameworklixiphp @ 2010-08-04 21:37:03

you can » Download the latest version of Zend Framework and extract the contents; make a note of where you have done so.

Create Your Project

  • zf Command Line Tool的安装

第一步:首先环境变量设置,在系统变量一栏找到Path变量,编辑,添加

D:\xampp\php;D:\xampp\htdocs\ZendFramework-1.10.7\bin

我这里安装的xampp,自己的安装目录不同,请自行更改

第二步:检测安装,开始-》运行(或者直接win+R键) –》 输入cmd -》输入一下命令

C:\Users\bruce>php -version
PHP 5.2.6 (cli) (built: May  2 2008 18:02:07)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
    with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies
    with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies

如果出现你的php版本,说明你的php命令环境安装成功!

C:\Users\bruce>zf ? version
Zend Framework Command Line Console Tool v1.10.7
Actions supported by provider "Version"
  Version
    zf show version mode[=mini] name-included[=1]
    Note: There are specialties, use zf show version.? to get specific help on them.

如果出现你的Zend Framework信息,说明你的Zend Framework Command Line Console Tool 环境安装成功!

  • Command 完成工程的建立

cd D:\xampp\htdocs\ZendFramework-1.10.7

进入安装project的虚拟目录,接着:

D:\xampp\htdocs\ZendFramework-1.10.7>zf create project quickstart
Creating project at D:/xampp/htdocs/ZendFramework-1.10.7/quickstart
Note: This command created a web project, for more information setting up your VHOST, please see docs/README

提示project已经建立到quickstart目录中,Command提示VHOST安装的信息,我们的xampp已经完成了。

Running this command will create your basic site structure, including your initial controllers and views. The tree looks like the following:

D:\XAMPP\HTDOCS\ZENDFRAMEWORK-1.10.7\QUICKSTART
├─application
│  ├─configs
│  ├─controllers
│  ├─models
│  └─views
│      ├─helpers
│      └─scripts
│          ├─error
│          └─index
├─docs
├─library
├─public
└─tests
    ├─application
    └─library

copying ZendFramework-1.10.7\library 到 your quickstart\library/ directory.

访问http://127.0.0.1/ZendFramework-1.10.7/quickstart/public/index.php

你会看到以下图片:

image-Welcome to the Zend Framework!

阅读更多>>

标签: , , , , , , ,


十二 20 2009

CakePHP简单的用户认证案例

Category: CakePHPlixiphp @ 2009-12-20 14:29:58

注:在看本篇文章之前请参照:CakePHP引入基于正则表达式的基本用户检验 中的 数据库设计 和 User模型 。

需要做的3件事情:

  • 认证用户的方式(通常为校验用户的标识,比如用户名/密码组合)
  • 跟踪用户访问情况的方式(通常使用Session)
  • 校验用户是否已经认证通过的方式(通常是和Session进行交互)

我们从如何验证那些试图访问系统的用户开始。通过认证的用户信息会被Cake Session Component存储在PHP session中。我们从session中取到用户信息后就可以判断哪些操作是该用户可以执行的。

登录操作

第一个要完成的是登陆的view和action。这能给用户提供一个登陆的入口,同时也为系统提供了处理用户信息判断是否可以访问系统的机会。使用HTML helper可以很简单的创建该Form,目录在/app/views/users/login.thtml

<?if ($error): ?>
<p>The login credentials you supplied could not be recognized. Please try again.</p>
<? endif; ?>

<form action="<?php echo $form->url('/users/login'); ?>" method="post">
<div>
    <label for="username">Username:</label>
    <?php echo $form->input('username', array('size' => 20)); ?>
</div>
<div>
    <label for="password">Password:</label>
    <?php echo $form->password('password', array('size' => 20)); ?>
</div>
<div>
    <?php echo $form->submit('Login'); ?>
</div>
</form>

对应这个简单的视图(view),还需要一个action(/users/login),目录在 /app/controllers/users_controller.php 。

login 视图应当收集用户登录信息并将其提交给 users 控制器。users 控制器应当查看这个用户是否已在数据库中,并检验密码是否正确。如果用户已经正确地登录,则把用户名写入会话并把用户发送到 index 操作。

代码如下所示:

function login()
{
	//Don't show the error message if no data has been submitted.
	$this->set('error', false);

	// If a user has submitted form data:
	if (!empty($this->data))
	{
		// First, let's see if there are any users in the database
		// with the username supplied by the user using the form:

		$someone = $this->User->findByUsername($this->data['username']);

		// At this point, $someone is full of user data, or its empty.
		// Let's compare the form-submitted password with the one in
		// the database.

		if(!empty($someone['User']['password']) && $someone['User']['password'] == $this->data['password'])
		{
			// Note: hopefully your password in the DB is hashed,
			// so your comparison might look more like:
			// md5($this->data['User']['password']) == ...

			// This means they were the same. We can now build some basic
			// session information to remember this user as 'logged-in'.

			$this->Session->write('User', $someone['User']);

			// Now that we have them stored in a session, forward them on
			// to a landing page for the application.

			$this->redirect('/users/knownusers');
		}
		// Else, they supplied incorrect data:
		else
		{
			// Remember the $error var in the view? Let's set that to true:
			$this->set('error', true);
		}
	}
}

还不是很坏:如果你写的简炼点,代码应该不会超过20行。这个action的结果有这样两种:
① 用户通过认证,将信息存入Session,并转向到系统首页
② 未通过认证,返回到登陆页面,并显示相关错误信息。

阅读更多>>

标签: , , , , ,


十二 20 2009

CakePHP引入基于正则表达式的基本用户检验

Category: CakePHPlixiphp @ 2009-12-20 13:19:12

通过引入基于正则表达式的基本用户检验,您现在应该已经简要了解了 CakePHP 数据检验。通过定义自己的正则表达式来执行数据检验,可以在 Tor 内练习进一步控制各个表单字段的成功/失败条件。

数据库设计

TableCreate Table
usersCREATE TABLE `users` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(40) NOT NULL,
`password` varchar(40) NOT NULL,
`email` varchar(255) NOT NULL,
`first_name` varchar(40) NOT NULL,
`last_name` varchar(40) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `password` (`password`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

user 模型

<?php
class User extends AppModel
{
	var $name = 'User';

	var $validate = array(
		'username' => VALID_NOT_EMPTY,
		 'password' => VALID_NOT_EMPTY,
		 'email' => VALID_EMAIL
	);
}
?>

这是一个好的开始,但还不够。需要确保字段长度不超出限制并且这个用户名尚不存在。这需要定义自己的用于检验的正则表达式,并定义在保存用户前在 users 表中查找用户名的函数。

正则表达式

正则表达式(regular expression)是在对一个字符串与另一个字符串进行比较时使用的字符模式。例如,正则表达式中的字符 * 将匹配任意字符任意次数。如果不了解正则表达式,请不必担心。下面的示例应当能帮助您入门。

定义自己的检验

CakePHP 提供了一些内置的数据检验正则表达式,包括 VALID_NOT_EMPTY、VALID_NUMBER、VALID_EMAIL 和 VALID_YEAR。这些常量都是在 cake/libs/validators.php 中定义的并且不应该修改。您可能会发现这些常量会有帮助。

对于用户名和密码字段,需要确认提交的数据长度不超过 40 个字符。检验用户名和密码的长度不少于 6 个字符也会有帮助。用于匹配长度在 6 至 40 个字符之间的字符串的正则表达式类似于 /^.{6,40}$/。从左至右阅读这个正则表达式:

  • / — 表示正则表达式的开头
  • ^ — 表示字符串的开头
  • . — 表示任意一个字符
  • {6,40} — 表示至少 6 个字符,但不能超过 40 个字符
  • $ — 表示字符串结束
  • / — 表示正则表达式结束

因此,连在一起读,这个正则表达式的意思就是 “从字符串的开头开始,有至少 6 个但不超过 40 个字符,然后字符串结束”。

阅读更多>>

标签: , , , , ,


十二 19 2009

使用CakePHP快速打造Web站点入门教程

Category: CakePHPlixiphp @ 2009-12-19 17:18:19

一、创建应用程序表

这个表将包含识别用户和与用户交互所需的基本信息。简单的用户名和密码字段可能就够了,但其他信息也可能有用,例如电子邮件地址(用于发送密码重置请求)、名字和姓氏(用于个性化服务)以及最后一次登录的日期(用于帮助跟踪不活动的帐户)。您可能希望用户名和电子邮件字段是惟一的。另外,不要忘记主键 ID 字段。

CREATE TABLE `users` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(40) NOT NULL,
`password` varchar(40) NOT NULL,
`email` varchar(255) NOT NULL,
`first_name` varchar(40) NOT NULL,
`last_name` varchar(40) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`,`email`)
) ENGINE=MyISAM;

注:username、password、first_name 和 last_name 字段最多包含 40 个字符。在 user 模型中将强制要求不超过这个字符长度。在本例中,40 个字符的最大长度完全是任意设定的。

二、MVC 设计

通常,在这个阶段会根据应用程序所需的功能着手编写代码。一个登录页面、一个数据库、注册表单 — 搞定!多么简单!通常也就是这么简单。除非您希望更改外观、改变与数据库交互的方法、更改检验规则或在根本上更改应用程序的某些重要方面时,事情才会开始变得复杂起来。

1、模型

用户、产品、价格、消息 — 从本质上看,它们都仅仅是数据。确保数据是您所需要的,让数据进入数据库,然后再从数据库中取出数据。很有必要将 Tor 的所有数据处理功能都放在一个位置。这就是模型的作用。
模型主要考虑的是处理数据。从数据库中获取数据、将数据插入数据库、检验数据 — 所有这些操作都是在模型内进行的。
一个单独的模型通常用于访问数据库中特定的表。通常,如果表名是模型名称的复数形式,则模型将与这个数据库表相关联。例如,product 模型在默认情况下将与 products 表相关联。用户定义的所有模型都将扩展 CakePHP AppModel 类。

user 模型

在为 Tor 创建了 users 表后,需要一个 user 模型与该表进行交互。user 模型将保存用户数据,替您从表中取回数据,并检验用户数据是否是可接受的格式。目前,这个模型可以是一个存根。它应当作为 app/models/user.php 创建

<?php
class User extends AppModel
{
 var $name = 'User';
}
?>

注:The $name property is necessary for PHP4 but optional for PHP5.

2、视图

通过将所有显示和表示代码放在同一个位置,可以方便地更改应用程序的外观和感觉,而无需修改与应用程序逻辑和数据相关的代码。
视图主要考虑的是格式化显示给用户的数据。视图用于表示所有 UI 结果,包括所有模板和 HTML。CakePHP 的视图文件是嵌入了 PHP 代码的常规 HTML 文件。
最后,视图就是一个页面模板。通常,视图都根据与之相关联的操作来命名。例如,display() 操作通常会有一个 display 视图。

①、register 视图

用户需要先注册一个帐户,然后才能使用 Tor 应用程序。这将需要一个 register 视图,这个视图将向用户显示注册表单。您应当已经知道 Tor 需要哪些用户数据了。具体地说,需要收集用户名、密码、电子邮件地址、名字和姓氏。
register 视图应当被创建为 app/views/users/register.ctp

<form action="/users/register" method="post">
<p>Please fill out the form below to register an account.</p>
<label>Username:</label><input name="username" size="40" />

<label>Password:</label><input type="password" name="password" size="40"
/>

<label>Email Address:</label><input name="email" size="40"
maxlength="255" />

<label>First Name:</label><input name="first_name" size="40" />

<label>Last Name:</label><input name="last_name" size="40" />

<input type="submit" value="register" />
</form>

切记:字段名要与数据库中的列名相同,遵循此原则在处理 users 控制器时会有用。在后面讨论 Cake 的更多信息和 Cake helper 的工作原理时,将完全重写这个页面,但是这个页面目前仅仅是常规的 HTML。

阅读更多>>

标签: , , , , , ,


十二 18 2009

初始Cakephp,新手入门安装与配置

Category: CakePHPlixiphp @ 2009-12-18 21:44:08

一、什么是CakePHP?

CakePHP是一个开源的PHP on rails的full-stack framework。最开始从Ruby On Rails框架里得到灵感。程序员可使用它来快速创建的Web应用程序。我们的首要目的是使你以一种预置的快速且不失灵活性的方式开展工作。

二、安装、配置CakePHP

1、httpd.conf 文件中的定义

<Directory “/webroot”>
       Options Indexes MultiViews
       AllowOverride All
       Order allow,deny
       Allow from all
</Directory>

2、确认 .htaccess 文件是否存在?

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

①首先确认.htaccess覆写是被允许的:在apache配置文件中检查配置下的AllowOverride是不是设置为All。
②确认你修改的是server的配置文件而不是当前用户或者特定站点的配置文件。
③确认你是否成功加载了mod_rewrite!察看配置文件中是否有’LoadModule rewrite_module libexec/httpd/mod_rewrite.so’ 和 ‘AddModule mod_rewrite.c’。
④有的时候,可能你得到的CakePHP副本缺少了必须的.htaccess文件。因为有的操作系统会将以.开头的文件视作隐藏文件,因而不会拷贝它们。确定你的CakePHP副本是我们网站上下载或者是我们的SVN repository上checkout的。

2、根据错误信息配置

Notice (1024): Please change the value of ‘Security.salt’ in app/config/core.php to a salt value specific to your application [CORE\cake\libs\debugger.php, line 557]

设置自己的’Security.salt’

/**
* A random string used in security hashing methods.
*/
Configure::write(‘Security.salt’, ‘DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi’);

更改为:

Configure::write(‘Security.salt’, ‘ABDCDEFGHIKLMNOPQRSTUVWXYZ’);

注:ABDCDEFGHIKLMNOPQRSTUVWXYZ 为测试使用的,用户根据自己的需要独立设置。

② 设置写权限

Your tmp directory is writable.

windows平台可不用设置,tmp目录是可写的。
在Linux中需要设置一下当前目录为0777

③ 设置Caching

The FileEngine is being used for caching. To change the config edit APP/config/core.php

Cakephp自带已经设置为:

Cache::config(‘default’, array(‘engine’ => ‘File’));

注:CakePHP支持 File、APC、Xcache、Memcache,具体配置看我以前的博文。

阅读更多>>

标签: , , , ,


十二 17 2009

简单设置Zend Framework 404基本路径Zend_View::render

Category: Zend Frameworklixiphp @ 2009-12-17 22:23:19

今天在使用Zend Framework时设置404页面错误时,由于ZF 1.9.6的 视图目录为 application/view/scripts/index/404.php,而这个render函数不能自动识别当前controller的视图目录,所以需要把404模板移到controller对应的视图目录下。所以用到以下笨方法:

$thispath = reset($this->view->getScriptPaths());
$this->view->setScriptPath($thispath . "index/");
echo $this->view->render('404.php');//显示模版

注:controller为index

一、函数说明:

/**
* Retrieve the current script paths
* 获取当前脚本路径
*/
public function getScriptPaths();

/**
* Set the path to view scripts/templates
* 设置视图脚本的路径
*/
public function setScriptPath($path);

/**
* Render the template named $name
* 输出参数$name指定的某个模板
*/
public function render($name);

二、环境说明:

Zend Framework library = 1.9.6

标签: , , , ,