Как запустить код один раз за пользовательский сеанс в PHP? - PullRequest
0 голосов
/ 07 декабря 2011

Хорошо, я искал вокруг и нашел, как это должно быть сделано.Например, найти этот вопрос .Однако это не работает для меня, поэтому я, должно быть, делаю что-то не так, но чертовски, если я знаю, что.

Хорошо ... вот мой маленький блок кода:

<?php
    session_start();

    if(!isset($_SESSION['didit'])) {
        $url = "http://www.mysite.com/clients/vatera.asmx/DoSomething";
        file_get_contents($url);
        $_SESSION['didit'] = true; 
    }
?>

url file_get_contents все работает отлично.Единственное, что не работает, это проверка "запустить один раз".Он запускает код url КАЖДЫЙ раз через страницу.Он должен запускаться только при первом обращении к странице в сеансе.Этот блок расположен сразу после тега <html> на моей странице.

Некоторые другие вещи, которые я пробовал:

if(empty($_SESSION['didit']))
if($_SESSION['didit'] != true)
if($_SESSION['didit'] <> true)

Я также пытался переместить строку, указав переменную, предшествующую назначению $ url .

Ни один из них не сработал.Он продолжает запускать код КАЖДЫЙ раз, когда страница загружается.Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Когда вы говорите « после тега <html>», вы имеете в виду перед , верно?
session_start() должно быть перед любым выводом.

1 голос
/ 07 декабря 2011

как вы тестируете свой код? Он будет работать нормально только в реальных браузерах. Таким образом, если вы используете wget или curl для тестирования - ваш условный код всегда будет выполняться b / c, wget & curl по умолчанию не сохраняют куки сессии.

Также убедитесь, что вы не блокируете куки в своем браузере.

...