За последние 24 часа нас посетили 18264 программиста и 1632 робота. Сейчас ищут 1587 программистов ...

повторное добавление в базу =(

Тема в разделе "PHP для новичков", создана пользователем romawka_ural, 3 июл 2008.

  1. romawka_ural

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

    С нами с:
    11 апр 2008
    Сообщения:
    12
    Симпатии:
    0
    при обновлении страницы идет повторное добавление в базу. Помогите как с этим бороться, смотрел форум о header ...посто у меня html форма и php код на одной странице ..непоможет.
    PHP:
    1.  
    2. <html>
    3. <head>
    4. <title>123</title>
    5. </head>
    6. <body>
    7. <form method="post" action="rewenie2.php">
    8. Enter Name: <input type="text" name="name" value="<?php echo $_POST['name']?>"/>
    9. Enter user name: <input type="text" name="uname" value="<?php echo $_POST['uname']?>"/>
    10. Enter Password (must contain at least 4 characters): <input type="password" name="pass"/>
    11. <input type="submit" name="submitB" value="Submit"/>
    12. </form>
    13. $host="localhost";
    14. $mn="root";
    15. $mp="root";
    16. $db="reg_user";
    17.  
    18. if ($_POST['submitB'] == "Submit"){
    19.     $error=true;
    20.     if($_POST['name']==""){
    21.         echo "введите свое Имя<br/>";
    22.         $error=false;
    23.         }else{
    24.         $name=$_POST['name'];
    25.         }
    26.     If($_POST['uname']==""){
    27.         echo "Введите имя пользователя<br/>";
    28.         $error=false;
    29.         }else{
    30.         $uname=$_POST['uname'];
    31.         }
    32.     if($_POST['pass']==""){
    33.         echo "ведите пароль<br/>";
    34.         $error=false;
    35.         }elseif(strlen($_POST['pass'])<4){
    36.             echo "короткий пароль<br/>";
    37.             exit;
    38.         }else{
    39.             $password=$_POST['pass'];
    40.         }
    41.             if($error==true){
    42.  
    43.                         $conn=mysql_connect($host,$mn,$mp);
    44.                             $db=mysql_select_db($db,$conn);
    45.                                 $sql="INSERT INTO users"."(user_name,user_login,user_password) VALUES ('$name','$uname','$password')";
    46.                                     $rs=mysql_query($sql,$conn);           
    47.                                     mysql_close($conn);
    48.                                        
    49.                         }
    50. }
    51.  
    52. ?>
    53.  
    54. </body>
    55. </html>
     
  2. romawka_ural

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

    С нами с:
    11 апр 2008
    Сообщения:
    12
    Симпатии:
    0
    помогите =)
     
  3. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    romawka_ural
    Разнесите форму и контроллер (код, добавляющий запись) по разным страницам сайта. После добавления записи делайте редирект обратно на форму или куда-нибудь еще, чтобы неповадно обновляться было >;)
     
  4. romawka_ural

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

    С нами с:
    11 апр 2008
    Сообщения:
    12
    Симпатии:
    0
    хм, неужели подругому нельзя ни как?
     
  5. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    romawka_ural
    Хеадер поможет.
    PHP:
    1. header('Location: '.$_SERVER['PHP_SELF']);
    ЗЫ. На аватарки можно только личное фото (см. правила)
     
  6. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Можешь сделать редирект на себя же если есть масив $_POST...
    Но лучше все же послушаться Dagdamor'а и вынести все обработчики в отдельный файл.
     
  7. romawka_ural

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

    С нами с:
    11 апр 2008
    Сообщения:
    12
    Симпатии:
    0
    хм, а вот как насчет unset ? думаю что этим проблема решается или нет?
     
  8. romawka_ural

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

    С нами с:
    11 апр 2008
    Сообщения:
    12
    Симпатии:
    0
    насчет авторки незнал...фотки нету =( придется удалить =(
     
  9. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Нет. Браузер сам запоминает передаваемые данные и при обновлении передает их снова. Выход один - редирект, пускай даже на себя. Сразу после записи в БД - редирект и exit;