За последние 24 часа нас посетили 42453 программиста и 1814 роботов. Сейчас ищут 844 программиста ...

Данные пропадают из БД

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

  1. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Мистика какая-то. Рагистрирую пользователя, и через секунду он исчезает из БД. В чём может быть глюк?
     
  2. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    не знаю как кто - а я вызываю агентов Малдера и Скалли.
    [​IMG]
    :D

    вываливай чтоли свой код.
     
  3. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Дело в том что я пробовал 2 абсолютно разных файла reg.php (один новый, и один ещё с первого варианта проекта), результат тот же. Так что я теперь вообще не знаю в каком из файлов может быть ошибка
     
  4. asik

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

    С нами с:
    12 июл 2007
    Сообщения:
    211
    Симпатии:
    0
    попробуй мой reg.php
    PHP:
    1.  
    2. <?php
    3.   echo "Усё работает БОСС!";
    4.  
     
  5. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    а, ну тогда точно во втором. Даже в мануале так написано

    [​IMG]
     
  6. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Но опять же повторюсь, что сам файл работает, и пользователя он добавляет, просто после того как пользователь прописывается в БД, он сразу же оттуда удаляется. Если Вам так охота копаться в коде, в чем я лично не вижу никакого смысла, тогда пожалуйста! Вы как из анекдота блин
    Сломался ИБП IBM, звоню в службу поддержки.
    Я - у нас не работает ИБП.
    Она - у вас сервер есть?
    Я - есть.
    Она - серийный номер и модель!
    Я - зачем вам серийный номер сервера, если сломался ИБП?
    Она - у нас заявка оформляется на сервер!
    Я - ну ладно. (я ж не знаю как в IBM принято...)
    Она - что случилось с сервером?
    Я - (уже начинаю тихонько ржать) сломался ИБП!
    Она - хорошо!
    Я - (с издевкой уже) а у нас еще один сервер есть!
    Она - серийный номер и модель?!
    Я - пожалуйста! (сообщаю номер и модель)
    Она - что с ним?
    Я - а он работает!
    Вот этот ответ уже ввел ее в ступор.
    Я подсказываю ей выход из ситуации: ...но он не работает с тем ИБП, который сломался!
    Код (Text):
    1. <?php session_start(); ?>
    2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
    4. <head>
    5. <title>Registration</title>
    6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    7. <link rel="stylesheet" type="text/css" href="/style.css" />
    8. <script type="text/javascript" src="/js/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    9.     <!-- фиксация PNG для IE6 -->
    10.     <!-- http://24ways.org/2007/supersleight-transparent-png-in-ie6 -->
    11.     <!--[if lte IE 6]>
    12.         <script type="text/javascript" src="/js/pngfix/supersleight-min.js"></script>
    13.     <![endif]-->
    14. <script src="/js/slide.js" type="text/javascript"></script>
    15. <?php echo $script; ?>
    16. </head>
    17. <body>
    18. <? include_once $_SERVER['DOCUMENT_ROOT']."/db/config.php" ;
    19.     dbConnect() ;?>
    20. <div id="wrapper">
    21. <div id="middle">
    22. <div id="container">
    23. <div id="content">
    24. <?php
    25. if(@$_POST['do']!=''){
    26.     $page='';
    27.     if(empty($_POST['business_unit'])) $page.="Select your Business Unit<br>";
    28.   if(empty($_POST['lastname'])) $page.="lastname is empty<br>";
    29.   if(empty($_POST['firstname'])) $page.="firstname is empty<br>";
    30.   if(empty($_POST['doa'])) $page.="Date Of Recepient is empty<br>";
    31.   if(empty($_POST['month_limit'])) $page.="Month Limit is empty<br>";
    32.   if(empty($_POST['phone_number'])) $page.="Phone Number is empty<br>";
    33.   if(empty($_POST['linemanager'])) $page.="linemanager is empty<br>";
    34.   if(empty($_POST['Email'])) $page.="Email is empty<br>";
    35.   // Вводим регулярные значения переменных  
    36.   $business_unit = $_POST['business_unit'] = str_replace("'","`",$_POST['business_unit']);
    37.   $lastname = $_POST['lastname'] = str_replace("'","`",$_POST['lastname']);
    38.   $firstname = $_POST['firstname'] = str_replace("'","`",$_POST['firstname']);
    39.   $doa = $_POST['doa'] = str_replace("'","`",$_POST['doa']);
    40.   $dod = $_POST['dod'] = str_replace("'","`",$_POST['dod']);
    41.   $month_limit = $_POST['month_limit'] = str_replace("'","`",$_POST['month_limit']);
    42.   $phone_number = $_POST['phone_number'] = str_replace("'","`",$_POST['phone_number']);
    43.   $login = $_POST['login'] = str_replace("'","`",$_POST['login']);
    44.   $dostup = $_POST['dostup'] = str_replace("'","`",$_POST['dostup']);
    45.   $Email = $_POST['Email'] = str_replace("'","`",$_POST['Email']);
    46.  
    47.  
    48.   if (preg_match('/[a-z0-9][0-9a-z_\-]+/ui', $login)) {echo"";}
    49.   else { $page.= "Error: Name can contain only latin letters<br> " ;}
    50. // в регулярке я ставлю маленькие буквы, цифры, дефис и знак_ от 1 до 15 символов
    51.   $password = $_POST['password'] = str_replace("'","`",$_POST['password']);
    52.    if (preg_match('/[a-z0-9][0-9a-z_\-]+/ui', $password)) {echo"";}
    53.    else {$page.= "Error Password can contain only latin letters and numbers<br>" ;}
    54.   $linemanager = $_POST['linemanager'] = str_replace("'","`",$_POST['linemanager']);
    55.     if (isset($_POST['login'])) {
    56.         $login = $_POST['login']; //заносим введенный пользователем логин в переменную $login
    57.     } else {
    58.         if ($login == '') { unset($login);} //если он пустой, то уничтожаем переменную
    59.     }
    60.     if (isset($_POST['password'])) {
    61.         if($_POST['password'] !== $_POST['pass_again']) $page.="Passwords do not match<br>";
    62.         $password=$_POST['password']; //заносим введенный пользователем пароль в переменную $password
    63.     } else {
    64.         if ($password =='') { unset($password);} //если он пустой, то уничтожаем переменную
    65.     }
    66.     if (empty($login) or empty($password) ) { //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
    67.         $page.='You did not enter all the information you fill in all fields!<br>';
    68.     }  else {
    69. /*      $login = stripslashes($login);
    70.         $login = htmlspecialchars($login);
    71.         $password = stripslashes($password);
    72.         $password = htmlspecialchars($password);
    73.         //удаляем лишние пробелы
    74.         $login = trim($login);
    75.         $password = trim($password); */
    76.         //добавляем проверку на длину логина и пароля
    77.         if (strlen($login) < 3 or strlen($login) > 15)  {
    78.             $page.='Username must consist of at least 3 characters and no more than 15<br>';
    79.         } else {
    80.             if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['login'])) {
    81.                 $page.='Your username contains invalid characters!<br>';
    82.             } else {
    83.                 if (strlen($password) < 3 or strlen($password) > 15)  {
    84.                     $page.='The password must contain at least 3 characters and no more than 15<br>';
    85.                 } else {   
    86.                     $password = md5($password);//шифруем пароль
    87.                     //  $password = strrev($password);// для надежности добавим реверс
    88.                     //  $password = $password."b3p6f";
    89.                    
    90.                     // проверка на существование пользователя с таким же логином
    91.                     $result = mysql_query("SELECT `id` FROM `users` WHERE login='$login'");
    92.                     $myrow = mysql_fetch_array($result);
    93.                     if (!empty($myrow['id']))  {
    94.                         $page.='Sorry, you entered username is already registered. Please enter a different username.<br>';
    95.                     } else {
    96.                         // если такого нет, то сохраняем данные
    97.                         $query = "INSERT INTO `users` VALUES (NULL,'".$business_unit."','".$lastname."','".$firstname."','".$dostup."','".$doa."','".$dod."','".$month_limit."','".$phone_number."','".$login."','".$password."','".$linemanager."','".$Email."')";
    98.                 if(mysql_query($query))
    99.                     { $page.="<p class='soob' style='color:red'>Thanks. Registration is completed.</p>";}
    100.                 else { $page.='Error! You are not registered.<br>';}
    101.                 }
    102.             }
    103.         }
    104.     }
    105. }
    106. }
    107. ?>
     
  7. asik

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

    С нами с:
    12 июл 2007
    Сообщения:
    211
    Симпатии:
    0
    тригеры?
     
  8. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    никому здесь не охота. по большому счету тут всем пох на твои проблемы. потому и вел бы себя соответственно, а не как будто здесь умоляют тебя выложить свой кусок гениального кода. службе поддержки ты бабло заплатил, когда сервер у них покупал - это входит в стоимость товара. А в стоимость говнокода услуги экстрасенсов и телепатов не входят.
    или как ты хотел чтобы тебе помогли, не видя кода? написать письмо демону mysql, спросить кто юзеров тырит из базы?
     
  9. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Апельсин. Отжег, считается. Ты всегда такой умный?! Вот что тебе в данной конкретной ситуации дал код?
    Нихрена. Я же сказал, что использовал 2 абсолютно разный файла регистрации, результат один - удаление.
    А вот идея с тригерами это уже интересно. Кстати заметь что код тут какбы не при чем =)
     
  10. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    окей бро, оставляю тебя наедине с Малдером решать твои загадочные исчезновения.
    И заметь - в написанном руками, а не задницей коде - юзеры не пропадают. Внатуре код тут ни причем.
     
  11. bkm

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

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    возможно где-то есть функция, которая по условию удаляет запись DELETE FROM `users`
     
  12. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Апельсин
    Включи логику. Есть две страницы регистрации пользователей. И та и другая работали идеально, модификации проводились только в новой версии, но после исчезновения первого юзера, я вернулся к старому файлу, с ним такая же ситуация.
    bkm
    Я проверил все страницы кода по 100 раз. Нигде нет запроса на удаление. Ну кроме файла del.php конечно же, который и был создан для удаления пользователя, но он запускается только специальной ссылкой, которая находится на персональной странице пользователя. А у меня получается что я при регистрации вбиваю все данные пользователя, нажимаю Зарегистрировать, страница обновляется, выдаёт сообщение что пользователь добавлен, и всё, писец. Он какбы добавлен и сразу удалён. Бред какой-то.
     
  13. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    McLotos
    а ты уверен, что он был добавлен?
     
  14. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    100%.
    1. После каждой такой регистрации auto_increment увеличивается на 1. номер ID который получает каждый новый пользователь постоянно новый
    2. Если до нажатия кнопки открыть phpMyAdmin, патом нажать кнопку, и следить за phpMyAdmin, то пользователь появляется, и сразу исчезает. Т.е. я обновляю страницу PMA и вижу пользователь добавился, обновляю ещё раз и пользователя нет.
     
  15. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    тогда я согласен с Апельсином - вызывай Малдера и Скалли))))

    А по делу - проверь триггеры в mysql и внимательно просмотри код. Может ты случайно при перенаправлении пользователя вызываешь его удаление?
     
  16. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    =)
    Код представлен выше, там даже намёка нет на удаление.
    А вот про тригеры это идея, где можно их посмотреть? И что там должно быть?
     
  17. bkm

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

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    был у меня баг, но там добавлялась ещё одна запись, тоже долго голову ломал - как так?, а потом установил последний стабильный денвер и забыл.
     
  18. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    У меня и так последний, хотя он тоже мозг парит, просто на нормальный комплект php+mysql пока нет ни времени ни сил, боюсь что терпение лопнет, и вообще брошу этот проект. Уже 4 месяца с ним вожусь.
     
  19. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    SHOW TRIGGERS

    это запрос если че)
     
  20. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    А триггеры могут действовать только на 1 таблицу в БД? Потому-что в этой базе кроме Calls ещё куча таблиц, но остальные ведут себя вполне адекватно
     
  21. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    SHOW TRIGGERS ничего не показывает
    Таблица Server: localhost Database: information_schema Table: TRIGGERS
    пустая
     
  22. bkm

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

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
  23. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Я только сегодня его переустановил, но я ставил Denwer3_Base_PHP52_2010-11-07_a2.2.4_p5.2.12_zendoptimizer_m5.1.40_pma3.2.3
     
  24. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    А в чём ещё может быть проблема?
     
  25. McLotos

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

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Я нашёл в чем проблема!
    CHECKSUM=1
    DELAY_KEY_WRITE=1
    ROW_FORMAT=DYNAMIC
    Убрал к чертям эти 3 строки из таблицы Users и данные перестали пропадать =)