За последние 24 часа нас посетили 16638 программистов и 1681 робот. Сейчас ищут 864 программиста ...

Проблема с условиями

Тема в разделе "PHP для новичков", создана пользователем likser, 10 апр 2009.

  1. likser

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

    С нами с:
    5 апр 2009
    Сообщения:
    8
    Симпатии:
    0
    Доброго времени суток! я пробую писать скрипт регистрации. он пока находится на стадии развития.
    Моя проблема: когда открываю index.php у меня сразу пишет "спасибо за регистрацию!" (ниже два поля для ввода логина и пароля), хотя я еще ничего не ввел. так вот как сделать так, чтобы этот текст появлялся тогда, когда нужно, а не сразу?


    код:
    PHP:
    1. <?php
    2. Error_Reporting(E_ALL & ~E_NOTICE);
    3.  
    4. // удаление пробелов в начале и конце строки
    5. $Array[log] =       trim($Array[log]);
    6.  
    7. // шифрование пароля с помощью md5
    8. $md5_password = md5($Array[pswrd]);
    9.  
    10. // установки для соединения с базой
    11. $host =         "localhost";
    12. $user =         "root";
    13. $pass =         "";
    14. $db_name =      "likser";
    15. $table_name =   "user";
    16.  
    17. // соединяемся с базой
    18. $link = mysql_connect ($host, $user, $pass);
    19.  
    20. mysql_select_db ("likser");
    21.  
    22. $result = mysql_query("INSERT into $table_name values ('','".$Array[log]."', '".$md5_password."')");
    23.  
    24. // выводим результаты
    25. if ($result > 0) {
    26.     print "<b>Не получилось! Попробуйте еще раз.</b><br>";
    27. } else {
    28.     print "<b>Спасибо за регистрацию!</b><br>";
    29. }
    30. ?>
     
  2. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    mysql_num_rows. это во-первых.

    а во вторых, писать правильно вот так - $Array['log']
     
  3. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    PHP:
    1.  $result = mysql_query("INSERT into $table_name values ('','".$Array[log]."', '".$md5_password."')");
    2.  
    3.   // выводим результаты
    4.   if ($result > 0) {
    5.      print "<b>Не получилось! Попробуйте еще раз.</b><br>";
    6.  } else {
    7.       print "<b>Спасибо за регистрацию!</b><br>";
    8.  }
    9.  ?>
    Ты собрался регить одного юзера только или много? mysql_num_rows подсчитывает кол-во строк,а если уже есть несколько строк в таблице, то скрипт,по идее, сразу будет писать,что всё нормально.
    Лучше делай так:
    PHP:
    1.  
    2. $result = mysql_query("INSERT into $table_name values ('','".$Array[log]."', '".$md5_password."')");
    3.   if ($result == true) {
    4.  print "<b>Спасибо за регистрацию!</b><br>";
    5.  } else {
    6.    print "<b>Не получилось! Попробуйте еще раз.</b><br>";
    7.  }
    8.  ?>
    То есть,если данные были успешно добавлены, то всё норм,что-то произошло - ошибка:) Ну а вообще, делай проверку на "пустоту" полей(формы) и защити форму
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    мыжики, вы чё? Вообще опупели?

    1. mysql_num_rows — количество рядов из выборки (т.е. после SELECT)
    Количество вставленных/обновлённых рядов — mysql_affected_rows

    2.
    красавцы. Тернарный оператор спасёт мир.

    likser
    общая идея. Форма с полями регистрации. Отправляет поля на скрипт проверки-добавления. Проверяешь что все обязательные поля заполнены, данные имеют нужный формат. Если всё в порядке — пишешь в БД, если нет — страница c ошибками. После записи, если данные добавились, редиректишь страницу на сообщение «Вы зарегены» , если что-то пошло не так — страницу с ошибкой
     
  5. likser

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

    С нами с:
    5 апр 2009
    Сообщения:
    8
    Симпатии:
    0
    всем большое спасибо... исправил ошибку. теперь у меня другая проблема. я проверяю логин на количество символов и на присутствие знаков (типа @#$^&!"№;%:?* и т.д.). так вот, как мне сделать, чтобы если обнаружилась одна из ошибок, то регистрация прекращалась. пока у меня только пишет ошибки и все равно заносит в базу данные.
    код:
    PHP:
    1. <?php
    2. Error_Reporting(E_ALL & ~E_NOTICE);
    3.  
    4. if (count($_POST)>0):
    5.  
    6. // установки для соединения с базой
    7. $host =         "localhost";
    8. $user =         "root";
    9. $pass =         "";
    10. $db_name =         "likser";
    11. $table_name =     "user";
    12.  
    13. // проверяем пароли
    14. if ($Array[pswrd]!=$Array[pswrd_repeat]) {
    15.     print "Введенные Вами пароли не совпадают!";
    16. }
    17. // проверяем логин на символы
    18. if (preg_match("/^[a-zA-Z0-9]+$^/",$_POST['$Array[log]'])) {
    19.     print "Логин должен содержать только буквы английского алфавита и цифры<br>";
    20. }
    21. // проверяем логин на количество символов
    22. if (strlen($_POST['Array[log]']) <=3) {
    23.     print "Логин должен быть не менее трех символов!<br>";
    24. }
    25.  
    26. // убираем лишние пробелы из логина
    27. $Array[log] = trim($Array[log]);
    28. // шифруем пароль с помощью md5
    29. $Array[pswrd] = md5($_POST['Array[pswrd]']);
    30. // соединяемся с базой
    31. $link = mysql_connect ($host, $user, $pass);
    32. // выбираем базу данных
    33. mysql_select_db ("likser");
    34. // производим запрос
    35. $result = mysql_query("INSERT into $table_name SET login='".$Array[log]."', password='".$Array[pswrd]."'");
    36.  
    37. if ($result == true) {
    38. print "<b>Спасибо за регистрацию!</b><br>";
    39. } else {
    40. print "<b>Не получилось! Попробуйте еще раз.</b><br>";
    41. }
    42. endif;
    HTML:
    1. <form action="index.php?registered" method=post>
    2. Логин <input type=text name=Array[log]> <br>
    3. Пароль <input type=password name=Array[pswrd]><br>
    4. Повторите пароль <input type=password name=Array[pswrd_repeat]><br>
    5. <input type=submit value=Зарегистрироваться>
    6. </form>
     
  6. zzzVolkzzz

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

    С нами с:
    10 апр 2009
    Сообщения:
    26
    Симпатии:
    0
    PHP:
    1.  
    2. <?php
    3.  Error_Reporting(E_ALL & ~E_NOTICE);
    4.  
    5.  if (count($_POST)>0):
    6.  
    7.  // установки для соединения с базой
    8.  $host =        "localhost";
    9.  $user =        "root";
    10.  $pass =        "";
    11.  $db_name =        "likser";
    12.  $table_name =    "user";
    13.  
    14. //создаем переменную  
    15. $r = false;
    16.  
    17. // проверяем пароли
    18.  if ($Array[pswrd]!=$Array[pswrd_repeat]) {
    19.      //если ощибка то текст заносим в переменную
    20.      $r = "Введенные Вами пароли не совпадают!<br>";
    21.  }
    22.  // проверяем логин на символы
    23.  if (preg_match("/^[a-zA-Z0-9]+$^/",$_POST['$Array[log]'])) {
    24.      $r .= "Логин должен содержать только буквы английского алфавита и цифры<br>";
    25.  }
    26.  // проверяем логин на количество символов
    27.  if (strlen($_POST['Array[log]']) <=3) {
    28.      $r .= "Логин должен быть не менее трех символов!<br>";
    29.  }
    30.  
    31. //если переменная осталась false(ошибок следовательно не было)
    32. if (!$r) {
    33.     //проводим регистрацию    
    34.  
    35.      // убираем лишние пробелы из логина
    36.      $Array[log] = trim($Array[log]);
    37.      // шифруем пароль с помощью md5
    38.      $Array[pswrd] = md5($_POST['Array[pswrd]']);
    39.      // соединяемся с базой
    40.      $link = mysql_connect ($host, $user, $pass);
    41.      // выбираем базу данных
    42.      mysql_select_db ("likser");
    43.      // производим запрос
    44.      $result = mysql_query("INSERT into $table_name SET login='".$Array[log]."', password='".$Array[pswrd]."'");
    45.  
    46. //если есть сообщенее ошибки то выводим его
    47. } else {
    48.      echo $r;
    49. }
    50.  
    51.  if ($result == true) {
    52.  print "<b>Спасибо за регистрацию!</b><br>";
    53.  } else {
    54.  print "<b>Не получилось! Попробуйте еще раз.</b><br>";
    55.  }
    56.  endif;
    57.  
    А вообще прочитай книгу "PHP в подлинике", после неё таких вопросов задавать не будеш