注册 登陆
浏览模式: 标准 | 列表 全部文章

显示当前路径

在centOS里面输入pwd即可显示当前路径-_-#

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}

Linux下的tar压缩解压缩命令详解

在linux里面操作 最基本的东西 而且经常用的东西 哈打包命令

» 阅读全文

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. }  

 

tar 打包 排除一些文件夹

tar cvfz dow.tar.gz xx/* --exclude xx/admin --exclude xx/css --exclude xx/images --exclude xx/uploads

成功排除了xx目录下面的admin css images uploads

mkdir 自动建立根目录

mkdir- p

可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

比如

mkdir -p /data/web/jackfeng/abc/dfg

就会自动建立 jackfeng目录下面的abc下面的dfg

Linux 继承权限

chmod -R 777 ./

php 编码输出设置

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

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

 

MySQL分表优化试验

MySQL分表优化试验 有兴趣的可以看看

» 阅读全文

用 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 安全编程,就是这么简单!