За последние 24 часа нас посетил 17751 программист и 1718 роботов. Сейчас ищут 910 программистов ...

Обращение к кэшу

Тема в разделе "Прочие вопросы по PHP", создана пользователем Александр Живой, 26 окт 2014.

  1. Александр Живой

    С нами с:
    22 окт 2014
    Сообщения:
    11
    Симпатии:
    0
    вот код:

    <form method="post">
    Добавить альбом<br>
    <input type="text" name="album" size="13">
    <input type="submit" name="send" value="Добавить"><br>
    </form>

    <?php
    $album=$_POST['album'];
    $query_add="INSERT INTO `great_album`(`album`) VALUES('".$album."')";
    $res=mysql_query($query);

    if($album==""){
    echo "добавь альбом<br>";
    }
    else {
    mysql_query($query_add);
    echo "альбом добавлен";
    }

    при обновлении страницы в бд добавляется последнее вводимое в форму слово, сохраненное в кэше. Даже если окно для текста пустует. Можно ли попросить php (или иным каким образом) не обращаться к кэш памяти и ничего не добавлять из нее? Или может, я неправильно что-то написал.

    Надеюсь, я четко выразил свою проблему) Спасибо заранее
     
  2. metadon

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

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Нужно сделать refresh страницы, например после mysql_query($query_add); через header location но до отправки заголовков
     
  3. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Код (PHP):
    1. if(!empty($_POST['album']) && $album=$_POST['album']) {
    2.      //а тут уже обрабатывать запрос
    3. }
    Я советую не использовать mysql, так как - это устаревшее расширение и могут быть проблемы.
    mysqli - рекомендуемое расширение, его используйте.
    И не забывайте, про экранирование при работе с базой, а то вам такого с формы отошлют, что база станет ихняя =)))
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Редирект. Метадон правильно советует.
     
  5. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Причём, самый правильный приём, это разнести форму и скрипт записи в БД на два, примерно так:

    Код (PHP):
    1. <?php
    2. // a.php
    3. // Используем сессии для обмена информацией между двумя файлами
    4. $just_added = isset($_SESSION["just_added"]); // Мы только что чегой-то добавили?
    5. unset($_SESSION["just_added"]); // Флаг сразу сбросить в сессии
    6. ?>
    7. <form method="post" action='b.php'>
    8. Добавить альбом<br>
    9. <input type="text" name="album" size="13">
    10. <input type="submit" name="send" value="Добавить"><br>
    11. </form>
    12.  
    13. <?php
    14. if ($just_added)
    15.     echo "альбом добавлен";
    Код (PHP):
    1. <?php
    2. // b.php
    3. // Где-то здесь установка соединения с mysql, у вас в коде нету
    4. $album=$_POST['album'];
    5. $query_add="INSERT INTO `great_album`(`album`) VALUES('".$album."')";
    6. $res=mysql_query($query); 
    7.  
    8. // Устанавливаем флаг, что альбом только что добавлен
    9. $_SESSION["just_added"] = 1;
    10.  
    11. // Перенаправляем обратно на форму. Чтоб она автоматом не заполнилась из 
    12. // кэша браузера, добавляем в конец случайное число
    13. header("Location: a.php?" . rand());
    14.