我的饼干有什么问题?

时间:2010-03-15 02:15:52

标签: php cookies

由于某种原因,这个php脚本不会回显我的cookie变量:

<?php
    require 'connection.php';
    require 'variables.php';

    $name = $_POST['name'];
    $pass = $_POST['pass'];

    if(($name == $admin_name) && ($pass == $admin_pass)){
        setcookie($forum_url."name",$name,time()+604800);
        setcookie($forum_url."pass",$pass,time()+604800);
    }

    else
        echo 'Failed';
?>

继承人发送给admin_login.php的html

<form method=post action=admin_login.php>
            <div id="formdiv">
                <div class="fieldtext1">Name</div>
                <div class="fieldtext1">Pass</div> 
                <input type="text" name=name size=25 /> 
                <input type="password" name=pass size=25 />
            </div>
            <input type=submit value="Submit" id="submitbutton">
        </form>

这是索引,我希望信息回显

<?php echo $_COOKIE[$forum_url."name"]; ?>

我做错了什么?

4 个答案:

答案 0 :(得分:1)

您是否在尝试吐出特定Cookie值时尝试var_dump($_COOKIE)?是否有可能在您设置cookie或尝试回显其值时尚未定义$forum_url?可能Cookie已设置为namepass,因为$forum_url为空。

答案 1 :(得分:0)

确保设置Cookie的路径。

如果你在一条路径中设置cookie,但是你试图从不同的路径获取它,它将无法工作。

您能告诉我索引的URL以及您设置cookie的位置吗?

答案 2 :(得分:0)

通过声明headers_sent()返回setcookie()来调用false时,还要检查是否尚未发送标头。设置cookie发生在HTTP标头内,因此请确保在生成任何输出之前这样做。

例如:

<?php require 'connection.php'; require 'variables.php'; ?>
<h1>Hello world!</h1>
<?php setcookie($forum_url."name",$name,time()+604800); ?>

会工作,因为在调用setcookie()时输出已经传递到HTTP正文。

答案 3 :(得分:0)

实际上,我设置了一个快速测试,发现当存储cookie时,它会用下划线替换句点。因此,如果您有像www.test.comname这样的域名,那么它就变成了www_test_comname。因此,在引用cookie时,您需要执行以下操作:

<?php
    $forum_url = preg_replace('/\./','_',$forum_url);
    echo $_COOKIE[$forum_url."name"];
?>



是否有可能PHP连接 $ forum_url。“name” $ forum_url。“及时传递”以便setcookie正常工作?< /击>

<击>

尝试这样的事情:

<?php
    require 'connection.php';
    require 'variables.php';

    $name = $_POST['name'];
    $pass = $_POST['pass'];

    $tmp_name_path = $forum_url."name";
    $tmp_pass_path = $forum_url."pass"

    if(($name == $admin_name) && ($pass == $admin_pass)){
        setcookie($tmp_name_path,$name,time()+604800);
        setcookie($tmp_pass_path,$pass,time()+604800);
    }

    else
        echo 'Failed';
?>

<击>