Что не так с моими куки? - PullRequest
0 голосов
/ 15 марта 2010

По какой-то причине этот 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';
?>

Вот HTML, который отправляется на admin_login.php

<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 ]

1 голос
/ 15 марта 2010

Вы пробовали var_dump($_COOKIE) в тот момент, когда вы пытаетесь выплевать определенное значение cookie? Возможно ли, что $forum_url еще не был определен в тот момент, когда вы устанавливаете cookie или пытаетесь отобразить его значение? Возможно, для файла cookie установлены значения name и pass, поскольку $forum_url пусто.

0 голосов
/ 15 марта 2010

На самом деле я настроил быстрый тест и обнаружил, что при сохранении куки-файлов периоды заменяются подчеркиванием. Так что если у вас есть домен, такой как www.test.comname, он становится www_test_comname. Поэтому, когда вы ссылаетесь на куки, вам нужно сделать что-то вроде этого:

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



Возможно ли, что у PHP возникла проблема с конкатенацией $ forum_url. "Name" и $ forum_url. "Pass" во времени для правильной работы 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';
?>

0 голосов
/ 15 марта 2010

Также проверьте, что заголовки еще не были отправлены при вызове setcookie(), утверждая, что headers_sent() возвращает false. Установка cookie происходит в заголовке HTTP, поэтому убедитесь, что вы делаете это до того, как будет сгенерирован какой-либо вывод.

Например:

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

Не будет работать , потому что к моменту вызова setcookie() вывод уже передан в тело HTTP.

0 голосов
/ 15 марта 2010

Убедитесь, что вы указали путь к cookie.

Если вы установили cookie по одному пути, но пытаетесь получить его по другому пути, он не будет работать.

Можете ли вы сообщить мне URL для индекса и где вы устанавливаете cookie?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...