首页  >  文章  >  后端开发  >  解决php cookie乱码的问题

解决php cookie乱码的问题

藏色散人
藏色散人原创
2020-07-21 10:46:493137浏览

php cookie乱码的解决办法:首先打开相应的PHP代码文件;然后通过php中的内置函数“unicode_encode”将一个unicode字符串转变为想要的编码方式即可解决乱码问题。

解决php cookie乱码的问题

PHP 获取COOKIE值与中文乱码解决方法

php中获取cookie值非常的简单只要COOKIE[]中间是cookie id名就可以获取到了,下面来简单的给大家介绍下php中cookie的一个使用例子。

推荐:《PHP教程

给cookie赋值

setcookie (name, value, expire, path, domain)

例如:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy6428&#39;)">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy6428>
<?php
setcookie(“user”, “Alex Porter”, time() 3600);
?>

如果我们要获取user值如何操作

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy6844&#39;)">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy6844>
<?php
echo $_COOKIE["user"];
print_r($_COOKIE);
?>

如果我们没设置user cookie那么我们执行时会出错了,这样我们可以使用isset函数来加以判断。

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy3666&#39;)">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy3666>
<?php
if(isset($_COOKIE["user"]))
echo"Welcome".$_COOKIE["user"]."!<br>";
else
echo"Welcomeguest!<br>";
?>

中文总是乱码

比如“小伟”获取后是“%u5C0F%u4F1F”

这个其实不是乱码,而是unicode的编码,在php中有一个内置函数叫unicode_encode可以将一个unicode字符串转变为你想要的编码方式,函数原型为:string unicode_encode ( unicode input, string encoding )

这里有一个例子可以参考一下:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy2845&#39;)">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy2845>
<?php
  header (&#39;Content-Type: text/plain; charset=ISO-8859-2&#39;);
  $encoded = unicode_encode (&#39;\u0150\u0179&#39;, &#39;ISO-8859-2&#39;);
  echo &#39;Unicode semantics: &#39;, ini_get (&#39;unicode_semantics&#39;), PHP_EOL, &#39;The string itself: &#39;;
  printf ($encoded . PHP_EOL, &#39;%s&#39;);
  echo &#39;The length of the string: &#39;, strlen ($encoded);
?>

例子 结合js php实现页面浏览统计

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy2948&#39;)">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy2948>
// 浏览页面次数
$visited = (int)$_COOKIE[&#39;pageVisits&#39;] 1;
setcookie( &#39;pageVisits&#39;,  // cookie名
$visited,  // cookie值
time() 7*24*60*60  // 过期时间
);

当运行这个页面时服务器端会写入个cookie值,用于保存你访问该页面的次数。这里应用到了php的setcookie方法。

输出这个值:

现在来看如何使用js获取和设置cookie

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy2304&#39;)">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy2304>
var cookie = $.cookie(‘demoCookie’);
if(cookie) $(‘.jq-text’).text(cookie).show();
$(‘.fields a’).click(function(e){
var text = $(‘#inputBox’).val();
// 设置cookie的值
$.cookie(‘demoCookie’,text,{expires: 7});
$(‘.jq-text’).text(text).slideDown(‘slow’);
e.preventDefault();
});
$(‘#form1′).submit(function(e){ e.preventDefault(); })
var cookie = $.cookie(‘demoCookie’);

获取键名demoCookie的值(如果不存在返回的是null)。

$.cookie(‘demoCookie’,text,{expires: 7});

当点击保存链接的时候,将输入框的值写入cookie。

以上是解决php cookie乱码的问题的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn