PHP 框架,第 3 部分: 用户验证

 更新时间:2016年11月25日 16:06  点击:1551
对 PHP 早期版本的常见批评是不支持模型-视图-控制器(Model-View-Controller,MVC)样式的架构。现在,开发人员可以在许多 PHP 框架中做出选择。“PHP 框架” 系列将介绍三个广泛使用的 PHP 框架 —— Zend、symfony 和 CakePHP —— 通过在三个框架中构建和扩展样例应用程序来检验这三个框架的类似之处和不同之处。第 1 部分列出了本系列涵盖的内容并且配置先决条件。在第 2 部分中,您分别在三个框架中构建了样例应用程序。本文是第 3 部分,您将扩展应用程序并处理不符合一般规律的例外情况。

关于本系列

本系列专门针对那些想要开始使用框架、但又没有机会详细检验可用框架的 PHP 开发人员。在学完本系列后,您将了解选择这三个框架的原因、如何安装每个框架,并且充分运用将在三个框架中扩展的测试应用程序。听起来要学习的内容很多,但是不必担心。内容虽然多,但是我们已经把内容细分为多个便于管理的部分。

本系列的 第 1 部分 将列出本系列涵盖的内容,介绍将进行考察的框架以及说明如何安装,并查看将构建的第一个测试应用程序。

第 2 部分 将指导您在三个框架中构建样例应用程序,着重说明了它们的类似之处和不同之处。

第 3 部分从扩展测试应用程序开始,然后处理不符合一般规律的例外情况。所有框架都能很好地完成份内的任务。每个项目中都需要完成一些框架设定工作之外的事情。本文就将介绍那些情况。

第 4 部分主要介绍了 Ajax 支持。使用本机代码和第三方库检验了 Ajax 的使用 —— 特别介绍了每个框架如何运行及接受具体的常用库。

第 5 部分将处理如何在框架外部工作。设定一项任务(每晚更新脚本),并在每个框架中检验完成此项任务的过程。



<
“PHP 框架” 系列将介绍三个广泛使用的 PHP 框架 —— Zend、symfony 和 CakePHP —— 通过在三个框架中构建和扩展样例应用程序,研究三个框架的类似之处和不同之处。第 1 部分将列出本系列涵盖的内容并且配置先决条件。在第 2 部分中,您将分别在三个框架中构建样例应用程序。

在本系列的 第 1 部分 中,我们已经设定了本系列的范围并满足了先决条件。现在,将分别在三个框架中构建样例应用程序。在接下来的几篇文章里,将扩展应用程序、了解不符合常规的例外情况、使用 Ajax、集成外部任务等等。

本文将指导您分别在三个框架中创建样例应用程序 Blahg。您将从头做起,了解在 Zend 框架、symfony 和 CakePHP 中开发简单应用程序的基础知识。

您应当已经完成了 第 1 部分,该部分介绍了如何安装这三个框架及使用三个框架必须满足的先决条件。如果您还未读过这一部分,则应立即阅读。

假定您已经了解 PHP、应用程序设计以及如何在数据库中工作。您不需要具有框架使用经验,但是您应当已经准备好开始使用框架。

在 Zend 框架中构建 Blahg

首先,创建目录 /column/htdocs/zend 和 /column/protected/zend。这些目录将分别保存 Web 可访问的文件及 Web 不能访问的应用程序文件。在 /column/htdocs/zend 中,用以下命令行创建一个 .htaccess 文件:

RewriteEngine onRewriteRule !.(js|ico|gif|jpg|png|css)$ index.php

在涉及目录结构时,每个框架都有自己特定的要求。对于 Zend 框架,需要创建目录 /column/protected/zend/controllers、/column/protected/zend/models 和 /column/protected/zend/views 来保存控制器、模型和视图。此外,需要创建目录 /column/protected/zend/views/scripts;并且对于每个控制器,需要创建一个目录来保存一些视图。例如,您知道 Blahg 将需要为 post 控制器提供一些视图,那么就需要创建目录 /column/protected/zend/views/scripts/post 来保存该视图。

已经准备好目录。该来构建模型了。

构建 Zend posts 表和模型

在第 1 部分中,创建了将要使用的 posts 表。如果您跳过了那段内容,请立即查看并且创建该表。该表的模型非常简单。它应当被命名为 Posts.php,并且应当在 /column/protected/zend/models/ 创建它。Posts.php 将扩展 Zend_Db_Table 类,并且您将使用的大多数方法均继承自该类。

<

 php fck文章分页 fckeditor文章分页代码

<?php   
   $page =isset($_GET['page'])?$_GET['page']:1;//这里了得当前文章的分页编号如果没有就为1
 $split ='<div style="page-break-after: always"><span style="display: none">&nbsp;</span></div>';

//这里是fckeditor文章的分页代码


 $array =explode($split,$rs->new_content);


 if($page>sizeof($array) ){//判断从地址栏获得的分页编号是不是大于总分页的长度,如果是就输出第一页的内容
  echo $array[0];
 }else{
  echo $array[$page-1];//不是就输出$page-1这里因为php函数的下标是从0开始的
 }
 if(sizeof($array)>1){ //这里是判断如果文章没有分页就不显示第N页,
  for($i=1;$i<=sizeof($array);$i++){
   echo "<a href=?id=$type_id&page=".$i.">[".$i."页]</a>&nbsp;";
  }
 }
 
  ?>

原创文章:www.111cn.net 转载请注明

<?php

  /*****************************************

   Title :smarty结合xajax检测用户名简单实例
   Author:leehui1983(辉老大)
   Finish Date  :2006-12-09

  *****************************************/

  //为避免中文乱码,需要在 xajax.inc.php 需要改一下默认的encoding:define ('XAJAX_DEFAULT_CHAR_ENCODING', 'gbk' )UTF8编码格式文件不需要更改

  require_once('./libs/Smarty.class.php');//包含smarty类库
  require('./xajax/xajax.inc.php');//包含xajax类库

  function checkusername($textvalue){//编写需要的PHP函数
       $checkresult=($textvalue=='test' ? '<font color=red>该用户名已经注册</font>' :'<font color=red>可以注册</font>');
       $objresponse=new xajaxResponse();//实例化xajaxresponse对象
       $objresponse->addassign("result","innerHTML",$checkresult);//指定ID为result的元素中添加内容$checkresult
       return $objresponse;//返回结果文本
  }

  $xajax=new xajax();//实例化xajax对象
  $smarty=new Smarty();//实例化smarty对象
  $smarty->template_dir = "./templates";//设置模板目录
  $smarty->compile_dir = "./templates_c"; //设置编译目录
  $smarty->caching = false; //设置缓存方式
  /*****************************************************
  左右边界符,默认为{},但实际应用当中容易与JavaScript
  相冲突,所以建议设成<{}>或其它。
  *****************************************************/
  $smarty->left_delimiter = "<{";
  $smarty->right_delimiter = "}>";


  $xajax->registerFunction("checkusername");//注册checkusername函数
  $xajax->processRequests();//调用xajax用于接管请求
 
  $smarty->assign('xajax_javascript', $xajax->getJavascript('./xajax/'));//输出JS代码,注意('./xajax/')中参数为xajax.inc.php父目录,在同意目录下可不同填写,否则必须填写
  $smarty->assign('title','smarty结合xajax检测用户名简单实例');//替换模板内容
  $smarty->display('index.tpl');//显示模板内容
?>

 

<html>
<head>
<title><{$title}></title>
<{$xajax_javascript}><{*使smarty支持xajax*}>
</head>

<body>
<form  name="check" >
请输入用户名:
  <input type="text" name="username" />
  <input type="button" name="button" value="检查用户名"  />
  <div id="result"></div>
</form>
</body>
</html>

<?
$conn
=mysql_connect("localhost","root","2328725"
);
mysql_select_db("novel"
);
mysql_query("set names 'utf8'"
);
if(
$provincecode!=""&&$provincecode!=650000&&$provincecode!=710000&&$provincecode!=810000&&$provincecode!=820000&&$provincecode!=110000&&$provincecode!=120000&&$provincecode!=310000&&$provincecode!=500000
){
  
$sql="select * from city where provincecode=$provincecode"
;
  
$result=mysql_query($sql
);
  echo 
"<select onchange='queryArea(this.options[this.selectedIndex].value)'>\n"
;
  echo 
"<option value='-1' selected>请选择城市</option>\n"
;
  while(
$row=mysql_fetch_row($result
)){
   echo 
"<option value='$row[1]'>$row[2]</option>\n"
;
  }
  echo 
"</select>\n"
;
}

if(
$citycode!=""
){
  
$sql="select * from area where citycode=$citycode"
;
  
$result=mysql_query($sql
);
  echo 
"<select>\n"
;
  echo 
"<option value='-1' selected>请选择县</option>\n"
;
  while(
$row=mysql_fetch_row($result
)){
   echo 
"<option value='$row[1]'>$row[2]</option>\n"
;
  }
  echo 
"</select>\n"
;
}
?>

[!--infotagslink--]

相关文章

  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • 基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍

    这篇文章主要介绍了基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍 的相关资料,需要的朋友可以参考下...2016-05-14
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • php根据用户语言跳转相应网页

    当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面。 <&#63;php $lan = substr(&#8194;$HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' c...2015-11-08
  • .net数据库操作框架SqlSugar的简单入门

    这篇文章主要介绍了.net数据库操作框架SqlSugar的简单入门,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
  • php有效防止同一用户多次登录

    【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 s...2015-11-24
  • CI框架开发新浪微博登录接口源码完整版

    首先来看下流程:流程原理: 1.通过code获得access_token通过授权,并获取用户的信息(包括用户u_id)(这个u_id在后面的第三方登录表里面叫sina_id,那个表是需要自己建的) 2.查询第三方登录表,如果不存在用户sina_id,分2...2014-05-31
  • 记一次EFCore类型转换错误及解决方案

    这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22
  • js检测用户输入密码强度

    一个用Javascript检测用户输入密码强度的效果代码,以下代码主要是从以下四个方面检测用户输入的密码的强度的,有兴趣的朋友可以自己添加或修改成自己想要的形式! 1. 如果输入的密码位数少于5位,那么就判定为弱。 2. 如果...2015-10-23
  • php ajax注册验证用户名是否存在代码

    这是注册程序是一款当用户输入完用户名是,就会自动去数据库中查询用户要注册的用户名是否己经被注册了,如果是返回提示否则提示可以注册。 conn.php文件 代...2016-11-25
  • c# 常用框架汇总

    这篇文章主要介绍了c# 常用框架汇总,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下...2021-04-24
  • 微信小程序用户授权最佳实践指南

    这篇文章主要给大家介绍了关于微信小程序用户授权最佳实践的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-08
  • 搭建php Laravel框架教程详解

    Laravel框架我们用到的不多了,但如果使用需要搭配了,下面我们来看一篇关于搭建php Laravel框架教程详解,具体的操作细节如下所示,希望对各位有帮助。 一、安装 Compos...2016-11-25
  • Java SSM框架如何添加写日志功能

    这篇文章主要介绍了Java SSM框架如何添加写日志功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-25
  • 简单php cookie用户登录实例

    cookie 的用途之一是存储用户在特定网站上的密码和 id。另外,也用于存储起始页的首选项。在提供个人化查看的网站上,将要求阁下的网络浏览器利用阁下计算机硬驱上的少量...2016-11-25
  • ASP.NET中iframe框架点击左边页面链接 右边显示链接页面内容

    这篇文章主要介绍了ASP.NET中iframe框架点击左边页面链接,右边显示链接页面内容的实现代码,感兴趣的小伙伴们可以参考一下...2021-09-22
  • 初识angular框架后的所思所想

    这篇文章主要介绍了初识angular框架后的所思所想,学习认识angular后的一些个人问题总结,需要的朋友可以参考下...2016-02-21
  • MySQL验证用户权限的方法

    知识归纳因为MySQL是使用User和Host两个字段来确定用户身份的,这样就带来一个问题,就是一个客户端到底属于哪个host。 如果一个客户端同时匹配几个Host,对用户的确定将按照下面的优先级来排 基本观点越精确的匹配越优先...2015-11-08
  • sqlserver添加sa用户和密码的实现

    这篇文章主要介绍了sqlserver添加sa用户和密码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-07
  • node.js爬虫框架node-crawler初体验

    这篇文章主要介绍了node.js爬虫框架node-crawler的相关资料,帮助大家利用node.js进行爬虫,感兴趣的朋友可以了解下...2020-10-29