За последние 24 часа нас посетили 18675 программистов и 1702 робота. Сейчас ищут 874 программиста ...

Срабатывает переадрессация.

Тема в разделе "PHP для новичков", создана пользователем BezMizinca, 19 мар 2015.

  1. BezMizinca

    BezMizinca Новичок

    С нами с:
    14 янв 2015
    Сообщения:
    42
    Симпатии:
    0
    При отправке пустой формы срабатывает переадрессация, хотя должна выводиться подсказка о не заполненном поле.

    .php

    Код (Text):
    1. if(isset($_POST['text'])) {
    2.     $errors = array();
    3.     if(empty($_POST['text'])) {
    4.         $errors['text'] = 'Вы не заполнили поле!';
    5.     }
    6.     if (!count($errors)) {
    7.         mysqli_query($link, "INSERT INTO `commetns` SET
    8.         `name` = '".mysqli_real_escape_string($link, $_POST['name'])."',
    9.         `text` = '".mysqli_real_escape_string($link, $_POST['text'])."',
    10.         `date` = ".$date."
    11.         ") or exit(mysqli_error($link));
    12.     }
    13.  
    14.     $_SESSION['comment'] = 'sent';
    15.     header("Location: index.php?modules=comments&page=comments");
    16.     exit();
    17. }


    .tpl
    Код (Text):
    1.  
    2. <?php if(!isset ($_SESSION['comment'])) { ?>
    3. <p>Отзывы<p>
    4. <div>
    5.     <form action="" method="post">
    6.         <table>
    7.             <tr>
    8.                 <td>Назови себя!</td>
    9.                 <td><input type="text" name="name" value="<?php echo @htmlspecialchars($_POST['name']);?>"></td>
    10.                 <td></td>
    11.             </tr>
    12.             <tr>
    13.                 <td>Сюда пиши отзыв!*</td>
    14.                 <td><input class="text" type="text" name="text" value="<?php echo @htmlspecialchars($_POST['text']);?>"></td>
    15.                 <td><?php echo $errors['text']; ?></td>
    16.             </tr>
    17.             <tr>
    18.                 <td></td>
    19.                 <td>* - обязательные для заполнения</td>
    20.                 <td></td>
    21.             </tr>
    22.             <tr>
    23.                 <td><input type="submit" name="send" value="Отправить отзыв"></td>
    24.                 <td></td>
    25.                 <td></td>
    26.             </tr>
    27.         </table>
    28.     </form>
    29. <?php } else { unset($_SESSION['comment']); ?>
    30.     <p>Отзыв отправлен!</p>
    31. <?php } ?>
    32. </div>
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. BezMizinca

    BezMizinca Новичок

    С нами с:
    14 янв 2015
    Сообщения:
    42
    Симпатии:
    0
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а переадресация не должна сработать?
     
  5. BezMizinca

    BezMizinca Новичок

    С нами с:
    14 янв 2015
    Сообщения:
    42
    Симпатии:
    0
    Только при условии $_POST['text'] существует.
     
  6. maxmuha

    maxmuha Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    107
    Симпатии:
    0
    Адрес:
    Мурманск
    А при пустом поле что передается в $_POST['text'] ??? :)
     
  7. BezMizinca

    BezMizinca Новичок

    С нами с:
    14 янв 2015
    Сообщения:
    42
    Симпатии:
    0
    Ничего, должна появиться подсказка.
    Код (Text):
    1. if(empty($_POST['text'])) {
    2.         $errors['text'] = 'Вы не заполнили поле!';
    3.     }
     
  8. maxmuha

    maxmuha Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    107
    Симпатии:
    0
    Адрес:
    Мурманск
    У Вас изначально условие if(isset($_POST['text'])) при отправке незаполненой формы этой переменной будет присвоено значение пустой строки. Так что это условие будет всегда TRUE

    Добавлено спустя 1 минуту 7 секунд:
    Именно в этом условии у Вас переадресация прописана
     
  9. BezMizinca

    BezMizinca Новичок

    С нами с:
    14 янв 2015
    Сообщения:
    42
    Симпатии:
    0
    Ошибку понял и исправил, но теперь переадрессация не работает.
     
  10. maxmuha

    maxmuha Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    107
    Симпатии:
    0
    Адрес:
    Мурманск
    Код исправленный где?)
     
  11. BezMizinca

    BezMizinca Новичок

    С нами с:
    14 янв 2015
    Сообщения:
    42
    Симпатии:
    0
    Код (Text):
    1. if(!isset($_POST['text'])) {
    2.     $errors = array();
    3.     if(empty($_POST['text'])) {
    4.         $errors['text'] = 'Вы не заполнили поле!';
    5.     }
    6.     if (!count($errors)) {
    7.         mysqli_query($link, "INSERT INTO `commetns` SET
    8.             `name` = '".mysqli_real_escape_string($link, $_POST['name'])."',
    9.             `text` = '".mysqli_real_escape_string($link, $_POST['text'])."',
    10.             `date` = ".$date."
    11.         ") or exit(mysqli_error($link));
    12.  
    13.         $_SESSION['comment'] = 'sent';
    14.         header("Location: index.php?modules=comments&page=comments");
    15.         exit();
    16.     }
    17. }
     
  12. maxmuha

    maxmuha Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    107
    Симпатии:
    0
    Адрес:
    Мурманск
    Включите отображение ошибок.
    Остается догадываться что Ваш виртуозный запрос к базе не проходит.