反序列化工具

模仿1024tools.com/unserialize写的反序列化小工具

用了两个文件完成的

话不多说,上源码

js、css文件下载地址

1.serialize.php

<?php
/**
 * 序列化 反序列化处理
 */
header('content-type:text/html;charset=utf8 ');

require_once 'function.php';

$result = array();
$str = '';
//验证post提交
if(getIsPostRequest()){
	$data = Input('data');
	$data1 = Input('data1');
	if(!empty($data)) {
		if(!is_serialized($data)) {
			echo "解析失败";die;
		}
		$result = unserialize($data);
		print_r($result);die;
	}

	if(!empty($data1)) {
		$str = serialize($data1);
		print_r($str);die;
	}
}
 ?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
 	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 	<script src="./js/jquery-3.2.1.js"></script>
 	<link rel="stylesheet" href="./ext/bootstrap/css/bootstrap.css" />
 	<title>序列化处理</title>
 	<style>
		#div1{float:left;width:800px;height:500px;margin-left:20px;}
		#div2{float:left;width:800px;height:500px;margin-left: 30px;}
		.text1{color:#fff;background:#000;border-style:none;width:800px;height:500px;resize:none;}
		.text2{color:#fff;background:#000;border-style:none;width:800px;height:500px;resize:none;}
		p{font-size: 18px;}
		h3{margin-left:20px;}
		.btn{margin-top:10px;}
 	</style>
 </head>
 <body>
 	
	<h3>php在线反序列化工具 unserialize serialize</h3>
	<div id="div1">
		<p>输入需要反序列化的字符串:<a href="javascript:;" id="li">样例</a></p>
		<textarea class="text1" id="text1"></textarea>
		<input type="button" class="btn btn-info" id="fan" value="反序列化"/>
		<input type="button" class="btn btn-warning" id="del" value="清空"/>
	</div>
	<div id="div2">
		<p>输出结果:</p>
		<textarea class="text2" id="text2"></textarea>
		<input type="button" class="btn btn-info" id="xu" value="序列化"/>
		<input type="button" class="btn btn-success" onClick="copy()" value="复制结果"/>
	</div>

 <script>
 	//序列化例子
 	$("#li").click(function(){
 		var content = 'a:2:{s:5:"title";s:9:"serialize";s:7:"content";s:7:"manager";}';
 		$(".text1").val(content);
 	});
 	//反序列化操作
 	$("#fan").click(function() {
 		var url = 'serialize.php';
 		var data = $(".text1").val();
 		if(data.length == 0) {
 			alert('输入为空');
 			return false;
 		}
 		$.post(url,{data:data}, function(flag){
 			$(".text2").val(flag);
 		});
 	});
 	//序列化操作
 	$("#xu").click(function() {
 		var url = 'serialize.php';
 		var data = $(".text2").val();
 		if(data.length == 0) {
 			alert('输入为空');
 			return false;
 		}
 		$.post(url,{data1:data}, function(flag){
 			$(".text1").val(flag);
 		});
 	});
 	//清空操作
 	$("#del").click(function() {
 		$(".text1").val('');
 		$(".text2").val('');
 	});
 	//复制结果
 	function copy() {
 		var Url2 = document.getElementById("text2");
		Url2.select(); // 选择对象
		document.execCommand("Copy"); // 执行浏览器复制命令
		alert("已复制好,可贴粘。");
 	}
 </script>
 </body>
 </html>

2.function.php

<?php
/**
 * 公共方法
 */

/**
 * 验证post请求或get请求
 * @since 2017/09/26
 */
function getIsPostRequest()
{
    return isset($_SERVER['REQUEST_METHOD']) && !strcasecmp($_SERVER['REQUEST_METHOD'],'POST');
}
 

/**
 * 获取POST/GET传递的数据
 * @param name 字段
 * @param default 默认结果
 */
function Input($name,$default='') {

    $value1 = isset($_POST[$name]) ? $_POST[$name] : '';
    $value2 = isset($_GET[$name]) ? $_GET[$name]:  $default;
    $value = $value1?$value1:$value2;
    return $value;
}

/**
 * 判断字符串是否属于字符串序列化
 * @param $data
 * @return bool
 */
function is_serialized($data)
{
    $data = trim($data);
    if ('N;' == $data)
        return true;
    if (!preg_match('/^([adObis]):/', $data, $badions))
        return false;
    switch ($badions[1]) {
        case 'a' :
        case 'O' :
        case 's' :
            if (preg_match("/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data))
                return true;
            break;
        case 'b' :
        case 'i' :
        case 'd' :
            if (preg_match("/^{$badions[1]}:[0-9.E-]+;\$/", $data))
                return true;
            break;
    }
    return false;
}

感悟:有好多东西做之前以为很简单,做起来也不一定十拿九稳,还是有一些自己不会的,做技术的手不能懒。

借用一首诗吧,身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃。

猜你喜欢

转载自blog.csdn.net/json_ligege/article/details/78204413