За последние 24 часа нас посетили 22260 программистов и 1019 роботов. Сейчас ищут 679 программистов ...

косяк с браузером: скрипт www.captcha.ru

Тема в разделе "PHP для новичков", создана пользователем Johnson, 7 мар 2010.

  1. Johnson

    Johnson Активный пользователь

    С нами с:
    14 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Подскажите, пожалуйста, почему вызов класса KCAPTCHA (формирование картинки) в браузере Opera и Explorer происходит одинаково, а вот назначение сессии в организованной форме, в Opera происходит один раз. Вот исходник вызываемого файла:

    Код (Text):
    1. include('kcaptcha.php');
    2. if(!isset($_REQUEST[session_name()])){
    3.     session_start();
    4. }
    5.  
    6. $captcha = new KCAPTCHA();
    7. if($_REQUEST[session_name()]){
    8.     $_SESSION['captcha_keystring'] = $captcha->getKeyString();
    9. }
    если вызывать этот файл без формы, сессия назначается нормально.
    В чем причина?
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
  3. Johnson

    Johnson Активный пользователь

    С нами с:
    14 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    в скрипте построения картинки задаются:
    Код (Text):
    1.       header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    2.         header('Cache-Control: no-store, no-cache, must-revalidate');
    3.         header('Cache-Control: post-check=0, pre-check=0', FALSE);
    4.         header('Pragma: no-cache');
    разве это не решает проблемы?
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Это может создавать проблемы, если отправка заголовков происходит после любого вывода данных.
    Если в kcaptcha.php есть какой-нибудь вывод, то сессия не запустится. Для старта сессии тоже требуется отправка заголовка.
     
  5. Johnson

    Johnson Активный пользователь

    С нами с:
    14 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    причем, заметил одну особенность:

    НА локальном сервере, всё работает прекрасно, а вот при перенесении на виртуальный хостинг в браузере Opera сессия обновляться прекращает.
     
  6. Johnson

    Johnson Активный пользователь

    С нами с:
    14 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    вывода данных не перед заголовками не происходит.
    а какой заголовок нужен для старта сессии?
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Это условие убери.
     
  8. Johnson

    Johnson Активный пользователь

    С нами с:
    14 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    я уже убирал - не помогает решению задачки.
    Причем, повторюсь, на локальном сервере прокатывает и то и другое, а вот после заливки на виртуальный хостинг, работать перестает.

    если на прямую вызвать генерацию картинки - www.site.ru/img.php
    то работает нормально и сессии назначаются правильно.
    а встроенная в форму, не хочет! может мета тэги какие-то нужны?
     
  9. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    PHP:
    1.  
    2. <?
    3. include('kcaptcha.php');
    4.  
    5. $captcha = new KCAPTCHA();
    6. if($_REQUEST[session_name()]){
    7.    $_SESSION['captcha_keystring'] = $captcha->getKeyString();
    8. }
    9. ?>
    10.  
    Попробуй перепеши скрипт таким образом...