setcookie在PHP中从一页到另一页都无效

问题描述 投票:0回答:2

早上好,我是一名大学生,并且正在尝试进行有关PHP的基本练习,尤其是尝试设置值为IT的cookie(国家/地区)。任务是打开页面a,然后单击链接“ pagina successiva”(英文下一页)。浏览器将打开页面b,该页面应读取cookie国家的值并可视化(如果存在)。应教授的要求,我不必设置过期时间。这是我的页面代码:

<?php
    $value = 'IT';
    setcookie('Country',$value, 0, "", "", TRUE);
?>
<!doctype html>
<html lang="it">
    <head>
        <meta charset="utf-8">
        <title>Esercizio 10.1 pagina A</title>
        <meta name="author" content="Pippo Baudo" >
        <link rel="stylesheet" type="text/css" href="../sol10_css/lab10_style.css"> 
    </head>
    <body>
        <h1>Esercizio 10.1a</h1>
        <p>Italia!</p>
        <p><a href='10_1b.php'>Pagina successiva</a></p>
    </body>
</html>

这是我的b页代码:

<!doctype html>
<html lang="it">
    <head>
        <meta charset="utf-8">
        <title>Esercizio 10.1b</title>
        <meta name="author" content="Pippo Baudo" >
        <link rel="stylesheet" type="text/css" href="../sol10_css/lab10_style.css">
    </head>
    <body>
        <h1>Esercizio 10.1 pagina B</h1>
        <?php
            if(isset($_COOKIE["Country"])){
                $nazione = $_COOKIE["Country"];
                echo"<p>Il valore del cookie COUNTRY &egrave; $nazione </p>";}
            else{
                 echo"<p class='err'> ERRORE: Cookie \"Country\" assente</p>";
                 echo"<p><a href='10_1a.php'>Pagina precedente</a></p>";}
        ?>
</body>
</html>

页面b上的输出表明未设置cookie,因此不存在。

我不知道我在做什么错。有人可以打断我吗?

[编辑:当我打开页面a时,错误提示是:解析错误:语法错误,/app/lab10/10_1/10_1a.php在第3行出现意外的'setcookie'(T_STRING)

php html cookies setcookie
2个回答
1
投票

我假设您尝试使用不安全的(http)连接访问您的网页,但提供了TRUE作为最后一个参数,这意味着:

secure:表示cookie 仅应通过 来自客户端的安全HTTPS连接。当设置为TRUE时, 仅当存在安全连接时才设置cookie。在 服务器端,仅在程序员那里发送这种cookie 安全连接时(例如,相对于$_SERVER["HTTPS"])。

来自PHP手册(https://www.php.net/manual/en/function.setcookie.php

如果尝试setcookie('Country', $value, 0, '', '', FALSE);或仅尝试setcookie('Country', $value, 0);,将保留默认值,它将起作用。或者,您可以使用https访问您的页面。

我将进一步建议使用EditThisCookie之类的浏览器插件(适用于Google Chrome)进行测试:https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg


-1
投票
<?php
    $value = 'IT' // You're missing an ending semi-colon here.
    setcookie('Country',$value, 0, "", "", TRUE);
?>
© www.soinside.com 2019 - 2024. All rights reserved.