[Урок] Пример простой регистрации (php + mysql)

Разработка своих веб-приложений и страничек

[Урок] Пример простой регистрации (php + mysql)

Сообщение Zver » 09 мар 2010, 17:22

Думаю многим понадобиться пример этого скрипта.
Для начала нам понадобиться веб сервер, дабы выполнялись PHP скрипты и возможность добавлять информацию в БД.

  1. Установка и настройка сервера приложений TopServer
  2. Установка и настройка сервера приложений Denwer

И так. Теперь перейдите в phpMyAdmin, и создайте новую БД.
После, перейдите в созданную БД и создайте таблицу "users". В ней будут храниться данные о пользователях.

Выполните следующий Mysql запрос для создания новой таблицы "users":

Код: Выделить всёРазвернуть
CREATE TABLE  `users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`username` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 255 ) NOT NULL ,
`regdate` DATETIME NOT NULL DEFAULT  '00-00-00',
`icq` VARCHAR( 255 ) NOT NULL ,
`about` TEXT NOT NULL ,
INDEX (  `id` ) ,
UNIQUE (
`username`
)
) ENGINE = MYISAM COMMENT =  'Зарегистрированные пользователи';


Теперь перейдём к форме регистрации.
Для начала нам нужно подключиться к БД, для обмена данными.

Код: Выделить всёРазвернуть

<?php
//////////////////////////////
/* Начало: Подключение к БД */
//////////////////////////////

$host = 'localhost'; // В большинстве случаев менять не надо.
$name = 'phpMyAdmin'; // Имя созданной БД.
$user = 'root'; // Имя пользователя БД.
$pass = ''; // Пароль пользователя БД.

@mysql_connect($host, $user, $pass);
@
mysql_select_db($name);
// @mysql_set_charset('utf8'); // Разкомментируйте если заместо русского текста вопросы или "карякули"

/////////////////////////////
/* Конец: Подключение к БД */
/////////////////////////////

function intForm(){

?>
<!-- Тут код формы -->
<?

}

if(isset(
$_POST['submit'])){

  $username = mysql_real_escape_string(trim($_POST['username']));
  $password = $_POST['password'];
  $icq = intval(trim($_POST['icq']));
  $about = mysql_real_escape_string(trim($_POST['about']));
  $date = date('Y-m-d h:i:s');
  
  $sql 
= "SELECT id, username FROM users WHERE username = '".$username."' LIMIT 1";
  $res = mysql_query($sql);
  $row = mysql_fetch_array($row);

  if($row){
    die "Данный логин уже используется!";
  } else {
    if(empty($username) || empty($password)){
       die "Поля логин и пароль обязательны для заполенния!";
     } else {
       $password = md5($password);
       
       $sql 
= "INSERT INTO users (id, username, password, regdate, icq, about) VALUES (NULL, '".$username."', '".$password."', '".$date."', '".$icq."', '".$about."')";
       mysql_query($sql) or die(mysql_error());
        
       die 
"Регистрация прошла успешно!";
     }
  }
  
} else {
  intForm();
}
?>



Теперь заместо "<!-- тут код формы -->" добавим нужные поля:

Код: Выделить всёРазвернуть
<form action="reg.php" method="post">
<table>
<tr><td>Логин:</td><td><input type="text" name="username" /></td></tr>
<tr><td>Пароль:</td><td><input type="password" name="password" /></td></tr>
<tr><td>Номер ICQ:</td><td><input type="text" name="icq" /></td>
<tr><td>Не много о себе:</td><td><textarea name="about"></textarea></td>
<tr><td>&nbsp;</td><td><input type="submit" name="submit" value="Отправить" /> или <input type="reset" value="Сбросить" /></td>
</table>
</form>


В итоге у нас выходит:


Код: Выделить всёРазвернуть

<?php
//////////////////////////////
/* Начало: Подключение к БД */
//////////////////////////////

$host = 'localhost'; // В большинстве случаев менять не надо.
$name = 'phpMyAdmin'; // Имя созданной БД.
$user = 'root'; // Имя пользователя БД.
$pass = ''; // Пароль пользователя БД.

@mysql_connect($host, $user, $pass);
@
mysql_select_db($name);
// @mysql_set_charset('utf8'); // Разкомментируйте если заместо русского текста вопросы или "карякули"

/////////////////////////////
/* Конец: Подключение к БД */
/////////////////////////////

function intForm(){

?>
<form action="reg.php" method="post">
<table>
<tr><td>Логин:</td><td><input type="text" name="username" /></td></tr>
<tr><td>Пароль:</td><td><input type="password" name="password" /></td></tr>
<tr><td>Номер ICQ:</td><td><input type="text" name="icq" /></td>
<tr><td>Не много о себе:</td><td><textarea name="about"></textarea></td>
<tr><td>&nbsp;</td><td><input type="submit" name="submit" value="Отправить" /> или <input type="reset" value="Сбросить" /></td>
</table>
</form>
<?

}

if(isset(
$_POST['submit'])){

  $username = mysql_real_escape_string(trim($_POST['username']));
  $password = $_POST['password'];
  $icq = intval(trim($_POST['icq']));
  $about = mysql_real_escape_string(trim($_POST['about']));
  $date = date('Y-m-d h:i:s');
  
  $sql 
= "SELECT id, username FROM users WHERE username = '".$username."' LIMIT 1";
  $res = mysql_query($sql);
  $row = mysql_fetch_array($res);

  if($row)
  {
  
die "Данный логин уже используется!";
}
else
{
    if(empty($username) || empty($password))
        {
       die "Поля логин и пароль обязательны для заполенния!";
     } else {
       $password = md5($password);
       
       $sql 
= "INSERT INTO users (id, username, password, regdate, icq, about) VALUES (NULL, '".$username."', '".$password."', '".$date."', '".$icq."', '".$about."')";
       mysql_query($sql) or die(mysql_error());
        
       die 
"Регистрация прошла успешно!";
     }
  }
  
}
else
{
  intForm();
}
?>



By Zver
ЗЫ: Могут быть ошибки, т.к. писал на ходу...
Последний раз редактировалось Zver 17 апр 2010, 21:08, всего редактировалось 3 раз(а).
Zver
Активный участник
 
Сообщения: 1333
Зарегистрирован: 18 дек 2008, 18:51
Откуда: Саратов, Заводской

Re: [Урок] Пример простой регистрации (php + mysql)

Сообщение doliar » 09 мар 2010, 17:31

Посоветую вместо
Код: Выделить всёРазвернуть
`about` TEXT NOT NULL ,


использовать
Код: Выделить всёРазвернуть
`about` MEDIUMTEXT NOT NULL ,


Дабы мускаль не офигивал от большого текста :)
Аватара пользователя
doliar
Автор
 
Сообщения: 732
Зарегистрирован: 16 янв 2008, 15:05
Откуда: Саратов, Волжский р-он
Домен: tbdev-info.vfose.ru

Re: [Урок] Пример простой регистрации (php + mysql)

Сообщение Shadow-zone » 09 мар 2010, 17:32

Parse error: parse error in F:\dreamsrv\vhosts\stalker-ns.vfose.ru\www\reg.php on line 20 не знаю че
Код: Выделить всёРазвернуть
  function intForm(){

подавно не знаю,юзать не стал,незнаю даже чего :sorry:
Последний раз редактировалось Shadow-zone 09 мар 2010, 17:33, всего редактировалось 1 раз.
Аватара пользователя
Shadow-zone
Активный участник
 
Сообщения: 196
Зарегистрирован: 29 дек 2008, 11:22
Откуда: Балашов
Домен: их 2 xD

Re: [Урок] Пример простой регистрации (php + mysql)

Сообщение Zver » 09 мар 2010, 17:33

Код: Выделить всёРазвернуть
@mysql_select_db($name)

Забыл поставить ";" после функции.. :-D
Zver
Активный участник
 
Сообщения: 1333
Зарегистрирован: 18 дек 2008, 18:51
Откуда: Саратов, Заводской

Re: [Урок] Пример простой регистрации (php + mysql)

Сообщение doliar » 09 мар 2010, 17:34

Найди
Код: Выделить всёРазвернуть
@mysql_select_db($name


Преведи к
Код: Выделить всёРазвернуть
@mysql_select_db($name); 
Аватара пользователя
doliar
Автор
 
Сообщения: 732
Зарегистрирован: 16 янв 2008, 15:05
Откуда: Саратов, Волжский р-он
Домен: tbdev-info.vfose.ru

Re: [Урок] Пример простой регистрации (php + mysql)

Сообщение Zver » 09 мар 2010, 17:34

подавно не знаю,юзать не стал,незнаю даже чего

о_О это создание пользовательской функции... Что смутило?
Zver
Активный участник
 
Сообщения: 1333
Зарегистрирован: 18 дек 2008, 18:51
Откуда: Саратов, Заводской

Re: [Урок] Пример простой регистрации (php + mysql)

Сообщение Shadow-zone » 09 мар 2010, 17:41

Ну а че я там должен написятать, я дописал как Долиар скачал,потом вылезла 49 строка,там ваще (????????????????????????!)
Аватара пользователя
Shadow-zone
Активный участник
 
Сообщения: 196
Зарегистрирован: 29 дек 2008, 11:22
Откуда: Балашов
Домен: их 2 xD

Re: [Урок] Пример простой регистрации (php + mysql)

Сообщение Shadow-zone » 09 мар 2010, 17:43

Терь норм,но всёравно 49 упит
Аватара пользователя
Shadow-zone
Активный участник
 
Сообщения: 196
Зарегистрирован: 29 дек 2008, 11:22
Откуда: Балашов
Домен: их 2 xD

Re: [Урок] Пример простой регистрации (php + mysql)

Сообщение doliar » 09 мар 2010, 17:47

Находим:
Код: Выделить всёРазвернуть
$row mysql_fetch_array($row); 


Меняем:
Код: Выделить всёРазвернуть
$row mysql_fetch_array($res); 
Аватара пользователя
doliar
Автор
 
Сообщения: 732
Зарегистрирован: 16 янв 2008, 15:05
Откуда: Саратов, Волжский р-он
Домен: tbdev-info.vfose.ru

Re: [Урок] Пример простой регистрации (php + mysql)

Сообщение doliar » 09 мар 2010, 17:59

Полное исправление:
Код: Выделить всёРазвернуть
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `regdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `icq` varchar(255) NOT NULL,
  `about` mediumtext NOT NULL,
  UNIQUE KEY `username` (`username`),
  KEY `id` (`id`)
)
 ENGINE=MyISAM  COMMENT='Зарегистрированные пользователи' ; 


reg.php :
Код: Выделить всёРазвернуть
<?php
//////////////////////////////
/* Начало: Подключение к БД */
//////////////////////////////

$host = 'localhost'; // В большинстве случаев менять не надо.
$name = 'dbname'; // Имя созданной БД.
$user = 'dbuser'; // Имя пользователя БД.
$pass = 'dbpass'; // Пароль пользователя БД.

@mysql_connect($host, $user, $pass);
@
mysql_select_db($name);
// @mysql_set_charset('utf8'); // Разкомментируйте если заместо русского текста вопросы или "карякули"

/////////////////////////////
/* Конец: Подключение к БД */
/////////////////////////////

function intForm(){

?>
<form action="reg.php" method="post">
<table>
<tr><td>Логин:</td><td><input type="text" name="username" /></td></tr>
<tr><td>Пароль:</td><td><input type="password" name="password" /></td></tr>
<tr><td>Номер ICQ:</td><td><input type="text" name="icq" /></td>
<tr><td>Не много о себе:</td><td><textarea name="about"></textarea></td>
<tr><td>&nbsp;</td><td><input type="submit" name="submit" value="Отправить" /> или <input type="reset" value="Сбросить" /></td>
</table>
</form>
<?

}

if(isset(
$_POST['submit'])){

  $username = mysql_real_escape_string(trim($_POST['username']));
  $password = $_POST['password'];
  $icq = intval(trim($_POST['icq']));
  $about = mysql_real_escape_string(trim($_POST['about']));
  $date = date('Y-m-d h:i:s');

  $sql = "SELECT id, username FROM users WHERE username = '".$username."' LIMIT 1";
  $res = mysql_query($sql);
  $row = mysql_fetch_array($res);

  if($row)
  {
    die("Данный логин уже используется!");
  }
  else
  
{
    if(empty($username) || empty($password)){
       die("Поля логин и пароль обязательны для заполенния!");
     } else {
       $password = md5($password);

       $sql = "INSERT INTO users (id, username, password, regdate, icq, about) VALUES (NULL, '".$username."', '".$password."', '".$date."', '".$icq."', '".$about."')";
       mysql_query($sql) or die(mysql_error());

       die("Регистрация прошла успешно!");
     }
  }

}
 else {
  intForm();
}
?>
Аватара пользователя
doliar
Автор
 
Сообщения: 732
Зарегистрирован: 16 янв 2008, 15:05
Откуда: Саратов, Волжский р-он
Домен: tbdev-info.vfose.ru

След.

Вернуться в PHP, HTML, CSS...

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron