%09 %706 %2014 %23:%五 %PM

PHP serialize和md5的用法

作者
给本项目评分
(0 得票数)

在Joomla中看到下面的代码感觉比较奇怪 $signature = md5(serialize(array($captcha, $options)));就查了一下资料。找到了一些关于PHP serialize 和 md5的用法。

 

serialize

 调用形式:string serialize(mixed value)

 serialize是PHP的标准函数。作用是产生一个可存储的值的表示。该函数接受一个参数,并且返回一个字符串。该字符串代表了参数的字符串,并且该字符串可以存储于任何地方。

为什么要用serialize函数呢,因为这样就有助于存储和传递PHP的值,同时不丢失其类型和结构。当你需要恢复数据的时候,只需要调用unserialize()就行了。PHP5可以同时储存对象和方法。

 


 

md5 

调用形式:string md5(string str [,bool raw_output])

 md5也是PHP的标准函数。作用是计算字符串的MD5散列。如果成功返回字符串,失败返回false.该函数接受两个参数,一个是要操作的字符串,一个是设置数值。如果为true则为16字符的二进制。模式为false,表示32字符十六进制数

关于为什么要使用md5这个函数,还不是很清楚。

 


测试代码

 

<?php
	//测试字符串
	$before ="My name is zhangmin!";
	$after = serialize($before);
	$back = unserialize($after);
	echo $before."<br />";
	echo $after."<br />";
	echo $back."<br />";
	
	
	
	$md5_before = md5($before);
	$md5_after = md5($after);
	echo $md5_before."<br />";
	echo $md5_after."<br />";
	
	//测试数组
	 $testArray = array("zhang"=>"min" ,"chen"=>"liu");
	 echo serialize($testArray)."<br />";
	 print_r (unserialize(serialize($testArray)));
	 echo "<br />";
	
	//测试对象
	$me = new perpel();
	echo $me->getName()."<br />";
	
	$afterme = serialize($me);
	echo $afterme."<br/>";
	echo unserialize($afterme)->getName();
?>

<?php
	class perpel
	{
		private $name;
		private $age;
		
		public function perpel()
		{
			$this->name ="ZhangMin";
			$this->age =25;
		}
		
		public function setName($newName)
		{
			$this->name = $newName;
		}
		public function getName()
		{
			return $this->name;
		}
		
		public function getAge()
		{
			return $this->age;
		}
	
	}

?>

 

 

 

 


输出结果

 

My name is zhangmin!
s:20:"My name is zhangmin!";
My name is zhangmin!
aaef326ba483bd01d2ad7123e39c1bc0
5fa2e671cd03df695d6a0bb9cc876e48
a:2:{s:5:"zhang";s:3:"min";s:4:"chen";s:3:"liu";}
Array ( [zhang] => min [chen] => liu ) 
ZhangMin
O:6:"perpel":2:{s:12:"perpelname";s:8:"ZhangMin";s:11:"perpelage";i:25;}
ZhangMin

 

 

 

 

 

阅读 5918 次数 最后修改于 %10 %722 %2014 %00:%五 %AM