phpjson数据加密 php json encode

php如何获取json中数据

具体代码如下:

站在用户的角度思考问题,与客户深入沟通,找到喀什网站设计与喀什网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、网站制作、企业官网、英文网站、手机端网站、网站推广、域名与空间、虚拟空间、企业邮箱。业务覆盖喀什地区。

?php

$ch = curl_init();

$timeout = 5;

curl_setopt ($ch, CURLOPT_URL, '');

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$file_contents = curl_exec($ch);

curl_close($ch);

echo $file_contents;

?

PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。

它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,

执行效率比完全生成HTML标记的CGI要高许多;

PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

php 使用json加密的一个问题

用正则替换

$string='{"id":"2","username":"test","email":"123@qq.com","logintime":null,"loginip":null,"status":"0"}';

$new_str=preg_replace('/"([a-z]+)"\:/','\1:',$string);

输出$new_str是去掉了key键的引号:

{id:"2",username:"test",email:"123@qq.com",logintime:null,loginip:null,status:"0"}

PHP解密Unicode及Escape加密字符串

在json中不支持中文,用它传送中文数据就会出现数据丢失或者乱码,必须在传送前对要发送的字符串进行编码,由于传送过去需要用js进行数据解析,考虑

到js中有unescape函数,故若在php中有个escape函数,对数据进行编码,在客户端用unescape进行

解码,这样就会方便很多。

本文给大家分享一个PHP解密Unicode及Escape加密字符串函数

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

?php

function

uni_decode($s)

{

preg_match_all('/#([0-9]{2,5});/',

$s,

$html_uni);

preg_match_all('/[%]u([0-9a-f]{4})/ie',

$s,

$js_uni);

$source

=

array_merge($html_uni[0],

$js_uni[0]);

$js

=

array();

for($i=0;$icount($js_uni[1]);$i++)

{

$js[]

=

hexdec($js_uni[1][$i]);

}

$utf8

=

array_merge($html_uni[1],

$js);

$code

=

$s;

for($j=0;$jcount($utf8);$j++)

{

$code

=

str_replace($source[$j],

unicode2utf8($utf8[$j]),

$code);

}

return

$code;//$s;//preg_replace('/u([0-9a-f]{4})/ie',

chr(hexdec('1')),

$s);

}

function

unicode2utf8($c)

{

$str=;

if

($c

0x80)

{

$str.=chr($c);

}

else

if

($c

0x800)

{

$str.=chr(0xc0

|

$c6);

$str.=chr(0x80

|

$c

0x3f);

}

else

if

($c

0x10000)

{

$str.=chr(0xe0

|

$c12);

$str.=chr(0x80

|

$c6

0x3f);

$str.=chr(0x80

|

$c

0x3f);

}

else

if

($c

0x200000)

{

$str.=chr(0xf0

|

$c18);

$str.=chr(0x80

|

$c12

0x3f);

$str.=chr(0x80

|

$c6

0x3f);

$str.=chr(0x80

|

$c

0x3f);

}

return

$str;

}

$str='%u5927%u5BB6%u597D%uFF0C我是孤魂!br

/u8FD9u662Fu6D4Bu8BD5u6587u672CuFF01';

echo

uni_decode($str);

//

大家好,我是孤魂!这是测试文本!

在网上搜索一把,很多用php实现的escape函数,大同小异

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

function

phpescape($str){

preg_match_all(/[x80-xff].|[x01-x7f]+/,$str,$newstr);

$ar

=

$newstr[0];

foreach($ar

as

$k=$v){

if(ord($ar[$k])=127){

$tmpString=bin2hex(iconv(GBK,ucs-2,$v));

if

(!eregi(WIN,PHP_OS)){

$tmpString

=

substr($tmpString,2,2).substr($tmpString,0,2);

}

$reString.=%u.$tmpString;

}

else

{

$reString.=

rawurlencode($v);

}

}

return

$reString;

}

以上所述就是本文的全部内容了,希望大家能够喜欢。

php解析json数组问题。

$a = json_decode('{"status":0,"total":1,"size":1,"contents":[{"title":"111","location":[113.11509,23.012777],"city":"\u4f5b\u5c71\u5e02","create_time":1385386545,"geotable_id":38432,"address":"\u5e7f\u4e1c\u7701\u4f5b\u5c71\u5e02\u7985\u57ce\u533a\u6c7e\u6c5f\u5357\u8def8\u53f7","province":"\u5e7f\u4e1c\u7701","district":"\u7985\u57ce\u533a","map_id":"1","uid":42504634,"coord_type":3,"type":0,"distance":370,"weight":0}]}',true);

json_decode第二个参数true

解析出来就是array(4) { ["status"]= int(0) ["total"]= int(1) ["size"]= int(1) ["contents"]= array(1) { [0]= array(14) { ["title"]= string(3) "111" ["location"]= array(2) { [0]= float(113.11509) [1]= float(23.012777) } ["city"]= string(9) "佛山市" ["create_time"]= int(1385386545) ["geotable_id"]= int(38432) ["address"]= string(43) "广东省佛山市禅城区汾江南路8号" ["province"]= string(9) "广东省" ["district"]= string(9) "禅城区" ["map_id"]= string(1) "1" ["uid"]= int(42504634) ["coord_type"]= int(3) ["type"]= int(0) ["distance"]= int(370) ["weight"]= int(0) } } }

这样的数组会取内容了吧

如何让 PHP json

json里面的中文是Unicode编码后的,两个方案,php5.4版本以上的可以使用

echo json_encode("中文", JSON_UNESCAPED_UNICODE); //"中文"

代码输出中文

方案二,使用下面函数,对php版本没不限制

/**

* 不转义中文字符的 json 编码

* @param array $arr 待编码数组

* @return string

*/

function json($arr) {

$str = json_encode($arr);

$search = "#\\\u([0-9a-f]+)#ie";

$replace = "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))";

return preg_replace($search, $replace, $str);

}

php代码怎么加密最好,不能破解的那种

在使用PHP开发Web应用的中,很多的应用都会要求用户注册,而注册的时候就需要我们对用户的信息进行处理了,最常见的莫过于就是邮箱和密码了,本文意在讨论对密码的处理:也就是对密码的加密处理。

MD5

相信很多PHP开发者在最先接触PHP的时候,处理密码的首选加密函数可能就是MD5了,我当时就是这样的:

$password = md5($_POST["password"]);

上面这段代码是不是很熟悉?然而MD5的加密方式目前在PHP的江湖中貌似不太受欢迎了,因为它的加密算法实在是显得有点简单了,而且很多破解密码的站点都存放了很多经过MD5加密的密码字符串,所以这里我是非常不提倡还在单单使用MD5来加密用户的密码的。

SHA256 和 SHA512

其实跟前面的MD5同期的还有一个SHA1加密方式的,不过也是算法比较简单,所以这里就一笔带过吧。而这里即将要说到的SHA256 和 SHA512都是来自于SHA2家族的加密函数,看名字可能你就猜的出来了,这两个加密方式分别生成256和512比特长度的hash字串。

他们的使用方法如下:

?php

$password = hash("sha256", $password);

PHP内置了hash()函数,你只需要将加密方式传给hash()函数就好了。你可以直接指明sha256, sha512, md5, sha1等加密方式。

盐值

在加密的过程,我们还有一个非常常见的小伙伴:盐值。对,我们在加密的时候其实会给加密的字符串添加一个额外的字符串,以达到提高一定安全的目的:

?php

function generateHashWithSalt($password) {$intermediateSalt = md5(uniqid(rand(), true));$salt = substr($intermediateSalt, 0, 6);

return hash("sha256", $password . $salt);}

Bcrypt

如果让我来建议一种加密方式的话,Bcrypt可能是我给你推荐的最低要求了,因为我会强烈推荐你后面会说到的Hashing API,不过Bcrypt也不失为一种比较不错的加密方式了。

?php

function generateHash($password) {

if (defined("CRYPT_BLOWFISH") CRYPT_BLOWFISH) {$salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);return crypt($password, $salt);

}

}

Bcrypt 其实就是Blowfish和crypt()函数的结合,我们这里通过CRYPT_BLOWFISH判断Blowfish是否可用,然后像上面一样生成一个盐值,不过这里需要注意的是,crypt()的盐值必须以$2a$或者$2y$开头,详细资料可以参考下面的链接:

更多资料可以看这里:

Hashing API

这里才是我们的重头戏,Password Hashing API是PHP 5.5之后才有的新特性,它主要是提供下面几个函数供我们使用:

password_hash() – 对密码加密.

password_verify() – 验证已经加密的密码,检验其hash字串是否一致.

password_needs_rehash() – 给密码重新加密.

password_get_info() – 返回加密算法的名称和一些相关信息.

虽然说crypt()函数在使用上已足够,但是password_hash()不仅可以使我们的代码更加简短,而且还在安全方面给了我们更好的保障,所以,现在PHP的官方都是推荐这种方式来加密用户的密码,很多流行的框架比如Laravel就是用的这种加密方式。

?php

$hash = password_hash($passwod, PASSWORD_DEFAULT);对,就是这么简单,一行代码,All done。

PASSWORD_DEFAULT目前使用的就是Bcrypt,所以在上面我会说推荐这个,不过因为Password Hashing API做得更好了,我必须郑重地想你推荐Password Hashing API。这里需要注意的是,如果你代码使用的都是PASSWORD_DEFAULT加密方式,那么在数据库的表中,password字段就得设置超过60个字符长度,你也可以使用PASSWORD_BCRYPT,这个时候,加密后字串总是60个字符长度。

这里使用password_hash()你完全可以不提供盐值(salt)和 消耗值 (cost),你可以将后者理解为一种性能的消耗值,cost越大,加密算法越复杂,消耗的内存也就越大。当然,如果你需要指定对应的盐值和消耗值,你可以这样写:

?php

$options = [

'salt' = custom_function_for_salt(), //write your own code to generate a suitable salt'cost' = 12 // the default cost is 10

];

$hash = password_hash($password, PASSWORD_DEFAULT, $options);密码加密过后,我们需要对密码进行验证,以此来判断用户输入的密码是否正确:

?php

if (password_verify($password, $hash)) {

// Pass

}

else {

// Invalid

}

很简单的吧,直接使用password_verify就可以对我们之前加密过的字符串(存在数据库中)进行验证了。

然而,如果有时候我们需要更改我们的加密方式,如某一天我们突然想更换一下盐值或者提高一下消耗值,我们这时候就要使用到password_needs_rehash()函数了:

?php

if (password_needs_rehash($hash, PASSWORD_DEFAULT, ['cost' = 12])) {// cost change to 12

$hash = password_hash($password, PASSWORD_DEFAULT, ['cost' = 12]);// don't forget to store the new hash!

}

只有这样,PHP的Password Hashing API才会知道我们重现更换了加密方式,这样的主要目的就是为了后面的密码验证。

简单地说一下password_get_info(),这个函数一般可以看到下面三个信息:

algo – 算法实例

algoName – 算法名字

options – 加密时候的可选参数

所以,现在就开始用PHP 5.5吧,别再纠结低版本了。

Happy Hacking


标题名称:phpjson数据加密 php json encode
网页网址:http://cdiso.cn/article/docgihe.html

其他资讯