首頁 >後端開發 >php教程 >cookies - php的setcookie突然无法工作?

cookies - php的setcookie突然无法工作?

WBOY
WBOY原創
2016-06-06 20:06:57992瀏覽

突然发现php的setcookie无法工作了,折腾了差不多一个小时了。
index部分代码

<code>......
<script>
    function login(){
        var a=$("#uname").val();
        var b=$("#up").val();
        var c=$("#yzm").val();
        $.ajax({
            method: "post",
            url: "setc.php",
            data: {uname: a, up: b, yzm: c},
            success: function (msg) {
                alert(msg);
            },
            complete: function (XHR, TS) { XHR = null }
        });
    }
</script>
    <link rel="stylesheet" type="text/css" href="../css/login.css">


<div class="main">
    <form>
        <div class="fr">

            <div class="inputbox">
<span>[<input type="text" name="username" placeholder="account" id="uname">]</span><br>
</div>

            <div class="inputbox">
<span>[<input type="password" name="userpassword" placeholder="password" id="up">]</span>
            </div>
            <div class="yzm">
                <div class="inputbox">
<span>[<input type="text" name="yzm" placeholder="输入下面的字母与数字" id="yzm">]</span><br>
</div>
                <img  src="../chkcode.php"    style="max-width:90%" height="auto" align="absmiddle" style="cursor:pointer;" onclick="this.src='../chkcode.php?'+Math.random()" alt="cookies - php的setcookie突然无法工作?" >
</div>
            <div id="login" class="inputbox"><span><input type="button" value="登录" onclick="login()"></span></div>
        </div>
    </form>
</div>
......</code>

setc.php全部代码:

<code><?php $date = date("y-m-d-h:m:s");
$cookie = substr(hash("sha256", $date.rand(100,999)),0,8);
setcookie("user",$cookie,time()+3600*24*7);
echo $cookie;</code></code>

主要就是一个登录功能,但是setcookie老是失效。
chrome url栏那里可以看到一个 user的cookie,val也是正确的,就是一刷新就没有了,不知道为什么。
而且在开发工作台那里看不到这个诡异的cookie.
这里有cookie,但是一刷新就没有了
cookies - php的setcookie突然无法工作?

这里找不到cookie
cookies - php的setcookie突然无法工作?

我已经换了ie和ff,都是一样的结果,求大师解答。

回复内容:

突然发现php的setcookie无法工作了,折腾了差不多一个小时了。
index部分代码

<code>......
<script>
    function login(){
        var a=$("#uname").val();
        var b=$("#up").val();
        var c=$("#yzm").val();
        $.ajax({
            method: "post",
            url: "setc.php",
            data: {uname: a, up: b, yzm: c},
            success: function (msg) {
                alert(msg);
            },
            complete: function (XHR, TS) { XHR = null }
        });
    }
</script>
    <link rel="stylesheet" type="text/css" href="../css/login.css">


<div class="main">
    <form>
        <div class="fr">

            <div class="inputbox">
<span>[<input type="text" name="username" placeholder="account" id="uname">]</span><br>
</div>

            <div class="inputbox">
<span>[<input type="password" name="userpassword" placeholder="password" id="up">]</span>
            </div>
            <div class="yzm">
                <div class="inputbox">
<span>[<input type="text" name="yzm" placeholder="输入下面的字母与数字" id="yzm">]</span><br>
</div>
                <img  src="../chkcode.php"    style="max-width:90%" height="auto" align="absmiddle" style="cursor:pointer;" onclick="this.src='../chkcode.php?'+Math.random()" alt="cookies - php的setcookie突然无法工作?" >
</div>
            <div id="login" class="inputbox"><span><input type="button" value="登录" onclick="login()"></span></div>
        </div>
    </form>
</div>
......</code>

setc.php全部代码:

<code><?php $date = date("y-m-d-h:m:s");
$cookie = substr(hash("sha256", $date.rand(100,999)),0,8);
setcookie("user",$cookie,time()+3600*24*7);
echo $cookie;</code></code>

主要就是一个登录功能,但是setcookie老是失效。
chrome url栏那里可以看到一个 user的cookie,val也是正确的,就是一刷新就没有了,不知道为什么。
而且在开发工作台那里看不到这个诡异的cookie.
这里有cookie,但是一刷新就没有了
cookies - php的setcookie突然无法工作?

这里找不到cookie
cookies - php的setcookie突然无法工作?

我已经换了ie和ff,都是一样的结果,求大师解答。

setcookie参数设置不全, 参照 http://php.net/manual/zh/function.setcookie.php

<code class="php">setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )</code>

如果第三个参数,path不设置的话,默认为setcookie所在当前路径内有效,也就是你设置的cookie只在登录的路径内/tpok/login下面有效,页面跳转后当然就找不到cookie了。

<code class="php">setcookie("user", $cookie, strtotime( '+7 days' ), "domain or path");</code>

请设置路径为/

setcookie如果不设置路径,默认为当前页面的路径,父亲路径的页面是无法访问的

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn