注册 登陆
浏览模式: 标准 | 列表 分类: PHP

smarty 数组输出

一般数字索引用section,常用来循环显示所取得的数据库多维结果数组,关联索引用foreach。
如果只是一维数组,直接{$数组.下标}就可取值,没必要循环取。
$uu[ 'kaixin ']= "我的最大三定律肤色地方 ";
$uu[ 'io ']= "111色地方 ";
$uu[ 'i2o ']= "111111111色地方 ";

$smarty-> assign( "StieInfo ",$uu);
这种情况用foreach
tpl:
-------------
{foreach   item=value   key=key   from=$StieInfo}
{$key}   :   {$value}
{/foreach}

PHP日期比较

竟然发现字符串直接去对比日期会犯错误结果-_-@

  1. PHP里没有内置的日期比较函数,不过处理一下格式还是可以比较的,代码如下:  
  2. $date2=”2007-1-20″;  
  3. $date=”2006-1-1″;  
  4.  
  5. if(date(”Y-m-d”,strtotime($date))>date(”Y-m-d”,strtotime($date2))){  
  6. echo “Y”;  
  7. }  
  8. else{  
  9. echo “N”;  
  10. }  

 

php 编码输出设置

页面只输出了 汉字没有header的话 在ie里面有可能会输出乱码。所以得要用header定义一下

  1. <?php   
  2. header('Content-Type: text/html; charset=UTF-8');   
  3. echo "编码测试";   
  4. ?>  

 

用 PHPRPC 实现 Ajax 安全登录

昨天我举了个用 PHPRPC 实现 Ajax 级联下拉菜单 的例子,那个例子中我们重点要演示的是用 PHPRPC 实现 Ajax 效果是多么的简单。今天我们这个例子主要演示用 PHPRPC 内置的安全加密机制来实现安全登录是多么简单。当然它同样可以用于密码设置、其它关键保密数据的传输等领域。

 

这个例子比昨天的例子还要简单,先来看服务器端:

  1. <?php  
  2. function login($username$password) {  
  3.     if (($username == "root") && ($password == "admin")) {  
  4.         $_SESSION['user'] = "root";  
  5.         return true;  
  6.     }  
  7.     $_SESSION['user'] = null;  
  8.     return false;  
  9. }  
  10.    
  11. require_once("phprpc_server.php");  
  12. new phprpc_server(array('login'));  
  13. ?> 

 

这段代码太简单了,我不需要多说什么大家也能够看明白。不过大家会发现,在 login 函数中我用了 $_SESSION 变量,但是并没有在什么位置上写 session_start(),原因在于建立加密连接时,已经自动调用了 session_start(),因此不需要再单独写 session_start() 了。为了验证它是否生效,我们在后面的另一个页面中(admin.php),将判断这里设置的 $_SESSION 变量,并根据它来报告登录成功或者没成功跳回到登录页面。

那再来看看客户端,客户端我们将 JavaScript 跟 HTML 分离了,先来看看 html 页面。

 

  1. <html> 
  2. <head> 
  3. <script type="text/javascript" src="phprpc_client.js"></script> 
  4. <script type="text/javascript" src="login.js"></script> 
  5. </head> 
  6. <body> 
  7. <div align="center"> 
  8. 帐号:<input type="text" id="username" /> 
  9. 密码:<input type="password" id="password" /> 
  10. <input type="button" value="登录" id="loginbtn" /> 
  11. </div> 
  12. </body> 
  13. </html> 

这个页面很简单,只是设置好了表单输入框和按钮,所有的处理都是在 login.js 中完成的。不过需要注意的是这里的 phprpc_client.js 是 full 压缩版本,因为我们需要用到它的加密传输功能。我们来看看 login.js 是怎么写的。

  1. // 创建 phprpc 客户端对象 rpc  
  2. phprpc_client.create('rpc');  
  3.    
  4. // 初始化带有加密连接的 rpc 服务,第二个参数表示是否创建加密连接  
  5. rpc.use_service('rpc.php'true);  
  6.    
  7. // 登录函数  
  8. function login() {  
  9.     // 如果加密连接已经初始化完毕,则验证用户名密码  
  10.     if (rpc.ready) {  
  11.         // 获取用户输入的用户名和密码  
  12.         var username = document.getElementById('username').value;  
  13.         var password = document.getElementById('password').value;  
  14.         // 设置远程过程调用为单向加密,  
  15.         // 即传递的参数是加密的,但返回结果不加密  
  16.         rpc.encrypt = 1;  
  17.         // 调用远程过程验证用户名密码是否正确,并设置回调函数。  
  18.         rpc.login(username, password, function (result) {  
  19.             // 如果返回结果正确,则转到登录后的页面  
  20.             if (result === true) {  
  21.                 window.location.replace('admin.php');  
  22.             }  
  23.             // 否则提示用户名密码不正确  
  24.             else {  
  25.                 alert('用户名密码不正确!');  
  26.             }  
  27.         });  
  28.     }  
  29.     // 如果连接尚未初始化完毕,则等待 100 毫秒后重试。  
  30.     else {  
  31.         window.setTimeout('login();', 100);  
  32.     }  
  33. }  
  34.    
  35. window.onload = function () {  
  36.     document.getElementById('loginbtn').onclick = login;  

大家会发现除了在调用 use_service 时,设置了第二个参数为 true 外,还在调用服务器端的 login 函数前,设置了 rpc.encrypt 的值为 1,这里 1 表示单向加密传输,单向加密传输是指调用的参数会以加密的方式传给服务器,但是返回的结果不加密(如果参数是引用参数的话,参数返回时也是加密的)。如果 rpc.encrypt 的值为 0,则表示不加密;如果是 2,则表示双向加密。

这里因为只有用户名和密码是敏感数据,需要保证它在传递给服务器时不被截获(即使截获也是加密的内容,无法破解),但返回的结果成功还是不成功并不是什么需要保密的数据,所以可以不加密。因此这里选择了单向加密传输。

大家也不必担心密钥是否会被截获,因为密钥是通过密钥交换算法,在服务器端和客户端(浏览器端)随机同步生成的,但没有经过网络传输,在网络上传输的是生成同步密钥的相关信息,但是只获取到这些信息是不足以算出密钥的,因此可以保证密钥的安全性。而加密算法本身也是一个强加密算法,密钥长度是 128 位,在没有密钥的情况下采用穷举法也是无法破解的。

大家会发现登录成功后,我们转向了 admin.php 页面,下面是这个页面的一个简单的例子:

  1. <?php  
  2.     session_start();  
  3.     if ($_SESSION['user'] == 'root') {  
  4.         echo "登录成功!";  
  5.     }  
  6.     else {  
  7.         header("Location: index.html");  
  8.     }  
  9. ?> 

这里需要自己 sestion_start() 一下了,之后就可以验证 $_SESSION[’user’] 是否设置了。

通过 PHPRPC,你不再需要为 Ajax 程序中数据的安全性而头痛,也不必为回话支持而苦恼,这一切 PHPRPC 都已经帮你自动完成了,你只需要关注具体的事务就可以了。用 PHPRPC 来做 Ajax 安全编程,就是这么简单!

php比较完美的Mail检测程序

 找了好几个检测email地址的函数 只有下面这个接近完美!

  1. function checkEmail($str)   
  2. {  
  3.   if (eregi("^[0-9a-z][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}[0-9a-z]\.){1,4}[a-z]{2,4}$"$str))   
  4.     return true;  
  5.   else 
  6.     return false;    

 

phpmyadmin出现“无法载入mcrypt扩展,请检查PHP配置”

先用phpinfo();找出你的php.ini配置文件所在 然后打开编辑

搜索extension=php_mcrypt.dll把前面的;给去掉

修改完毕 就重启apache或者iis

eclipse快捷键大全

eclipse快捷键大全

» 阅读全文

php删除目录 复制目录 判断目录是否为空

php删除目录 复制目录 判断目录是否为空~~~~~~~~

» 阅读全文

php中判断一个字符串包含另一个字符串的方法

php中判断一个字符串包含另一个字符串的方法

  1. $name = "001x.gif";   
  2. $pan = "x";   
  3. $con = explode($pan,$name);   
  4. if (count($con)>1):   
  5. echo $name."中包含".$pan;   
  6. else:   
  7. echo $name."中没有包含".$pan;   
  8. endif;  

 

php 获得前一个月的月份

 

  1. date("Y.m",strtotime("-31 days"))