[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регистрация и Авторизация
shvedsd
Вот скрипт регистрации, авторизации.
Он конечно же не очень качественно сделан, но все же может кому нибудь пригодиться. :)

файл с переменными - variables.php
Свернутый текст


$login = isset($_POST['login']) ? $_POST['login'] : NULL;
$name = isset($_POST['name']) ? $_POST['name'] : NULL;
$sex = isset($_POST['sex']) ? $_POST['sex'] : NULL;
$email = isset($_POST['email']) ? $_POST['email'] : NULL;
$password = isset($_POST['password']) ? $_POST['password'] : NULL;
$spassword = isset($_POST['spassword']) ? $_POST['spassword'] : NULL;
$birthday = isset($_POST['birthday']) ? $_POST['birthday'] : NULL;
$birthmonth = isset($_POST['birthmonth']) ? $_POST['birthmonth'] : NULL;
$birthyear = isset($_POST['birthyear']) ? $_POST['birthyear'] : NULL;
$error = array();



конфигурационный файл - config.php
Свернутый текст


/**
* подключение к базе данных
*/

$link = mysql_connect('localhost', 'root', '')
or die("MySQL Error: ".mysql_error());

mysql_select_db("name", $link)
or die ("ERROR: Не удалось выбрать базу данных");

/**
* проверяем куки
*/

if (isset($_COOKIE['login']) && isset($_COOKIE['password']))
{
/**
* если же они имеются
* то пробуем авторизовать пользователя по этому логину и паролю
*/

$login = mysql_escape_string($_COOKIE['login']);
$password = mysql_escape_string($_COOKIE['password']);

/**
* делаем запрос к БД
* и ищем юзера с таким логином и паролем
*/

$checkUser = mysql_query("SELECT * FROM `users`
WHERE `login` = '"
. mysql_real_escape_string($login) ."'
AND `password` = '"
. mysql_real_escape_string($password) ."'"
);

/**
* если такой пользователь найден в куках
*/

if(mysql_num_rows($checkUser))
{
/**
* ставим куку на 24 часа
*/

$time = 86400;
/**
* перезаписываем куки
*/

setcookie('login', $login, time()+$time, "/");
setcookie('password', $password, time()+$time, "/");

/**
* и записываем его данные в сессию
*/

$dataUser = mysql_fetch_assoc($checkUser);
$dataUser = array_map("stripslashes", $dataUser);
$dataUser = array_map("htmlspecialchars", $dataUser);

$_SESSION['id'] = $dataUser['id'];
$_SESSION['login'] = $dataUser['login'];

}
}




вот сам скрипт регистрации - register.php
Свернутый текст


/**
* если нажата кнопка регистрация
*/

