Доброго времени суток(хотя ОНО нифига и недорое(((, помогите, плиZzz....... есть написанный код регистрации, все ввожу - пишет "Регистрация невозможна: Пользователь с таким именем уже существует" сам особо не соображаю, НО сказали, что все работает. PHP: <? session_start(); @include("config.inc.php"); @include("functions.inc.php"); //Необходимо подключиться к БД $link = mysql_connect($DBSERVER, $DBUSER, $DBPASS) or die("Не могу подключиться" ); // сделать $DB текущей базой данных mysql_select_db($DB, $link) or die ('Не могу выбрать БД'); if(!$_POST['do'] OR $_POST['do'] =='') { //Выводим форму echo '<html><head><title>Регистрация</title></head><body>'; echo '<h2>Форма регистрации</h2>'; echo'<form action="" method="POST"><table cellpadding=4 cellspacing=0 border=1 style="border-collapse:collapse">'; echo '<tr><td>Желаемый ник:</td><td><input name="nick" type="text" value=""></td></tr>'; echo '<tr><td>Пароль:</td><td><input name="pass" type="password" value=""></td></tr>'; echo '<tr><td>Ещё раз пароль:</td><td><input name="rpass" type="password" value=""></td></tr>'; echo '<tr><td>Эл.адрес</td><td><input name="mail" type="text" value=""></td></tr>'; echo '<tr><td colspan=2 align="right"><input name="do" type="submit" value="зарегистрировать"></td></tr>'; echo '</table></form><a href="./">« Назад</a></body></html>'; } //Если данные отправлены if($_POST['do'] !='') { //Начинаем проверять входящие данные if($_POST['sid'] == $_SESSION['uid']) { //Создаем запрос к базе для проверки существования Пользователя $nick = $_POST['nick']; mysql_query("SELECT * FROM users WHERE nick='".strtolower($nick)."'"); //Проверка результата запроса if(mysql_affected_rows()==0) { //Проверка ввведенных паролей if($_POST['pass'] !='' AND $_POST['rpass'] !='' AND $_POST['pass'] === $_POST['rpass']){ //Проверяем на валидность электронный адрес if(checkmail($_POST['mail']) !== -1) { //Осуществляем регистарацию //Генерируем uniq_id $uniq_id = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime()); $pass = $_POST['pass']; $email = $_POST['mail']; //Создаем запрос для записи данных в БД $r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($nick)."','".md5($pass)."','".$email."','".$uniq_id."',0,'".date("dmY")."','".date("dmY")."')"); //После запроса отправляем письмо юзеру, для активации аккаунта if($r) { // Для отправки e-mail в виде HTML устанавливаем необходимый mime-тип и кодировку $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n"; // Откуда пришло $headers .= 'From:Сайт %sitename%' . "\r\n"; //Здесь укажите электронный адрес, куда будут уходить сообщения $mailto = $email; $subject = "Подтверждение регистарции на сайте"; $message = 'Для активации аккаунта пройдите по следующей ссылке <a href="http://АДРЕС_САЙТА/registration.php? activation='.$uniq_id.'" target="_blank">http://АДРЕС_САЙТА/registration.php?activation='.$uniq_id.'</a>'; $message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите enter.'; //Отправляем сообщение if(sendmail($mailto,$subject,$message,$headers) !== FALSE) { echo 'Регистрация завершена, на введеный Вами e-mail было отправлено сообщение для активации аккаунта'; } else {echo 'Регистрация невозможна: Повторите запрос позднее';} } else {echo 'Регистрация невозможна: Повторите запрос позднее';} } else {echo 'Регистрация невозможна: Электронный адрес должен соответствовать шаблону <b>name@domen.com</b><br/><a href="registration.php"/>назад</a>';} } else {echo 'Регистрация невозможна: Введенные пароли не совпадают<br/><a href="registration.php"/>назад</a>';} } else { echo 'Регистрация невозможна: Пользователь с таким именем уже существует<br/><a href="registration.php"/>назад</a>';} session_destroy(); } else { echo 'Регистрация невозможна: код подтверждения введен не верно<br/><a href="registration.php"/>назад</a>';} } //Модуль отвечающий за активацию аккаунта if($_GET['activation'] AND $_GET['activation']!='') { $uniq_id = $_GET['activation']; //Создаем запрос $r=@mysql_query("UPDATE users SET status=1 WHERE uniq_id='".$uniq_id."' AND status=0"); if($r) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Теперь вы можете <a href="index.php">войти на сайт</a> используя данные указанные при регистрации';} else {echo 'Активация невозможна: профиль уже активирован';} } ?> подскажите что не так, пожалуйста!!! :?
Используй mysql_num_rows() вместо mysql_affected_rows. Если не поможет, значит пользователь с таким именем уже существует.
так же НАВСЕГДА отказаться от @ и использовать нормальную обработку ошибок $rResult = mysql_query('...') or die('MYSQLError: '. mysql_error());
я б так начал... примерно... PHP: <?php /** * Авторизация пользователя * * @project bla-bla * @package Tools * @subpackage Registration * @version 1.0 * @author me * */ // определяем пути включения define ( 'ROOT_DIR', rtrim ( realpath ( dirname(dirname ( __FILE__ )) ), '\/\\' ) ); // старт сессии session_start (); // включение библиотек require_once (ROOT_DIR."/config.inc.php"); require_once (ROOT_DIR."/functions.inc.php"); // уход от POST запроса function redirect() { header('Location: ./',302); exit(); } //Необходимо ;дключиться к БД $link = mysql_connect($DBSERVER, $DBUSER, $DBPASS) or die("Не могу подключиться" ); // сделать $DB текущей базой данных mysql_select_db($DB, $link) or die ('Не могу выбрать БД'); // был сабмит? if( !empty($_POST['do']) AND $_SERVER['REQUEST_METHOD'] == 'POST') { // регистрируем // провери юзера $nick = mysql_escape_string( strtolower( $_POST['nick'] ) ); $result = mysql_query(" SELECT count(*) as cnt FROM users WHERE nick='{$nick}' ", $link) or die('MySQL error: '.mysql_error($link)); $row = mysql_fetch_object($result); if( 0 == $row->cnt) redirect(); // конец проверок юзера // проверки мыла if( -1 == checkmail($_POST['mail'])) redirect(); // Регистрация // массив для вставки в базу $insert = array(); // генерим уникальный ID $insert['uniq_id'] = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime()); // получаем пароль $insert['pass'] = mysql_escape_string($_POST['pass']); // получаем почту $insert['email'] = mysql_escape_string($_POST['mail']); // Создаем запрос для записи данных в БД $keys = "`".join( "`", array_keys( $insert) )."`"; $vals = "'".join( "'", array_values( $insert) )."'"; mysql_query(" INSERT INTO `users` ( {$keys} ) VALUES ( {$vals} ) ", $link) or die('MySQL error: '.mysql_error($link)); // ну там дальше сам... } else { //Выводим форму echo '<html><head><title>Регистрация</title></head><body>'; echo '<h2>Форма регистрации</h2>'; echo'<form action="" method="POST"><table cellpadding=4 cellspacing=0 border=1 style="border-collapse:collapse">'; echo '<tr><td>Желаемый ник:</td><td><input name="nick" type="text" value=""></td></tr>'; echo '<tr><td>Пароль:</td><td><input name="pass" type="password" value=""></td></tr>'; echo '<tr><td>Ещё раз пароль:</td><td><input name="rpass" type="password" value=""></td></tr>'; echo '<tr><td>Эл.адрес</td><td><input name="mail" type="text" value=""></td></tr>'; echo '<tr><td colspan=2 align="right"><input name="do" type="submit" value="зарегистрировать"></td></tr>'; echo '</table></form><a href="./">« Назад</a></body></html>'; }
2 440Hz: попробовал PHP: # require_once (ROOT_DIR."/config.inc.php"); # require_once (ROOT_DIR."/functions.inc.php"); Warning: require_once(ROOT_DIR/config.inc.php) [function.require-once]: failed to open stream подскажи......... то ли лыжы не едут, то ли йа ......)))
ВОТ: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Westgoods\2\registration.php on line 3