-
//* 将用户数据保存到cookie中的一个简单方法 */ $secureKey = 'imooc'; //加密密钥 $str = serialize($userinfo); //将用户信息序列化 //用户信息加密前 $str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB)); //用户信息加密后 //将加密后的用户数据存储到cookie中 setcookie('userinfo', $str); //当需要使用时进行解密 $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB); $uinfo = unserialize($str); echo "解密后的用户信息:<br>"; print_r($uinfo);
查看全部 -
php读取文件内容
php有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents(),可以将整个文件全部读取到字符串中。
$contents=file_get_contents("./test.txt");
file_get_contents可以通过参数控制读取内容的开始点以及长度。
$content=fule_get_contents('./test.txt',null.null,100,500);
php中也有类似c语言操作文件的方法,使用fopen,fgets,fread等方法,fgets可以从文件指针中读取一行,freads可以读取指定长度的字符串。
$fp=fopen('./test.txt','rb'); while(!feof($fp)){ echo fgets($fp);..读取一行 } fclose($fp);
使用fopen打开的文件最好使用发close关闭文件指针,以避免文件句柄被占用
查看全部 -
使用session来存储登陆信息
session可以存储多种类型的数据,常用来存储登陆数据,购物车数据等等。
一般来说登陆信息既可以存在cookie中也可以存在session中,差别在于session可以方便的存储多种数据类型,而cookie只能存储字符串类型,,同时对于一些安全性较高的数据cookie需要进行格式化加密存储,而session存储在服务端安全性更高。
php中使用base64进行加密:
$secureKey = 'imooc'; //加密密钥 $str = serialize($userinfo); //将用户信息序列化 $str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));
php使用base64解密
$secureKey = 'imooc'; //加密密钥 //当需要使用时进行解密 $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB);
查看全部 -
删除与销毁session
删除某一个session可以使用php中的unset函数,删除后会从全局变量$_SESSION中去除
要删除所有session,可以使用session_destroy();函数销毁当前session,session_destroy函数会删除所有数据,但是session_id仍然存在。
session_destroy并不会立即销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,如果需要立即销毁$_SESSION,可以使用unset函数
如果需要同时销毁cookie中的session_id,一般做退出操作会使用到,可以显式的调用setcookie方法删除session_id的cookie值。
查看全部 -
使用session
在php中使用session非常简单,先执行session_start()方法开启session,然后通过全局变量$_SESSION进行session读写。
session会自动对设置的值进行encode和decode,因此session可以支持任意数据类型,包括数据与对象等。
默认情况下,session是以文件的形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,这样会导致当前用户的其他并发访问无法执行等待,可以采用缓存或者数据库的形式存储来解决这个问题。
查看全部 -
session和cookie的异同
cookie存储在客户端,建立起用户与服务器之前的联系,通常可以解决很多问题,但同时存在一些局限
1、cookie相对不是太安全,容易被盗用导致cookie欺骗
2、单个cookie的值最大只能存储4k
3、每次请求都需要进行网络传输,占用宽带
session将用户的会话数据存储在服务端,没有大小限制,通过一个session_id进行用户识别,php默认情况下session_id是通过cookie来保存,也可以通过参数来实现,只要能将session_id传递到服务端进行识别的机制都可以使用session。
//开始使用session session_start(); //设置一个session $_SESSION['TEST']="VALUE"; //显示当前session_id echo session_id(); //读取session值 echo $_SESSION['TEST']; //销毁一个session unset($_SESSION['TEST']);
查看全部 -
cookie中的路径控制来控制设置cookie在哪个路径下有效,默认为'/',在所有路径下有效,当设置了其他路径过后则只在设定的路径已经子路径下有效。
一般情况下大多是使用所有路径,只有在极少数有特殊需求时会设置路径,这种情况下只在指定的路径中才回传递cookie值,可以节省数据的传输,增强安全性以及提高性能。
查看全部 -
cookie的删除与过期时间
在php中删除cookie也是采用setcookie来实现,将过期时间设置到当前时间之前则该cookie自动失效。
setcookie('test','',time()-1);
也可以通过header来删除cookie
header("Set-Cookie:test='';expires=".gmdata('D,d M Y H:i:s \G\M\T',time()-1)");
这里用到了gmdate,用来生成格林威治标准时间,以便排除时间差影响。
查看全部 -
php设置cookie最常用的方法是使用setcookie函数,setcookie具有7个可选参数,常用为前5个:
name(cookie名称):可以通过$_COOKIE['NAME']进行访问
value(cookie的值)
exprie(过期时间):Unix时间戳格式,默认0,标识浏览器关闭后失效
path(有效路径):若设置为'/'则整个网站都有效
domain(有效域):默认整个域名有效
php中还有一个设置cookie的函数setrawcookie,setrawcookie与setcookie基本一样,唯一区别就是value值不会自动进行urlencode,因此使用时需要手动进行urlencode。
因为cookie是用过http标头进行设置的,所以也可以使用header方法进行设置。
header("Set-Cookie:cookie_name=value");
查看全部 -
cookie简介
cookie是保存在客户端浏览器上的数据,我们通过cookie来跟踪与存储用户数据,一般情况下,cookie通过http headers从服务端返回到客户端,多数web程序都支持cookie的操作,因为cookie是存在于http标头之中,所以必须在其他信息输出以前进行设置,类似于heade函数的使用限制。
php通过setcookie函数进行cookie的设置,任何从浏览器发回的cookie,php都会自动存储在$_COOKIE的全局变量中,可以通过$_COOKIE["key"]的形式读取cookie的值。
php中cookie使用非常广泛,进程用来存储用户的登陆信息,购物车等,在使用session时候经常使用cookie来存储会话id来识别用户,cookie具有有效期,有效期结束后cookie会自动从客户端删除。为了更好的进行安全控制,cookie还可以设置域跟路径。
查看全部 -
正则匹配常用案例:
匹配数字字母与下划线:/^\w+$/i 匹配邮箱格式:/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/ 匹配手机号:/^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/ 匹配中文字符:/[\u4e00-\u9fa5]/gm 匹配身份证号:/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/ 匹配双字节字符:/[^\x00-\xff]/igm 匹配行首行位空白:/(^\s*)|(\s*$)/ 匹配url地址:/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i 匹配邮编:/^[1-9]\d{5}(?!\d)$/ 匹配日期:/^[1-2][0-9][0-9][0-9]-[0-1]{0,1}[0-9]-[0-3]{0,1}[0-9]$/
查看全部 -
正则表达式搜索与替换
通过正则搜索与替换可以调整目标字符串格式,改变字符串中匹配字符串的顺序等
例:
$string = 'April 15, 2014'; $pattern = '/(\w+) (\d+), (\d+)/i'; $replacement = '$3, ${1} $2'; echo preg_replace($pattern, $replacement, $string); //结果为:2014, April 15
以上例子中通过小括号进行匹配内容的分组,$1表示第一个匹配到的字符串,${1}与$1是等效的。
查看全部 -
对象的高级特性
使用比较运算符==判断两个实例的所有属性是否相等
使用全等运算符===判断是否为同一个对象
使用系统方法serialize把对象序列化成字符串,用于存储或者传递数据
使用系统方法unserialize把字符串反序列化成对象
查看全部 -
重载
php中的重载指的是动态的创建属性与方法,通过魔术方法来实现的,属性的重载通过__set、__get、__isset、__unset来分别实现对属性的赋值、读取、判断属性是否设置、销毁属性。
方法的重载通过__call方法,在调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic方法重载。
__call($name, $args)
通过判断重载方法的$name值确定调用方法
查看全部 -
对象继承:
通过关键字extends实现类的继承
class 子类名 extends 父类名{
}
查看全部
举报