if(!empty($_POST['register']))
{
/**
* проверяем поле login на заполненость и на правильность заполнености
*/

if(empty($login))
$error[] = 'Введите логин';
elseif(!preg_match("/^[-a-z0-9_]{3,25}$/i", $login))
$error[] = 'Логин должен состоять от 3 и до 25 символов и содержать только латинские символы от A-Z, знаки подчёркивания, тире и цыфры от 0-9';

/**
* проверяем поле name на заполненость и на правильность заполнености
*/

if(empty($name))
$error[] = 'Введите Имя';
elseif(!preg_match("/^[А-Яа-яЁё]{3,25}+/u", $name))
$error[] = 'Имя должено состоять от 3 и до 25 символов и содержать символы от А-Я';

/**
* проверяем поле дата рождения на заполненость
*/

if(empty($birthday) || empty($birthmonth) || empty($birthyear))
$error[] = 'Не заполнено поле Дата рождения';

/**
* проверяем поле email на заполненость и на правильность заполнености
*/

if(empty($email))
$error[] = 'Не заполнено поле email';
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
$error[] = 'Не корректный email адрес';

/**
* проверяем поле password на заполненость и на правильность заполнености
*/

if(empty($password))
$error[] = 'Введите пароль';
elseif(!preg_match("/^[-a-zA-Z0-9]{6,36}$/", $password))
$error[] = 'Вы неправильно ввели пароль';

/**
* проверяем поле spassword на заполненость и на правильность заполнености
*/

if(empty($spassword))
$error[] = 'Вы не ввели поттверждающий пароль.';
elseif(!preg_match("/^[-a-zA-Z0-9]{6,36}$/", $spassword))
$error[] = 'Вы неправильно ввели потверждение пароля';

/**
* проверяем поле password и spassword на совпадение
*/

if($password != $spassword)
$error[] = 'Пароли не совпадают';


/**
* делаем запрос к БД
* на проверку такого же логина
*/

$queryLogin = mysql_query("SELECT COUNT(id) FROM `users`
WHERE `login` = '"
. mysql_real_escape_string($_POST['login']) ."'"
);

/**
* если такой логин уже существует то выдаем ошибку
*/

if(mysql_result($queryLogin, 0) > 0)
$error[] = 'Такой логин зарегистрирован в системе';

/**
* делаем запрос к БД
* на проверку такого же E-Mail
*/

$queryEmail = mysql_query("SELECT COUNT(id) FROM `users`
WHERE `email` = '"
. mysql_real_escape_string($_POST['email']) ."'"
);

/**
* если такой E-Mail уже существует то выдаем ошибку
*/

if(mysql_result($queryEmail, 0) > 0)
$error[] = 'Такой Email зарегистрирован в системе';

/**
* если ошибок нет, продолжаем
*/

if(count($error) == 0)
{
/**
* обрабатываем login, password, spassword, name, email
*/

$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
$spassword = stripslashes($spassword);
$spassword = htmlspecialchars($spassword);
$name = stripslashes($name);
$name = htmlspecialchars($name);
$email = stripslashes($email);
$email = htmlspecialchars($email);

/**
* удаляем лишние пробелы
*/

$login = trim($login);
$password = trim($password);
$spassword = trim($spassword);
$name = trim($name);
$email = trim($email);

/**
* превращаем поле sex из цифр в слова
*/

if($sex == 1)
$sex = 'Не определён';
elseif($sex == 2)
$sex = 'Мужской';
elseif($sex == 3)
$sex = 'Женский';

/**
* ставим соль для защиты пароля
* хешируем пароль и добавляем соль
* класс пользователя по умолчанию
* аватар по умолчанию
* адресс сайта по умолчанию
*/

$salt = mt_rand(100, 999);
$password = md5(md5($password).$salt);
$class = 'Пользователь';
$avatar = '/themes/images/no_avatar.png';
$site = 'Нет информации';

/**
* записываем пользователя в БД
*/

$addUser = mysql_query("INSERT INTO `users`
SET
`login` = '"
. mysql_real_escape_string($login) ."',
`password` = '"
. mysql_real_escape_string($password) ."',
`email` = '"
. mysql_real_escape_string($email) ."',
`salt` = "
. (int)$salt .",
`sex` = '"
. mysql_real_escape_string($sex) ."',
`avatar` = '"
. mysql_real_escape_string($avatar) ."',
`class` = '"
. mysql_real_escape_string($class) ."',
`site` = '"
. mysql_real_escape_string($site) ."',
`birthdate_day` = "
. (int)$birthday .",
`birthdate_month` = "
. (int)$birthmonth .",
`birthdate_year` = "
. (int)$birthyear .",
`name` = '"
. mysql_real_escape_string($name) ."',
`dat_registr` = NOW()"

);

/**
* если запись не прошла выдаем ошибку
*/

if(empty($addUser))
$errors[] = 'Произошла ошибка при создании учётной записи нового пользователя.';
else
{
/**
* иначе создаем ссесию
*/

$_SESSION['login'] = htmlspecialchars(stripslashes($login));
$_SESSION['id'] = mysql_insert_id();
}

/**
* и перенаправляем на главную страницу
*/

header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
exit();
}
}

else
$error[] = 'Заполните данные.';



скрипт авторизации - authorization.php
Свернутый текст


/**
* нажата ли кнопка войти
*/

if(isset($_POST['enter']))
{
/**
* запрос на выбор соли где логин принадлежит логину
*/

$query = "SELECT `salt` FROM `users`
WHERE `login` = '"
. mysql_real_escape_string($login) ."' LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());

/**
* если соль найдена
*/

if (mysql_num_rows($sql) == 1)
{
/**
* переменной $row присваеваем ассоциативный массив
* переменной $salt присваеваем соль
* хешируем пароль и добавляем соль
*/

$row = mysql_fetch_assoc($sql);
$salt = $row['salt'];
$password = md5(md5($password).$salt);

/**
* проверяем существует ли такой id с введеным логином и паролем
*/

$query = "SELECT `id` FROM `users`
WHERE `login` = '"
. mysql_real_escape_string($login) ."'
AND `password` = '"
. mysql_real_escape_string($password) ."' LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
}

/**
* проверяем существует ли такой пользователь с таким логином и паролем
*/

$checkUser = mysql_query("SELECT * FROM `users`
WHERE `login` = '"
. mysql_real_escape_string($login) ."'
AND `password` = '"
. mysql_real_escape_string($password) ."'"
);
/**
* если существует
*/

if(mysql_num_rows($checkUser))
{
/**
* ставим куку на 24 часа
*/

$time = 86400;

/**
* если установлена галочка запомнить
*/

if (isset($_POST['remember']))
{
/**
* записываем куку логина и пароля на 24 часа
*/

setcookie('login', $login, time()+$time, "/");
setcookie('password', $password, time()+$time, "/");
}

/**
* если пользователь найден записываем в сессию его id и login
*/

$dataUser = mysql_fetch_assoc($checkUser);
$dataUser = array_map("stripslashes", $dataUser);
$dataUser = array_map("htmlspecialchars", $dataUser);

$_SESSION['id'] = $dataUser['id'];
$_SESSION['login'] = $dataUser['login'];

/**
* и перенаправляем на главную страницу
*/

header('location: http://'.$_SERVER['HTTP_HOST']);
}
else
$error[] = 'Пользователь не найден';
}



может я где то что то не правильно прокомментировал, если оно так и есть поправьте меня. :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.