Понедельник, 10.12.2018, 14:35
Главная Регистрация RSS
Приветствую Вас, Гость
Меню сайта
Категории раздела
Delphi [12]
С++ [0]
С# [1]
PHP [7]
Мини-чат
Наш опрос
Оцените мой сайт
Всего ответов: 23
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » 2011 » Декабрь » 21 » Пишем скрипт регистрации php
13:52
Пишем скрипт регистрации php
Скрипт написан на PHP, для хранения информации о пользователях мы использовали базу данных MySQL.

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

Содержимое файла «connectdb.php»:
Code

< ?
//данные о хосте, пользователе и базе данных
$host = 'localhost';
$user = 'root';  
$pass = 'pass';  
$dbname = 'test';
   
// подключаемся и выбираем бд, которую указали выше
if(!mysql_connect($host,$user,$pass))
  die('Не удалось подключиться к серверу MySql!');
elseif(!mysql_select_db($dbname))
  die('Не удалось выбрать БД!');
?>


Теперь напишем скрипт инсталяции, который будет создавать таблицу необходимую для хранения информации о пользователях.

Содержимое файла со скриптом инсталяции «install.php»:

Code

< ?
include('connectdb.php');// подключение к серверу MySql и выбор БД
   
// sql-скрипт для создания таблицы
$sql='CREATE TABLE users(
  id INT NOT NULL AUTO_INCREMENT,
  login VARCHAR(15),
  pass TEXT,
  email VARCHAR(150),
  PRIMARY KEY(id)
);';
   
//выполняем sql-запрос
if(!mysql_query($sql)){
  echo 'Ошибка при создании таблицы в БД!';
} else {
  echo 'Всё прошло отлично, таблица создана!';
}
?>


Пользователей нужно регистрировать — напишем для этого скрипт!
Сразу скажу, что все вводимые данные не проверяются на правильность и скрипт уязвим для взломов, поэтому вам придётся самим доработать его как нужно.

Регистрация заключается в добавлении информации о пользователе (Логин, пароль…) в базу данных.

Создадим файл «register.php» и добавим в него следующее:

Code

< ?
include('connectdb.php');// подключение к серверу MySql и выбор БД
   
if (($_POST['login']!='') ||  
  ($_POST['pass1']!='') ||  
  ($_POST['pass2']!='') ||  
  ($_POST['email']!='')) { // если все данные для регистрации введены, то продолжаем
  $pass1 = $_POST['pass1'];
  $pass2 = $_POST['pass2'];
   
  if (strcmp($pass1, $pass2) == 0) {// если пароли совпадают, то продолжаем
  $login = $_POST['login'];
  $email = $_POST['email'];
   
  //проверяем наличие в БД пользователя с логином $login
  $sql='SELECT * FROM users WHERE login='.$login; // скрипт для поиска по логину в таблице users
  if (!($res=mysql_query($sql)) || (mysql_num_rows($res) == 0)) { // если количество найденых записей ноль, то продолжаем
  // sql-скрипт для добавления даных в таблицу
  $sql = 'INSERT INTO users(login, pass, email)  
  VALUES("'.$login.'", "'.$pass1.'", "'.$email.'")';
  if(mysql_query($sql)) {// выполняем скрипт
  echo 'Пользователь '.$_POST['login'].' успешно зарегистрирован! <a href="/index.php">Форма для входа.';
  } else {
  echo 'При регистрации произошла ошибка, <a href="/register.php">повторите попытку</a>.';
  }
  } else echo 'Пользователь с таким логином уже зарегистрирован!';
  } else echo 'Введенные пароли не совпадают, <a href="/register.php">повторите попытку</a>.';
} else {
?>
  <form method='post' action='/register.php'>
  Введите Логин: <input type='text' size='30' name='login' />
  Введите e-mail: <input type=text size=30 name='email' />
  Пароль: <input type='password' name='pass1' size='30' />
  Повторите пароль: <input type='password' name='pass2' size='30' />
  <input type='submit' value='Регистрация' />
< ?  
}
?>
</form>


Далее нам нужно создать форму для авторизации и скрипт управления авторизацией.

Всё это будет находиться в файле «index.php»:

Code

< ?
/*!!!Чтобы не повредить работоспособности  
  скрипта выше этого комментария  
  не размещайте вообще ничего!!!*/
include('connectdb.php');// подключение к серверу MySql и выбор БД
$userinfo='';
$state='0';
if( (isset($_COOKIE['login'])) & (isset($_COOKIE['pass'])) ) {// если в куках лежит логин и зашифрованый пароля
  if (!isset($_GET['exit'])) {// если кнопка выход не была нажата
  $login=$_COOKIE['login'];
  $pass=$_COOKIE['pass'];
   
  // проверяем наличие пользователя в БД и достаём оттуда пароль
  $sql="SELECT id, pass FROM users WHERE login='$login'";
  $res=mysql_query($sql);
  if(mysql_num_rows($res)>0){// если пользователь есть в БД
  $userinfo = mysql_fetch_array($res);// в этой переменной лежит пароль из БД
  if(strcmp($pass,md5($userinfo['pass'])) == 0) { //проверяем схожесть пароля из БД с паролем из куков
   
  // достаём все данные из БД
  $sql="SELECT * FROM users WHERE login='$login'";
  $res=mysql_query($sql);
  $userinfo=mysql_fetch_array($res); // в этой переменной будет лежать вся информация о пользователе из БД
  $time=time();
  // устанавливаем куки для запоминания статуса пользователя
  setcookie("login",$login,$time+1800);
  setcookie("pass",$pass,$time+1800);
  $state = 1;// статус, если 1, тогда пользователь авторизован
  }
  }
  } else {
  //обнуляем куки, если была нажата кнопка выход
  setcookie("login");
  setcookie("pass");
  }
}
if($state != 1) {// если после проверки куков, оказалось, что пользователь не авторизован, то идем дальше
  if( (isset($_POST['login'])) & (isset($_POST['pass'])) ){ // если пользователь ввёл логин и пароль
  $login = $_POST['login'];  
   
  // проверяем наличие пользователя в БД и достаём оттуда пароль
  $sql = "SELECT id, pass FROM users WHERE login='$login'";
  $res = mysql_query($sql);
  if(mysql_num_rows($res)>0) {// если пользователь есть в БД
  $userinfo = mysql_fetch_array($res);// в этой переменной лежит пароль из БД и номер пользователя
  $pass = $_POST['pass'];
  if(strcmp($pass,$userinfo['pass'])==0){
   
  // достаём все данные из БД
  $sql="SELECT * FROM users WHERE login='$login'";
  $res=mysql_query($sql);
  $userinfo=mysql_fetch_array($res);// в этой переменной будет лежать вся информация о пользователе из БД
  $time=time();
  // устанавливаем куки для запоминания статуса пользователя, пароль шифруем
  setcookie("login", $login, $time+1800);
  setcookie("pass", md5($pass), $time+1800);
  $state = 1;// статус, если 1, тогда пользователь авторизован
  }
  }
  }
}
if($state != 1) {
?>
<form method="post" action="/index.php">
Логин: <input type="text" size="30" name="login"/>
Пароль: <input type="password" name="pass" size="30"/>
<input type="submit" value="Войти"/>
</form>
<a href="/register.php">Регистрация</a>
< ?
} else {
  echo 'Вы вошли на сайт! Ваш Логин: '.$userinfo["login"].'Выш E-mail: '.$userinfo["email"].' <a href="/index.php?exit=y">Выход</a>';
}
?>


Если нужно проверить авторизован пользователь или нет, то проверяем переменную $state, она должна быть равна 1.
В массиве $userinfo содержится вся информация из БД об авторизованном пользователе.

Теперь проверим как это всё работает. В файле «connectdb.php» укажите свои настройки БД.

После этого нужно создать таблицу, для этого следуем в браузере «http://вашсайт.com/install.php» и смотрим результат выполнения скрипта.


Далее отправляемся на стартовую страницу «index.php».

Идём по ссылке «Регистрация», заполняем форму и жмём на кнопку «Регистрация».


Наконец идём по ссылке «Форма для входа», вводим логин и пароль и наслаждаемся=)


Ну а теперь берите эти коды и прикручивайте куда вам надо.
Категория: PHP | Просмотров: 2487 | Добавил: vavilov8 | Теги: MySQL, PHP, авторизация, регистрация | Рейтинг: 0.0/0
Всего комментариев: 1
1 игорь  
$dblocation = "localhost";
мой сайт test11.h16.ru и это нужно писать в "localhost" или что?

Имя *:
Email *:
Код *: