[PHP] Регистрация для сайта - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir  
[PHP] Регистрация для сайта
Vladon4ik Дата: Четверг, 27.11.2014, 23:18 | Сообщение # 1
Любитель
Сообщений: 40
Статус: Offline

Всем привет! Я Vladon4ik!



Что же я хочу? Мне на сайт нужна простенькая система регистрации! Сайт на автомобильную тему! Помогите пожалуйста, опытные програмисты!



Как нас могут развести на аккаунт Steam? - http://cheat-master.ru/forum/140-372468-1
[Сайт] Создаю сайты на любую тему - http://cheat-master.ru/forum/162-429298-1
Цель - год на Cheat-Master.Ru
0% замечаний
1000 репы
Занимаюсь программированием в Cleo и C++


Сообщение отредактировал Vladon4ik - Четверг, 27.11.2014, 23:18
DoES Дата: Пятница, 28.11.2014, 16:11 | Сообщение # 2
Black Mafia
Сообщений: 1358
Статус: Offline

https://yadi.sk/d/CnBG-zgpczcPW
Anastasia_Rolix Дата: Среда, 04.03.2015, 05:01 | Сообщение # 3
Боец
Сообщений: 112
Статус: Offline
надо базу данных еще чтоб регестрироваться

100 дней на CM [✔] 10 репутации на CM [✔] Новичок [✔]
150 дней на CM [✔] 25 репутации на CM [✔] Любитель [✔]
200 дней на CM [✔] 50 репутации на CM [✔] Боец [✔]
309 дней на CM [✔] 100 репутации на CM [✔] Боец(х2) [✔]
430 дней на CM [✔] 250 репутации на CM [✔] Бывалый [✖]
600 дней на CM [✔] 300 репутации на CM [✔] Знаток [✖]
700 дней на CM [✔] 400 репутации на CM [✔] Советник [✖]
800 дней на CM [✔] 500 репутации на CM [✔] Авторитет [✖]
900 дней на CM [✔] 600 репутации на CM [✔] Легенда [✖]
1000 дней на CM [✔] 1000+ репутации на CM [✖] Cheat-master [✖]
Radiance Дата: Пятница, 06.03.2015, 16:34 | Сообщение # 4
Боец
Сообщений: 209
Статус: Offline
Простенькая? Ну держи.

Код

<?php
session_start();
// если есть хеш в сессии - в топку.
if ($_SESSION['hash']){
  die("Уже авторизован");
}

// Принимаем параметр, что бы определиться, что исполнять
$parameter = $_REQUEST['parameter'];
// Подрубимся к базе

try
  {    
      $db = new PDO('mysql:host=localhost;dbname=test','root','pass');
  }
catch(PDOException $e)
  {
      die("Error: ".$e->getMessage());
  }

switch($parameter){
  default:
   // Если без параметра - значит авторизация.
    
   $login = $_REQUEST['login']; // Login
   $pass = $_REQUEST['pass']; // Password
   // Если не пришли логин или пароль
   if ((empty($login)) or (empty($password))){
    die("Введены не все данные!");
   }
   // Экранируем хтмль. Этого хватит.
   $login = htmlspecialchars($login);
   $pass = htmlspecialchars($pass);
   // Получим данные из базки.
   // Сконструируем запрос
   $getUser = $db->prepare("SELECT `pass` FROM `users` WHERE `login` = :login ");
   // Сбиндим данные
   $getUser -> bindValue(":login", $login, PDO::PARAM_STR);
   // Отправим запрос
   $getUser->execute();
   // Если запрос затронул 0 строк
   if ($getUser->rowCount() == 0){
    die("Ошибка! Пользователя с таким логином не существует");
   }
   // Преобразуем данные из базы в ассоц.массив
   $getUser = $getUser->fetch(PDO::FETCH_ASSOC);
   // Если хеш пароля из базы совпадает с хешем пароля пришедшего из формы
   if ($getUser['pass'] == md5($pass)){
    // Повессим в сессию хеш
    // Тут немного разойдусь, составим переменную для генерации хеша.
    $hash = "$login $pass tine()"; // Login + Pass + Unix Time. А так можно подставить что угодно, главное что бы на выходе был уникальный хеш.  
    $_SESSION['hash'] = md5($hash);
    // Обновим хеш в базе
    $updateHash = $db->query("UPDATE `users` SET `hash` = $hash");
    // Выведем сообщение
    echo 'Здарова, ',$login,'. Че припёрся?';
   }else{
    die("Неверный пароль");
   }
  break;
   // Если параметр равен reg, знач регистрация.
  case 'reg':
   // Приняли логин
   $login = $_REQUEST['login'];
   // Приняли пароль первый
   $pass1 = $_REQUEST['pass1'];
   // Приняли пароль второй  
   $pass2 = $_REQUEST['pass2'];

   // Проверим наличие всех переменных.  

   if ((empty($login)) or (empty($pass1)) or (empty($pass2))){
    die("Введены не все данные!");
   }

   // Проверим, есть ли юзер с таким логином
   $getLogin = $db->prepare("SELECT `login` from `users` where `login` = :login");
   $getLogin->bindParam(":login", $login, PDO::PARAM_STR);
   $getLogin->execute();
   if ($getLogin->rowCount() > 0){
    die("Ошибка! Пользователь с таким логином уже существует");
   }
   // Если пароли не совпадают
   if ($pass1 !== $pass2){
    die("Ошибка! Пароли не совпали.");
   }

   $hash = "$login $pass tine()";
   $hash = md5($hash);
   $pass = md5($pass1);
   // Если пароли совпали и скрипт не умер до этого момента, то впишем товарисча в базу.
   $addUser = $db->prepare("INSERT INTO `users`(`login`, `pass`, `hash` VALUES(?,?,?");
   // Соберем данные в массив.
   $arr = array("$login","$pass", "$hash");
   $addUser->execute($arr);
   // Обрадуем товарисча
   echo 'Вы успешно зарегестрированы!';
  break;
}
// Оборвем соединение с бд
$db = null;

?>


Ориентировался на такую структуру базы:

Цитата

login | Pass | hash


hash - хеш данные, что бы не хранить данные о аккаунте в куках \ сессии. Т.е. дальше работа должна строиться относительно этого хеша. Хотя в принципе можешь подправить и сделать как тебе надо.

при запросе вида

Цитата

script.php


Обработает данные для авторизации

При запросе вида

Цитата

script.php?parameter=reg


Обработает данные для регистрации.

Ну а внутри по максимуму все закомментировал, разберешься.



Радик камбек :D

  • Страница 1 из 1
  • 1
Поиск: