Снова php

Discussion in 'PHP' started by Utochka, 20 Mar 2006.

  1. Utochka

    Utochka Elder - Старейшина

    Joined:
    21 Dec 2005
    Messages:
    495
    Likes Received:
    106
    Reputations:
    54
    У меня есть скрипт в нем форма для постинга сообщений, метод передачи данных POST. Вроде все ok,после того как я добавил сообщение и перезагрузил страницу оно появляеться на странице, но если нажать обновить в браузере, то добавляеться еще одна запись с предыдущими данными! Как профиксить?
     
  2. DetMyl

    DetMyl Люминевый самолет

    Joined:
    17 Dec 2005
    Messages:
    109
    Likes Received:
    75
    Reputations:
    70
    Конечно что появляется, броузер повторяет полностью Post запрос и скрипт его обрабатывает.
    Надо ставить флажок в сессии, что данные уже пришли и были обработаны, и при повторном постинге не реагировать на них, есть и другие методы, но не имея понятия что твой скрипт делает тяжело что-то конкретное посоветовать, уточняй :)
     
  3. k1b0rg

    k1b0rg Тут может быть ваша реклама.

    Joined:
    30 Jul 2005
    Messages:
    1,182
    Likes Received:
    399
    Reputations:
    479
    обнуляй данные после добавления
     
  4. ferryman

    ferryman Elder - Старейшина

    Joined:
    13 Feb 2006
    Messages:
    88
    Likes Received:
    8
    Reputations:
    5
    можно и проще
    Code:
    if ($_SERVER['REQUEST_METHOD']=="POST"){
    // add data
    header("Location: ".$_SERVER['PHP_SELF']."?data=added);
    }else{
    // form
    }
    
    
    т.е. после добавления даных тебя перекинет и пост масив будет убит...
     
  5. xPow

    xPow New Member

    Joined:
    23 Jun 2005
    Messages:
    26
    Likes Received:
    0
    Reputations:
    0
    1) добавить спец айди и проверять его, на наличие в БД
    2) проверять все поля, на наличие в БД
    3) как было сказано выше: редирект :)
     
  6. D1mOn

    D1mOn Elder - Старейшина

    Joined:
    2 Oct 2005
    Messages:
    380
    Likes Received:
    144
    Reputations:
    29
    откуда знаешь что бд???
     
  7. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    2 xPow
    Ты предлогаешь при каждом постинге прогонять всю БД и искать наличие точного вхождения? =))) герой. Ты после того как пропылесосишь ковер тоже на коленках полаешь и ищешь, не осталась ли пыль где-нить? =))

    2 NeX
    все просто, пишешь
    <form action='add.php'>
    в add.php пишешь код, что нужен, далее
    header("Location: ".$_SERVER['HTTP_REFERER']);echo 'exit';exit;
    и все. Хоть пообжимайся F5
     
    _________________________
  8. xPow

    xPow New Member

    Joined:
    23 Jun 2005
    Messages:
    26
    Likes Received:
    0
    Reputations:
    0
    Trinux, уважаемы перед тем как ехидничать немного сначала почитали б доки.
    и если ты лишь поверхносно знаком с бд, в часности реляционными, то знал бы, что даже с миллионами записей, по индексу будет искать мгновенно.

    двумя постами выше это есть


    к мому же еще совет даешь бажный!


    die('exit'); ?


    умник нашелся...

    вотъ.
     
    #8 xPow, 22 Mar 2006
    Last edited: 22 Mar 2006
  9. ferryman

    ferryman Elder - Старейшина

    Joined:
    13 Feb 2006
    Messages:
    88
    Likes Received:
    8
    Reputations:
    5
    Какой выгон уже начали писать, зачем айди??? зачем база обыкновенный пост или гет...
    ...
    сюда
     
  10. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    2 xPow
    Парень, поверь на слово, с sql я знаком не поверхностно а на практике. Смотри nnm.ru, моя работа, стоит на mysql и уж поверь, за год поддержки нового движка я перееюзал все возможные способы оптимизации. И поверь мне на слово, если в миллионной таблице ты ставишь индекс хотя бы на поле типа CHAR\VARCHAR то твой сайт умрет после 100 хитов в день. А опираясь на твою вторую рекомендацию, мне получается и все текстовые поля придется глядеть? =))) а на них чего поставим? Текстовые поля никакая реляционная БД не индексит =))) mysql предлагает FULLTEXT. Да, работает он достаточно быстро, но не на миллионе записей. Проверять наличие записей по все БД глупо! Архитекторы не разбирают свое зданить после того как они его построили, чтобы убедится что все верно было сделано.

    P.S. Знаешь, любитель доков, в мире не существует ни одной реляционной БД на текущей момент.

    Да, одно и то же. Только в моес способе это отдельный файл, а "двумя постами выше" человек предлогал пихать код прям туда же

    да, признаю, правильно:
    header('Location: '.str_replace("\n", "\r", $_SERVER['HTTP_REFERER']));

    echo 'exit';exit; ?
     
    _________________________
  11. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    за такую фразу и бан можно схлопотать :)))
     
  12. Deem3n®

    Deem3n® RTFMSDN

    Joined:
    19 Sep 2005
    Messages:
    378
    Likes Received:
    153
    Reputations:
    164
    что за бред? и это я слышу от грина!
     
  13. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    2 nerezus
    За это меня забанили на phpclub`е =) врое как рассказывал уже =))

    2 Deem3n®
    докажи обратное, я дам тебе лимон баксов. А насначало почитай математическую модель реляционной БД и сравни с тем, что есть сейчас.
     
    _________________________
  14. Deem3n®

    Deem3n® RTFMSDN

    Joined:
    19 Sep 2005
    Messages:
    378
    Likes Received:
    153
    Reputations:
    164
    реляционная БД (БД с реляционной моделью) относится именно к СТРУКТУРЕ БД.
    Причем тут "сравни с тем, что есть сейчас"?
    С чем я буду сравнивать? Т.е ты предлагаешь мне посмотреть есть в мире хоть одна БД у которой СТРУКТУРА соответствует реляционной модели?
    Данная МОДЕЛЬ имеет собственную теорию (которой кстати около 30 лет) - нормализация отношений, и чтобы создать БД с реляционной моделью достаточно придерживатся именно этой теории (или как говорят: "нормализировать БД"). Таких БД полно, именно изза этого даже есть СУБД которые гарантируют нормальную работу с БД уровень нормализации которой превышает 3.
    Ну что, я миллионер? :)
     
    #14 Deem3n®, 22 Mar 2006
    Last edited: 22 Mar 2006
  15. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    2 Deem3n®
    Почитай ту самую математическую модель реляционной БД, которой более 30 лет. Попробуй там найти хотя бы одно и хотя бы косвенное упоминание о индексации полей. Нет там такого. Отсюда следуют что БД в нашей реальности "реляционно ориентированные", а не "реляционные".
    Так что пока не миллионер
     
    _________________________
  16. xPow

    xPow New Member

    Joined:
    23 Jun 2005
    Messages:
    26
    Likes Received:
    0
    Reputations:
    0
    и теперь твое мыло завалено предложениями на работу экспером-консультантом? :-D

    заметь. я не говорил, что айдишка символьная! это ты сам неверно мыслишь ;)
     
    #16 xPow, 23 Mar 2006
    Last edited: 23 Mar 2006
  17. Deem3n®

    Deem3n® RTFMSDN

    Joined:
    19 Sep 2005
    Messages:
    378
    Likes Received:
    153
    Reputations:
    164
    Ты что-то путаешь. Индексация полей односится к СУБД а не к БД:
    Так что еще раз повторюсь: индексы относятся НЕ к СТРУКТУРЕ БД а к СИСТЕМЕ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ. Индекс в большинстве случаев представляет собой специальную системную таблицу, записи в которой отсортированы в определенном порядке для того чтоь увеличить производительность
     
  18. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    2 xPow
    почтиай свой второй пункт внимательно, если влом, то цитирую прямо тут
    А светиться и получать предложения на мыло мне не нужно, кому надо - то меня знает.

    2 Deem3n®
    Под рукой нет материалов, читал о этом приколе достаточно давно и мог, конечно, что-то напутать. Обязательно найду и выложу
     
    _________________________