Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Код регистрации
Tumour  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 84
Пользователь №: 42328
На форуме: 11 месяцев, 5 дней
Карма:




Всем привет. Вообщем у меня есть это:
 
<?php
//Открываем соединение с базой данных
@$connect = mysqli_connect("localhost", "root", "", "users");
if (!$connect){
exit;
}
?>
<html>
<
head>
<
meta charset="utf-8">
<
title>Регистрация</title>
</
head>
<
body>
<
form method = "POST">
Логин: <input type = "text" name = "login"><br>
Пароль:<input type = "password" name = "pas1"><br>
Повторите пароль:<input type = "password" name = "pas2"><br>
Ваш EMail: <input type = "email" name = "email"><br>
<
input type="radio" name="typeuser" id = "upper" value = "upper">
<
label for="upper">Аппер</label>
<
input type="radio" name="typeuser" id = "lifer" value = "lifer">
<
label for="lifer">Лайфер</label><br>

<
input type = "submit">
</
form>
</
body>
</
html>
<?php
//Глобальные переменные типа $_POST, для удобства запихиваем в переменную и естественно пытаемся сразу обезопасить
$login = trim($_POST['login']);
$pas1 = md5(md5(trim($_POST['pas1'])));
$pas2 = md5(md5(trim($_POST['pas2'])));
$email = trim($_POST['email']);
$err = array();
//Проверяем не пусты ли формы для регистрации
if (!empty($pas1) && !empty($pas2) && !empty($login) && !empty($email)){
//Проверяем логин на не нужные символы типа русского язык т.д
if(!preg_match("/^[a-zA-Z0-9]+$/",$login)){
$err[] = "<br>Логин может состоять только из букв английского алфавита и цифр";
}
//Проверяем количесво символов в логине (Должно быть не больше 30 и не меньше 3)
if (strlen($login) < 3 or strlen($login) > 30){
$err[] = "<br>Логин должен быть не менее 3 символов и не более 30";
}
//Проверяем пароль на количество символов (Должно быть не больше 20 и не меньше 8)
if (strlen($pas1) < 8 or strlen($pas1) > 20 or strlen($pas2) < 8 or strlen($pas2) > 20){
$err[] = "<br>Пароль должен быть не менее 8 символов и не более 20";
}
//Проверяем пароли на совпадение
if ($pas1 != $pas2){
$err[] = "<br>Пароли должны совпадать";
}
//Переменная для проверки логина и пароля
$query = mysqli_query($connect, "SELECT * FROM `lifer` WHERE `lifer_login` = '".$login."'");
//Проверяем существует ли, такой логин
if (mysqli_data_seek($query, 0) > 0){
$err[] = "<br>Такой логин существует попробуйте еще раз!";
}
//Если пользователь прошел все проверки, то регистрируем его, иначе пишим ему, где он допустил ошибку
if (count($err) == 0){
$result = "INSERT INTO `lifer`(`lifer_login`, `lifer_password`, `lifer_email`, `lifer_age`)
VALUES ('"
.$login."', '".$pas1."', '".$email."', '".$age."')";
if (mysqli_query($connect, $result)){
echo $login . ", добро пожаловать, вы успешно зарегестрированы!";
}
}
else{
echo "<br>Не удалось зарегистроватся";
foreach ($err as $error){
echo $error . "<br>";
}
}
}

//Закрываем соединение с базой данных
@$close = mysqli_close($connect);
if (!$close){
echo 'Все хорошо, закрыто';
}
?>


Что здесь с точки зрения безопасности улучшить, добавить, т.д.
Максимально безопаснее.
Помогите пожалуйста, опыта мало, а сделать нужно.
Код мой, но некоторые моменты слизал.
Вообщем больше критики.


--------------------
Открой мир с UpTripper

UpTripper.com
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 721
Пользователь №: 41530
На форуме: 1 год, 5 месяцев, 6 дней
Карма: 9




Tumour


mysqli_real_escape_string();


Зачем сначала md5 потом проверки? Может наоборот?


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Tumour  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 84
Пользователь №: 42328
На форуме: 11 месяцев, 5 дней
Карма:




Цитата (Wind @ 5.04.2016 - 21:56)
Tumour


mysql_real_escape_string();


Это как - то так?

$login = trim(mysql_real_escape_string($_POST['login']));


--------------------
Открой мир с UpTripper

UpTripper.com
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 721
Пользователь №: 41530
На форуме: 1 год, 5 месяцев, 6 дней
Карма: 9






--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dron4ik  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1690
Пользователь №: 31058
На форуме: 4 года, 10 месяцев, 25 дней
Карма: 24




У тебя вывод сообщения происходит под закрывающим тегом корня?


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Tumour  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 84
Пользователь №: 42328
На форуме: 11 месяцев, 5 дней
Карма:




Цитата (Wind @ 5.04.2016 - 22:15)
Tumour

Это как то так

Это я нашел,
Но там как-то написано не понятно. Как мне использовать функцию, назначение которой я не пойму.


--------------------
Открой мир с UpTripper

UpTripper.com
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Tumour  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 84
Пользователь №: 42328
На форуме: 11 месяцев, 5 дней
Карма:




dron4ik
Я чуть не понял твоего вопроса.


--------------------
Открой мир с UpTripper

UpTripper.com
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1355
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 7 дней
Карма: 77




Tumour
dron4ik писал. Что сообщения выводятся после закрывающего "</html>". Что не правильно.
вообще-то проверки нужно делать ДО вывода на экран. И чтоит проверить отправлены ли данные из формы.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Tumour  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 84
Пользователь №: 42328
На форуме: 11 месяцев, 5 дней
Карма:




Kusss


Как лучше проверить отправлены ли данные из формы:

Вариант 1


if ($_SERVER['REQUEST_METHOD'] == 'POST'){
код, код
}


Вариант 2


if(!empty($pas1) && !empty($pas2) && !empty($login) && !empty($email)){
код, код
}


Вариант 3

if(isset($_POST['submit'])){
код, код
}


Либо, я опять не понял, что нужно сделать.


--------------------
Открой мир с UpTripper

UpTripper.com
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25988
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 22 дня
Карма: 725

Не курю:
1 год, 2 месяца, 8 дней


3


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









При генерации твоей страницы регистрации каждый раз открывается бессмысленное соединение с базой данных и затем также бессмысленно закрывается. Открывать соединение с базой данных имеет смысл только в тот момент, когда нужно из неё что-то получить или записать. В твоем случае, открывать соединение нужно только тогда, когда засабмитили форму с данными.

А закрывать соединение в твоем случае вообще не нужно, у тебя же не демон, а умирающий скрипт и поэтому соединение будет закрыто автоматически, так что эта фича не для тебя. Можешь посмотреть например yii фреймворк там пацаны не закрывают соединение явно.

Для валидации нужно написать отдельную библиотеку и затем использовать её везде где нужно провалидировать данные, чтобы не плодить вот эту всю копипасту которую ты написал по всему проекту. А по скольку все программисты лентяи, то нужно просто зайти на гитхаб и вытянуть уже какую-нибудь готовую библиотеку.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25988
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 22 дня
Карма: 725

Не курю:
1 год, 2 месяца, 8 дней


Цитата
нужно только тогда, когда засабмитили форму с данными.

ну да. у него же весь остальной контент из файлов считывается, не из базы.


Цитата
Для валидации нужно написать отдельную библиотеку

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


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса