За последние 24 часа нас посетили 62918 программистов и 1747 роботов. Сейчас ищут 776 программистов ...

Блок регистрации + проверка данных

Тема в разделе "PHP для новичков", создана пользователем yellow, 13 фев 2012.

  1. yellow

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

    С нами с:
    28 окт 2011
    Сообщения:
    18
    Симпатии:
    0
    Доброго времени суток! Я совсем недавно начал программировать на php (4 дня назад), и у меня возникли некоторые вопросы.

    Итак, я написал блок регистрации (самый простой): логин, пароль, каптча. Далее данные отправляются в обработчик, соответственно. При обнаружении ошибки обработчик записывает данные в сессию и редиректит на предыдущую страницу (чтобы ошибку можно было указать именно на странице с формами для заполнения, в дальнейшем рассчитываю это на jQuerry выполнять, но пока просто посредством print()). Так вот, проблема в том, что сообщение выводится всегда, даже когда сессия имеет пустое значение.

    Куски кода:
    Регистрация:
    Код (Text):
    1. <h2>Регистрация</h2>
    2.     <form action="save.php" method="post" enctype="multipart/form-data">
    3. <p>
    4.     <label>Логин:<br/></label>
    5.     <input class="textarea" name="login" type="text" size="15" maxlength="15">
    6.     </p>
    7. <p>
    8.     <label>Пароль:<br/></label>
    9.     <input class="textarea" name="password" type="password" size="15" maxlength="15">
    10.     </p>
    11.  
    12. <p>
    13. Введите код с картинки:<br/>
    14. <img src="captcha.php"><br/>
    15. <input type="text" name="code"></p>
    16. <p>
    17.     <input type="submit" name="submit" value="Зарегистрироваться">
    18.  
    19. </p></form>
    20.  
    21. <?php if($_SESSION['loginstatus'] = 'not_full') {
    22.     print 'Пичалька';
    23.     $_SESSION['loginstatus'] = '';};
    24.     ?>
    Обработчик:
    Код (Text):
    1.  if (empty($login) or empty($password))
    2.     {
    3.     $_SESSION['loginstatus'] = 'not_full';
    4.     header('location:' .$_SERVER['HTTP_REFERER']);
    5.     exit;
    6.     }
    Соотвественно, session_start() начинает оба файла. Что я делаю не так? Заранее спасибо!
     
  2. AndreJM

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

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Код (Text):
    1. if($_SESSION['loginstatus'] = 'not_full')
    ==
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    OFF
    именно поэтому рекомендуется константы писать слева от переменной:
    Код (Text):
    1. if('non_full' = $_SESSION['loginstatus'])
    с удовольствием черканет пару строк в журналах
    /OFF
     
  4. yellow

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

    С нами с:
    28 окт 2011
    Сообщения:
    18
    Симпатии:
    0
    AndreJM, Ganzal, спасибо, господа. Раз уж всё так быстро решилось, то не могли бы вы подсказать ещё насчет jQuerry? Не могу найти подходящий плагин, чтобы вывести уведомление в самом верху сайта (выпадающее) либо попап. Перерыл уже много ссылок, всё тщетно...
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    с удовольствием можно и jq без плагинов сделать. и даже чистым javascript
    создаете к примеру div вложенный в body. пишите что он {фиксированно,абсолютно} позиционирован, даете ему размеры, цвет, координаты, текст, картинку, ссылку, флеш-мультик и тд и тп - да все что душа пожелает.))
     
  6. yellow

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

    С нами с:
    28 окт 2011
    Сообщения:
    18
    Симпатии:
    0
    Ganzal, я пробую, но у меня через jq и js не выходит анимация как-то, а гугл выдаёт коды уведомлений, которые по клику вылезают, пихаю их между условиями в php, а они не хотят просто так выполняться... Прочитал уже кучу мануалов, но всё никак...

    Добавлено спустя 41 минуту 59 секунд:
    Или можно ли как-то обработчик заранее подгрузить (AJAX,например), чтоб страница не обновлялась после отправки данных? Буду крайне признателен, если вы мне поможете...
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    и зачем сразу в такие дебри залезать?
    в чем сейчас проблема?

    слово "пихаю" очень хорошо описывает подход новичков))) у профи он правда лишь иначе называется - медот высоко научного тыка))))
     
  8. yellow

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

    С нами с:
    28 окт 2011
    Сообщения:
    18
    Симпатии:
    0
    2 дня думал... всё решилось) Забыл в обработчике exit написать)