最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • PHP取消序列化教程

    正文概述 转载于:掘金(迪鲁宾)   2021-08-09   764

    PHP取消序列化教程

    php非序列化简介

    PHP unserialize是一个可以用来将序列化的数据转换成实际的用户输入数据的函数;它是一个与序列化函数相反的过程,主要关注数组,映射集合,它将为每个元素计算数组索引,大尺寸或其他一些复杂的数据结构,我们使用一些默认的方法来操作数据,如果用户输入不能被序列化,unserialize()方法将返回布尔值,所以在输出控制台返回错误,对象是为unserialize函数单独创建的。

    语法。

    PHP对变量、关键字和函数有自己的语法,用于创建更复杂的基于Web的应用程序。一般来说,PHP的序列化格式不像serialize()函数那样有很好的记录;它支持序列化的整数、浮点数、布尔值、字符串、数组。对象,并且它还包括其他的引用,以便在unserialize的实现中支持。

    <?php $input= array(‘’,’’); $var = serialize($input); $var1 = unserialize($var); ---some php codes based on the user needs--- ?>

    上面的代码是在PHP中使用serialize()和unserialize()函数的基本语法。它支持所有的数据类型和其他默认函数。

    unserialize函数在PHP中如何工作?

    • 非序列化函数依赖于序列化函数;无论在该函数上调用和使用什么数据,它都将被完全序列化,并带有键。如果我们想访问这些数据,我们要在代码中对这些数据进行反序列化或取消序列化。然后,只有我们访问数据;它也被用于文件的概念。使用这些序列化和反序列化()函数总是返回布尔条件,这将是安全的,并且对反序列化的对象有更多的保护,或者我们可以把它称为不可信任的数据。因此,它将避免一些其他的恶意软件和来自机器外部的病毒。它也能保证代码注入的安全,甚至数据库端也能避免一些不受信任的恶意软件网站的SQL注入攻击。
    • 一般来说,unserialize()函数需要两个参数,str和options;str是其中一个参数,它包含等待被反序列化的序列化字符串,options是其中一个数组,用于控制某些功能行为,它只接受有效的用户,特别是内置的类,如allowed_classes。它只接受指定的类名,特别是一些方法,如_wakeup()和_destruct();这些方法是通过使用序列化的对象来实现的;当我们使用这个方法时,它在特定对象上调用unserialize()函数时自动执行。

    PHP unserialize的例子

    下面给出的是PHP unserialize的例子。

    例子 #1

    代码。

    <?php $inputs = serialize(array('Siva', 'Raman', 'Sivaraman', 'wdigb', 'dwiugv', '87dhg', 'wdhgv', 'edhgfv', 'hfe', 'wgieufv', 'ehoije', 'iwuoegf', 'wuieguv','jdgv', 'wqgdjf', 'khwdjgh','jdhfdkswi', 'uqiwuke', 'iqweyf', 'oiuqiwleyugu' )); echo $inputs . '<br>'; $vars = unserialize($inputs); var_dump ($vars); echo $vars; ?>

    输出。

    PHP取消序列化教程

    在上面的例子中,我们在同一代码中使用了serialize和unserialize()函数。每当用户向应用程序提供输入时,它将存储在一个单独的变量中,它是序列化的变量,它也将通过使用echo语句打印在控制台。我们想通过使用unserialize()函数来取消序列化数据,它将被存储在一个单独的变量中,同时也将通过使用同样的echo语句来打印。如果我们想在控制台中打印结果,我们将使用其他默认的方法,如print、echo等,这些是在PHP脚本中使用的一些方法。

    例子 #2

    代码。

    <?php class demo { public $vars; } class demo1 { public $vars1; } class demo2 extends demo { public $vars2, $vars3; } class demo3 extends demo2{ public $vars4; } class demo4 extends demo3 { public $vars5; } class demo5 extends demo4 { public $vars6; } class demo6 extends demo5{ public $vars7; } class demo7 extends demo6 { public $vars8,$vars9, $vars10; } $c1 = new demo(); $c1->vars = 1234; $c3 = new demo2(); $c3->vars2 = "Siva"; $c2 = new demo1(); $c2->vars1 = 2756876; $d1 = serialize($c1); $d2 = serialize($c2); $d5 = serialize($c3); $d3 = unserialize($d1, ["allowed_classes" => true]); $d6 = unserialize($d5, ["allowed_classes" => true]); $d4 = unserialize($d2, ["allowed_classes" => ["demo", "demo1"]]); $d7 = unserialize($d5, ["allowed_classes" => ["demo", "demo1", "demo2"]]); echo "Welcome To My Domain is: " . $d3->vars, $d6 ->vars2; echo "<br />"; echo "Result of demo1 d3 memeber is: " . $d4->vars1; echo "<br/>"; echo "Result of demo2 d7 memeber is: " . $d7->vars2; ?>

    输出。

    PHP取消序列化教程

    在第二个例子中,我们使用了同样的serialize和unserialize概念。不过,这里我们还是使用了一些类。此外,每个类的父子关系都有自己独立的变量,并带有公共访问修改器,以便在类之外利用相同的变量;通过这样的使用对象,我们可以初始化独立变量的值。它们将被序列化并存储在一个单独的变量上;之后,我们可以反序列化变量值并将其作为单独的变量存储。我们可以为序列化和反序列化的数据添加n个具有单独值的变量。我们使用 allowed_classes 来验证代码中的序列化数据。

    例子 #3

    代码。

    <?php class demo { public $vars; } $vars1= new demo(); $vars1->vars= "siva"; $vars2= serialize($vars1); echo "Welcome To My Domain<br> '$vars2'"; echo "<br><br>"; $vars3= unserialize($vars2); echo "Have a Nice Day <br>"; echo var_dump($vars3); echo "<br> <br>"; echo "Thank you users your net result is shown" . $vars3->vars; ?>

    输出。

    PHP取消序列化教程

    在最后一个例子中,我们同时使用了序列化和反序列化函数,我们使用键值对来反序列化PHP中的数组和对象。我们使用了一个值为 "Siva "的变量,它将是一个纯文本字符串,然后被转换为被序列化和非序列化的对象。

    总结

    在PHP中,我们使用默认的函数、变量和关键字来创建Web应用程序的用户友好性质。就像它可以使用一些默认的类和方法在基于Web的应用程序中创建一些高级技术,所以我们使用一些技术,如serialize()和unserialize()来存储和检索更安全的数据。


    起源地下载网 » PHP取消序列化教程

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元