За последние 24 часа нас посетили 17527 программистов и 1727 роботов. Сейчас ищут 998 программистов ...

Проблемы с регистрацией(((

Тема в разделе "MySQL", создана пользователем StyXXX, 23 дек 2009.

  1. StyXXX

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

    С нами с:
    29 ноя 2009
    Сообщения:
    21
    Симпатии:
    0
    Доброго времени суток(хотя ОНО нифига и недорое(((, помогите, плиZzz....... есть написанный код регистрации, все ввожу - пишет "Регистрация невозможна: Пользователь с таким именем уже существует" сам особо не соображаю, НО сказали, что все работает.

    PHP:
    1.  
    2. <?
    3. @include("config.inc.php");
    4. @include("functions.inc.php");
    5.  //Необходимо подключиться к БД
    6. $link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
    7. or die("Не могу подключиться" );
    8. // сделать $DB текущей базой данных
    9. mysql_select_db($DB, $link) or die ('Не могу выбрать БД');
    10.  
    11. if(!$_POST['do'] OR $_POST['do'] =='') {
    12.  
    13.  
    14. //Выводим форму
    15. echo '<html><head><title>Регистрация</title></head><body>';
    16. echo '<h2>Форма регистрации</h2>';
    17. echo'<form action="" method="POST"><table cellpadding=4 cellspacing=0 border=1 style="border-collapse:collapse">';
    18. echo '<tr><td>Желаемый ник:</td><td><input name="nick" type="text" value=""></td></tr>';
    19. echo '<tr><td>Пароль:</td><td><input name="pass" type="password" value=""></td></tr>';
    20. echo '<tr><td>Ещё раз пароль:</td><td><input name="rpass" type="password" value=""></td></tr>';
    21. echo '<tr><td>Эл.адрес</td><td><input name="mail" type="text" value=""></td></tr>';
    22. echo '<tr><td colspan=2 align="right"><input name="do" type="submit" value="зарегистрировать"></td></tr>';
    23. echo '</table></form><a href="./">« Назад</a></body></html>';
    24. }
    25. //Если данные отправлены
    26. if($_POST['do'] !='') {
    27. //Начинаем проверять входящие данные
    28. if($_POST['sid'] == $_SESSION['uid']) {
    29.  
    30. //Создаем запрос к базе для проверки существования Пользователя
    31. $nick = $_POST['nick'];
    32. mysql_query("SELECT * FROM users WHERE nick='".strtolower($nick)."'");
    33.  
    34. //Проверка результата запроса
    35. //Проверка ввведенных паролей
    36.  
    37. if($_POST['pass'] !='' AND $_POST['rpass'] !='' AND $_POST['pass'] === $_POST['rpass']){
    38. //Проверяем на валидность электронный адрес
    39. if(checkmail($_POST['mail']) !== -1) {
    40.  
    41. //Осуществляем регистарацию
    42. //Генерируем uniq_id
    43. $uniq_id = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime());
    44. $pass = $_POST['pass'];
    45. $email = $_POST['mail'];
    46. //Создаем запрос для записи данных в БД
    47. $r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($nick)."','".md5($pass)."','".$email."','".$uniq_id."',0,'".date("dmY")."','".date("dmY")."')");
    48.  
    49. //После запроса отправляем письмо юзеру, для активации аккаунта
    50. if($r) {
    51. // Для отправки e-mail в виде HTML устанавливаем необходимый mime-тип и кодировку
    52. $headers  = 'MIME-Version: 1.0' . "\r\n";
    53. $headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
    54. // Откуда пришло
    55. $headers .= 'From:Сайт %sitename%' . "\r\n";
    56. //Здесь укажите электронный адрес, куда будут уходить сообщения
    57. $mailto = $email;
    58. $subject = "Подтверждение регистарции на сайте";
    59. $message = 'Для активации аккаунта пройдите по следующей ссылке <a href="http://АДРЕС_САЙТА/registration.php?
    60. activation='.$uniq_id.'" target="_blank">http://АДРЕС_САЙТА/registration.php?activation='.$uniq_id.'</a>';
    61. $message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите enter.';
    62. //Отправляем сообщение
    63. if(sendmail($mailto,$subject,$message,$headers) !== FALSE) {
    64. echo 'Регистрация завершена, на введеный Вами e-mail было отправлено сообщение для активации аккаунта';
    65. }
    66. else {echo 'Регистрация невозможна: Повторите запрос позднее';}
    67.                        }
    68.                        else {echo 'Регистрация невозможна: Повторите запрос позднее';}
    69.                  }
    70.                  else {echo 'Регистрация невозможна: Электронный адрес должен соответствовать шаблону <b>name@domen.com</b><br/><a
    71.  
    72. href="registration.php"/>назад</a>';}
    73.  
    74.              }
    75.              else {echo 'Регистрация невозможна: Введенные пароли не совпадают<br/><a href="registration.php"/>назад</a>';}
    76.  
    77.  
    78.            }
    79.            else { echo 'Регистрация невозможна: Пользователь с таким именем уже существует<br/><a href="registration.php"/>назад</a>';}
    80.  
    81.  
    82.          session_destroy();
    83.         }
    84.         else { echo 'Регистрация невозможна: код подтверждения введен не верно<br/><a href="registration.php"/>назад</a>';}
    85.      }
    86.      //Модуль отвечающий за активацию аккаунта
    87.  
    88.      if($_GET['activation'] AND $_GET['activation']!='') {
    89.      $uniq_id = $_GET['activation'];
    90.      //Создаем запрос
    91.      $r=@mysql_query("UPDATE users SET status=1 WHERE uniq_id='".$uniq_id."' AND status=0");
    92.      if($r) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Теперь вы можете <a href="index.php">войти на сайт</a> используя данные указанные при регистрации';}
    93.      else {echo 'Активация невозможна: профиль уже активирован';}
    94.      }
    95. ?>
    подскажите что не так, пожалуйста!!! :?
     
  2. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    начинай соображать
     
  3. StyXXX

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

    С нами с:
    29 ноя 2009
    Сообщения:
    21
    Симпатии:
    0
    Хмммммм.... помог конечно, респектосина!!!
     
  4. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Используй mysql_num_rows() вместо mysql_affected_rows. Если не поможет, значит пользователь с таким именем уже существует.
     
  5. StyXXX

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

    С нами с:
    29 ноя 2009
    Сообщения:
    21
    Симпатии:
    0
    окай, спасибо, попробую, позже отпишусь ;)
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ебанитесь и откройте для себя

    [sql]
    SELECT count(*) as CNT FROM `table` WHERE...
    [/sql]
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    так же рекомендую открыть для себя

    mysql_escape_string()
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    так же НАВСЕГДА отказаться от @ и использовать нормальную обработку ошибок

    $rResult = mysql_query('...') or die('MYSQLError: '. mysql_error());
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    так же СРАЗУ и НАВСЕГДА структурировать код и коментить его
     
  10. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    я б так начал... примерно...

    PHP:
    1.  
    2. <?php
    3.  
    4. /**
    5.  * Авторизация пользователя
    6.  *
    7.  * @project bla-bla
    8.  * @package Tools
    9.  * @subpackage Registration
    10.  * @version 1.0
    11.  * @author me
    12.  *
    13.  */
    14.  
    15. // определяем пути включения
    16. define ( 'ROOT_DIR', rtrim ( realpath ( dirname(dirname ( __FILE__ )) ), '\/\\' ) );
    17.  
    18.  
    19. // старт сессии
    20.  
    21. // включение библиотек
    22. require_once (ROOT_DIR."/config.inc.php");
    23. require_once (ROOT_DIR."/functions.inc.php");
    24.  
    25. // уход от POST запроса
    26. function redirect() {
    27.     header('Location: ./',302);
    28.     exit();
    29. }
    30.  
    31. //Необходимо ;дключиться к БД
    32. $link = mysql_connect($DBSERVER, $DBUSER, $DBPASS) or die("Не могу подключиться" );
    33. // сделать $DB текущей базой данных
    34. mysql_select_db($DB, $link) or die ('Не могу выбрать БД');
    35.  
    36. // был сабмит?
    37. if( !empty($_POST['do']) AND $_SERVER['REQUEST_METHOD'] == 'POST') {
    38.     // регистрируем
    39.    
    40.     // провери юзера
    41.     $nick = mysql_escape_string( strtolower( $_POST['nick'] ) );
    42.     $result = mysql_query("
    43.         SELECT
    44.             count(*) as cnt
    45.         FROM
    46.             users
    47.         WHERE nick='{$nick}'
    48.     ", $link) or die('MySQL error: '.mysql_error($link));
    49.  
    50.     $row = mysql_fetch_object($result);
    51.     if( 0 == $row->cnt) redirect();
    52.     // конец проверок юзера
    53.  
    54.     // проверки мыла
    55.     if( -1 == checkmail($_POST['mail'])) redirect();
    56.  
    57.     // Регистрация
    58.     // массив для вставки в базу
    59.     $insert = array();
    60.     // генерим уникальный ID
    61.     $insert['uniq_id'] = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime());
    62.     // получаем пароль
    63.     $insert['pass'] = mysql_escape_string($_POST['pass']);
    64.     // получаем почту
    65.     $insert['email'] = mysql_escape_string($_POST['mail']);
    66.     // Создаем запрос для записи данных в БД
    67.     $keys = "`".join( "`", array_keys( $insert) )."`";
    68.     $vals = "'".join( "'", array_values( $insert) )."'";
    69.    
    70.     mysql_query("
    71.         INSERT INTO
    72.             `users`
    73.         ( {$keys} )
    74.             VALUES
    75.         ( {$vals} )
    76.     ", $link) or die('MySQL error: '.mysql_error($link));
    77.    
    78.     // ну там дальше сам...
    79.  
    80. } else {
    81.     //Выводим форму
    82.     echo '<html><head><title>Регистрация</title></head><body>';
    83.     echo '<h2>Форма регистрации</h2>';
    84.     echo'<form action="" method="POST"><table cellpadding=4 cellspacing=0 border=1 style="border-collapse:collapse">';
    85.     echo '<tr><td>Желаемый ник:</td><td><input name="nick" type="text" value=""></td></tr>';
    86.     echo '<tr><td>Пароль:</td><td><input name="pass" type="password" value=""></td></tr>';
    87.     echo '<tr><td>Ещё раз пароль:</td><td><input name="rpass" type="password" value=""></td></tr>';
    88.     echo '<tr><td>Эл.адрес</td><td><input name="mail" type="text" value=""></td></tr>';
    89.     echo '<tr><td colspan=2 align="right"><input name="do" type="submit" value="зарегистрировать"></td></tr>';
    90.     echo '</table></form><a href="./">« Назад</a></body></html>';
    91. }
    92.  
     
  11. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    и тут остапа понесло
     
  12. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    topas
    Ты фотку что ли не видишь? :)
     
  13. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Simpliest
    ага, курит. Судя по постам - что-то серьёзное
     
  14. StyXXX

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

    С нами с:
    29 ноя 2009
    Сообщения:
    21
    Симпатии:
    0
    попробовал......Warning: Wrong parameter count for mysql_num_rows() не то((((
     
  15. StyXXX

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

    С нами с:
    29 ноя 2009
    Сообщения:
    21
    Симпатии:
    0
    2 440Hz:
    попробовал
    PHP:
    1. # require_once (ROOT_DIR."/config.inc.php");
    2. #  require_once (ROOT_DIR."/functions.inc.php");
    Warning: require_once(ROOT_DIR/config.inc.php) [function.require-once]: failed to open stream
    подскажи......... то ли лыжы не едут, то ли йа ......)))
     
  16. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а ты выведи имя файла включаемого? полное имя
     
  17. StyXXX

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

    С нами с:
    29 ноя 2009
    Сообщения:
    21
    Симпатии:
    0
    в смысле??? ну вот же: config.inc.php и functions.inc.php или....... что-то еще?
     
  18. StyXXX

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

    С нами с:
    29 ноя 2009
    Сообщения:
    21
    Симпатии:
    0
    аааааааааааааа, сорри, one moment)))
     
  19. StyXXX

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

    С нами с:
    29 ноя 2009
    Сообщения:
    21
    Симпатии:
    0
    ВОТ: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Westgoods\2\registration.php on line 3
     
  20. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    сам путь выведи и посмотри откуда включает

    print(ROOT_DIR."/config.inc.php");
    exit();
     
  21. StyXXX

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

    С нами с:
    29 ноя 2009
    Сообщения:
    21
    Симпатии:
    0
    блин, чот я не зашарил, куда код писать.
     
  22. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    в
    перед
     
  23. StyXXX

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

    С нами с:
    29 ноя 2009
    Сообщения:
    21
    Симпатии:
    0
    вот и результат: ROOT_DIR/config.inc.php (вставил в registration.php перед 3 line)
    а что означает???