Rumah > pembangunan bahagian belakang > tutorial php > 一分钟解读js与PHP 设置cookie的相互读取(附代码)

一分钟解读js与PHP 设置cookie的相互读取(附代码)

慕斯
Lepaskan: 2023-04-10 07:54:02
ke hadapan
3039 orang telah melayarinya

本篇文章给大家分享一分钟解读js与PHP 设置cookie的相互读取(附代码)有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

一分钟解读js与PHP 设置cookie的相互读取(附代码)

PHP与JavaScript下Cookie的交互使用
下面的例子列出几种情形交互场景,列出JS和php交互的方法。总结下,以免日后再为cookie问题困扰。
setcookie.php


<?php
    setcookie(&#39;php_cn_ck&#39;,&#39;php_中文_cookie&#39;);
setcookie(&#39;php_en_ck&#39;,&#39;php_english_cookie&#39;);
?>
<script src="cookie.js"></script>
<script>
    Cookies.set(&#39;js_cn_ck&#39;,&#39;js_中文_cookie&#39;,5000);
 Cookies.set(&#39;js_en_ck&#39;,&#39;js_english_cookie&#39;);
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
PHP cookie已经设置<br>php_cn_ck=php_中文_cookie<br>php_en_ck=php_english_cookie<br><br>
JS cookie已经设置<br>js_cn_ck=js_中文_cookie<br>js_en_ck=js_english_cookie<br><br>
<a href=getcookie.php>读取cookie</a><br>
getcookie.php
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
一 读取php传送的中英文cookie<br><br>
<p>1 php读取php设置php cookie<br><br>
<?php
include(&#39;function.php&#39;);
 $php_cn_ck=$_COOKIE[&#39;php_cn_ck&#39;];
  $un_php_cn_ck=unescape($php_cn_ck);
    echo "解码前的中文cookie:php_cn_ck=$php_cn_ck<br><br>";
    echo "解码后的中文cookie:un_php_cn_ck=$un_php_cn_ck<br><br>";
10        $php_en_ck=$_COOKIE[&#39;php_en_ck&#39;];    
11       echo "英文cookie无需解码:php_en_ck=$php_en_ck<br><br>";    
12    ?>    
13    <p>2 js读取php设置cookie<br><br>    
14    <script src="cookie.js"></script>    
15    <script>    
16        php_cn_ck=Cookies.get(&#39;php_cn_ck&#39;);    
17        un_php_cn_ck = decodeURIComponent (escape(php_cn_ck));    
18       document.write("解码前的中文cookie :php_cn_ck="+php_cn_ck+"<Br><br>");    
19        document.write("解码后的中文cookie :un_php_cn_ck="+un_php_cn_ck+"<Br><br>");    
20        php_en_ck=Cookies.get(&#39;php_en_ck&#39;);    
21      document.write("英文cookie无需解码 :php_en_ck="+php_en_ck+"<Br><br>");    
22    </script>    
23    -----------------------------------------------<br>    
24    二 读取JS传送的中英文cookie<br><br>    
25    <p>1 php读取JS设置js cookie<br><br>    
26    <?php    
27        $js_cn_ck=$_COOKIE[&#39;js_cn_ck&#39;];    
28      $un_js_cn_ck=unescape($js_cn_ck);    
29      echo "解码前的中文cookie:js_cn_ck=$js_cn_ck<br><br>";    
30        echo "解码后的中文cookie:un_js_cn_ck=$un_js_cn_ck<br><br>";    
31        $js_en_ck=$_COOKIE[&#39;js_en_ck&#39;];    
32        echo "英文cookie无需解码:js_en_ck=$js_en_ck<br><br>";    
33    ?>    
34    </p>    
35    <p>2 js读取js设置的cookie<br><br>    
36    <script>    
37        js_cn_ck=Cookies.get(&#39;js_cn_ck&#39;);    
38        document.write("解码前的中文cookie :js_cn_ck="+js_cn_ck+"<Br><br>");    
39        //un_js_cn_ck = decodeURIComponent (escape(js_cn_ck)); 调用这两句会出现js解析中断    
40        //document.write("解码后的中文cookie :un_js_cn_ck="+un_js_cn_ck+"<Br><br>");    
41        js_en_ck=Cookies.get(&#39;js_en_ck&#39;);    
42        document.write("英文cookie无需解码 :js_en_ck="+js_en_ck+"<Br><br>");    
43    </script>    
44    </p>    
总结:

php用自身函数读取php 的cookie,没有任何障碍,无需解码处理。
js采用cookie.js方法读取js 的cookie,没有任何障碍,无需解码处理。
js读取php的中文cookie,需要做 "decodeURIComponent (escape(php_cn_ck)) "函数处理
php读取js的中文cookie 需要做 "unescape()" 函数处理


cookie.js
view source
print
    ?
01        var Cookies = {};    
02        /**    
03        * 设置Cookies    
04        */    
05        Cookies.set = function(name, value){    
06            var argv = arguments;    
07            var argc = arguments.length;    
08            var expires = (argc > 2) ? argv[2] : null;    
09            if(expires != null){    
10                var exp   = new Date();    
11                exp.setTime(exp.getTime() + 8*3600 + expires);    
12            }    
13            alert(exp.toGMTString());    
14            var path = (argc > 3) ? argv[3] : &#39;/&#39;;    
15            var domain = (argc > 4) ? argv[4] : null;    
16            var secure = (argc > 5) ? argv[5] : false;    
17            document.cookie = name + "=" + escape (value) +    
18            ((expires == null) ? "" : ("; expires=" + exp.toGMTString())) +    
19            ((path == null) ? "" : ("; path=" + path)) +    
20            ((domain == null) ? "" : ("; domain=" + domain)) +    
21            ((secure == true) ? "; secure" : "");    
22        };    
23        /**    
24        * 读取Cookies    
25        */    
26        Cookies.get = function(name){    
27            var arg = name + "=";    
28            var alen = arg.length;    
29            var clen = document.cookie.length;    
30            var i = 0;    
31            var j = 0;    
32            while(i < clen){    
33                j = i + alen;    
34                if (document.cookie.substring(i, j) == arg)    
35                    return Cookies.getCookieVal(j);    
36                i = document.cookie.indexOf(" ", i) + 1;    
37                if(i == 0)    
38                    break;    
39            }    
40            return null;    
41        };    
42        /**    
43        * 清除Cookies    
44        */    
45        Cookies.clear = function(name) {    
46            if(Cookies.get(name)){    
47            var expdate = new Date();     
48            expdate.setTime(expdate.getTime() - (86400 * 1000 * 1));     
49            Cookies.set(name, "", expdate);     
50        }    
51    };    
52        Cookies.getCookieVal = function(offset){    
53            var endstr = document.cookie.indexOf(";", offset);    
54            if(endstr == -1){    
55                endstr = document.cookie.length;    
56            }    
57            return unescape(document.cookie.substring(offset, endstr));    
58        };
Salin selepas log masuk

推荐学习:《PHP视频教程

Atas ialah kandungan terperinci 一分钟解读js与PHP 设置cookie的相互读取(附代码). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan