использование сеансов для передачи http_referer php

вот испытание:

на index.php

<?php
    session_start();
    $url = $_SERVER['HTTP_REFERER'];
    $_SESSION['abc'] ='$url';
?>

я повторяю на странице $_SERVER['HTTP_REFERER']; и получаю то, что хочу

позже на сайте у меня есть страница бронирования, и я использую сеанс для

<?php 
    session_start();

    if (isset($_SESSION['abc'])) {
        echo $_SESSION['abc'];
    } 
    else {
        echo 'error';
    }               
?>

это эхо-ошибка, и я смущен, почему данные не проходят..

Любая идея от гуру php, спасибо. Просто хочу, чтобы он напечатал HTTP_REFERER


person Michael O'Brien    schedule 30.05.2012    source источник
comment
вызывается session_start() на всех страницах? потому что вы говорите .. позже на сайте.   -  person Andreas    schedule 31.05.2012
comment
Попробуйте print_r($_SESSION) на второй странице. И в index.html замените $_SESSION['abc'] = '$url' на $_SESSION['abc'] = $url.   -  person flowfree    schedule 31.05.2012
comment
@bsdnoobz: Зачем вообще ставить кавычки вокруг $url? Цитаты не нужны.   -  person Asaph    schedule 31.05.2012
comment
мне нужно вызывать session_start() на каждой странице? или просто на страницах я хочу использовать $_SESSION superglobal   -  person Michael O'Brien    schedule 31.05.2012
comment
Вам нужно вызывать session_start() на каждой странице, к которой вы хотите получить доступ к данным сеанса. Как только вы запустили сеанс, session_start() только возобновляет ранее запущенный сеанс.   -  person Aventuris    schedule 31.05.2012
comment
Код работает нормально, когда я его тестирую, поэтому кажется, что ваша сессия капризничает. Вы переключаетесь между http и https? Или субдомены (включая www.)?   -  person John C    schedule 31.05.2012
comment
Вы проверили, включены ли файлы cookie в вашем браузере? Файл cookie домена содержит идентификатор сеанса, который передается при каждом открытии страницы. Этот идентификатор используется для восстановления сеанса с помощью функции session_start().   -  person bitfox    schedule 31.05.2012
comment
да, страница бронирования — HTTPS, влияет ли это на возможность использования сеансов?   -  person Michael O'Brien    schedule 31.05.2012
comment
да, это так - Пирс вскочил с одним решением, в качестве альтернативы на вопрос был дан ответ в другом месте. (теперь ответ)   -  person John C    schedule 31.05.2012


Ответы (2)


Судя по комментариям, вы используете как HTTP , так и HTTPS.

Вам нужно будет передать идентификатор сеанса с HTTP на HTTPS.

index.php

<?php
    session_start();

    $_SESSION['abc'] = $_SERVER['HTTP_REFERER'];

    $session_id = session_id();
?>

Затем вам нужно будет передать $session_id на страницу бронирования, возможно, через GET:

reservation.php

<?php
    session_start();

    session_id($_GET['session_id']);

    if (isset($_SESSION['abc']))
        echo $_SESSION['abc'];
?>
person Community    schedule 31.05.2012
comment
Большое спасибо! Моя единственная проблема сейчас заключается в том, что я получаю реферер как страницу перед моей страницей бронирования, а не первоначальный HTTP_REFERER, поэтому он повторяет mysite.com/pagebeforereservation, как мне получить начальный HTTP_REFERER для передачи? - person Michael O'Brien; 31.05.2012

К сожалению, по умолчанию сеанс не сохраняется между HTTP и HTTPS. Вместо того, чтобы перефразировать решения, я укажу на то, где вопрос возникал раньше:

person John C    schedule 31.05.2012