[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверьте скрипт регистрации
12345
Проверьте плиз скрипт регистрации... может его как-то переделать? подскажите. Помогите сделать так, чтоб он был максимально защищен...

Ну вот и сам скрипт
<?php
if(!(isset($_POST['log_news']) && isset($_POST['email']))) { echo"Данные не введены"; exit(); }

$log_news=$_POST[log_news];
$email=$_POST[email];

$log_news=str_replace(" ", "", $log_news); //Удаляем обычные пробелы
$log_news=str_replace(chr(160), "", $log_news); //Удаляем неразрывные пробелы

$email=str_replace(" ", "", $email); //Удаляем обычные пробелы
$email=str_replace(chr(160), "", $email); //Удаляем неразрывные пробелы

if(!preg_match("/^[a-zA-Z0-9+@]+$/",$log_news))
{ echo "Ошибка ввода логина"; exit(); }
else
{ echo $log_news; }

if(!preg_match("/^[a-zA-Z0-9+@]+$/",$email))
{ echo "Ошибка ввода e-mail"; exit(); }
else
{ echo $email; }

include('config.php');

$query = "SELECT * FROM irbis_user WHERE `login`='{$log_news}' AND `email`='{$email}' ";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)
{
echo 'Такой логин или E-mail уже существует'; exit();
}

$query = "INSERT INTO irbis_user(login , email )
VALUES ('
$log_news','$email')";
$result = mysql_query($query) or die(mysql_error());;
echo 'Регистрация успешно прошла';

mysql_query($query, $con);
echo "Данные записаны";
// Закрываем соединение
mysql_close($con);

?>


Буду очень благодарен за помощ



Спустя 23 минуты, 14 секунд (5.04.2012 - 19:58) Игорь_Vasinsky написал(а):
печально.. зачем ты рубишь пробелы???

может trim() достаточно?

а входные данные обрабатывай mysql_real_escape_string(); этого хватит

Цитата
/^[a-zA-Z0-9+@]+$
ни к чёрту... igor.vasinsky@mail.ru - не прокатит...

Цитата
if (mysql_num_rows($sql) > 0)

if (mysql_num_rows($sql))
достаточно

VALUES ('$log_news','$email')";

почитай о конкатенации

VALUES ('".$log_news."','".$email."')";

Спустя 44 секунды (5.04.2012 - 19:59) Игорь_Vasinsky написал(а):
Цитата
$query = "SELECT * FROM irbis_user WHERE `login`='{$log_news}' AND `email`='{$email}' ";


 $query = "SELECT * FROM irbis_user WHERE `login`='{$log_news}' OR `email`='{$email}' ";

Спустя 1 минута, 49 секунд (5.04.2012 - 20:00) Игорь_Vasinsky написал(а):
Цитата
if(!preg_match("/^[a-zA-Z0-9+@]+$/",$log_news))

делаеш по ирбису, а то что д.Коля ярый противник обламывать юзеров на вводимые символы в логинах и паролях - не знаешь...эх

Цитата
$log_news=$_POST[log_news];
$email=$_POST[email];


уф

$log_news=$_POST['log_news'];
$email=$_POST['email'];


Цитата
if(!preg_match("/^[a-zA-Z0-9+@]+$/",$email))
  { echo "Ошибка ввода e-mail";  exit(); }
else
  {  echo $email;  }

  include('config.php');
 
$query = "SELECT * FROM irbis_user WHERE `login`='{$log_news}' AND `email`='{$email}' ";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)


херовая привычка инклудить где попало.. вставляй вверху - так по феншую и искать не надо.


Цитата
if(!(isset($_POST['log_news']) && isset($_POST['email']))) { echo"Данные не введены"; exit(); }


а они будут...

!empty()


Спустя 12 минут, 31 секунда (5.04.2012 - 20:13) 12345 написал(а):
Тоесть вот так будет правильно?
<?php
include('config.php');
if(!(isset($_POST['log_news']) && isset($_POST['email']))) { echo"Данные не введены"; exit(); }

$log_news=$_POST['log_news'];
$email=$_POST['email'];
$log_news=trim($log_news);
$email=trim($email);

if(!preg_match("/^[a-zA-Z0-9+@]+$/",$log_news))
{ echo "Ошибка ввода логина"; exit(); }
if(!preg_match("/^[a-zA-Z0-9+@]+$/",$email))
{ echo "Ошибка ввода e-mail"; exit(); }

$query = "SELECT * FROM irbis_user WHERE `login`='{$log_news}' OR `email`='{$email}' ";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)
{
echo 'Такой логин или E-mail уже существует'; exit();
}

$paswik=md5(rand(1,100000));

$query2 = "INSERT INTO irbis_user(login , email, password )
VALUES ('"
.$log_news."','".$email."','".$paswik."')";
$result = mysql_query($query2) or die(mysql_error());;
echo "Регистрация прошла успешно. На указанный вами E-mail высланы данные для входа.( Ваш логин: $log_news Ваш пароль: $paswik";
?>


А может подскажешь как мне сделать проверку на ввод E-mail?

Спустя 4 минуты, 51 секунда (5.04.2012 - 20:18) Игорь_Vasinsky написал(а):
Цитата
А может подскажешь как мне сделать проверку на ввод E-mail?
Цитата
Тоесть вот так будет правильно?

так ты половину моих замечаний проигнорировал biggrin.gif

Спустя 5 минут, 46 секунд (5.04.2012 - 20:24) 12345 написал(а):
Цитата
Цитата
/^[a-zA-Z0-9+@]+$

ни к чёрту... igor.vasinsky@mail.ru - не прокатит...


мне нужно чтоб только английские буквы и цифры вводились. Так что этот пункт опускаем))





Цитата
Цитата
if (mysql_num_rows($sql) > 0)


if (mysql_num_rows($sql))
достаточно

VALUES ('$log_news','$email')";

почитай о конкатенации

VALUES ('".$log_news."','".$email."')";


Цитата
Цитата
$query = "SELECT * FROM irbis_user WHERE `login`='{$log_news}' AND `email`='{$email}' ";



$query = "SELECT * FROM irbis_user WHERE `login`='{$log_news}' OR `email`='{$email}' ";


Цитата
Цитата
$log_news=$_POST[log_news];
$email=$_POST[email];



уф

$log_news=$_POST['log_news'];
$email=$_POST['email'];




Это сделал)


Цитата
Цитата
if(!(isset($_POST['log_news']) && isset($_POST['email']))) { echo"Данные не введены"; exit(); }



а они будут...

!empty()


у меня что-то так не получается


Цитата
Цитата
if(!preg_match("/^[a-zA-Z0-9+@]+$/",$log_news))


делаеш по ирбису, а то что д.Коля ярый противник обламывать юзеров на вводимые символы в логинах и паролях - не знаешь...эх



А как это лучше сделать?

Спустя 6 минут, 51 секунда (5.04.2012 - 20:30) Игорь_Vasinsky написал(а):
Цитата
А как это лучше сделать?


при записи
mysql_real_escape_string($log_news);

при выводе
htmlspecialchars()

Цитата
if(!(isset($_POST['log_news']) && isset($_POST['email']))) { echo"Данные не введены"; exit(); }


ой...

$log_news = !empty($_POST['log_news']) ? mysql_real_escape_string(trim($_POST['log_news'])) : null;

но тока инклуд с подключением ранее делать

потом

if(!$log_name || !$email)
exit('Вы накасячили!');


хотя я не люблю exit()`ом посетителей обламывать...

Спустя 6 минут, 5 секунд (5.04.2012 - 20:36) 12345 написал(а):
Можешь переделать это скрипт чтоб правильно всё получилось? а то я что-то не очень понимаю тебя unsure.gif

Спустя 50 секунд (5.04.2012 - 20:37) Placido написал(а):
Цитата (12345 @ 5.04.2012 - 19:24)
Цитата
Цитата
/^[a-zA-Z0-9+@]+$

ни к чёрту... igor.vasinsky@mail.ru - не прокатит...


мне нужно чтоб только английские буквы и цифры вводились. Так что этот пункт опускаем))

Как, "опускаем"? А точки в email не нужны?

Спустя 3 минуты, 25 секунд (5.04.2012 - 20:41) 12345 написал(а):
Цитата
Цитата
А может подскажешь как мне сделать проверку на ввод E-mail?


http://webpeeps.ru/article/12/

Я сделал так:

$email = '$email';  
$valid_email = filter_var($email, FILTER_VALIDATE_EMAIL);
if ($valid_email !== false)
{
echo "E-mail адрес корректный";
} else {
echo "Некорректный E-mail адрес";
}

Но что-то всё время пишет "Некорректный E-mail адрес"


Цитата
Цитата (12345 @ 5.04.2012 - 19:24)
Цитата
Цитата
/^[a-zA-Z0-9+@]+$

ни к чёрту... igor.vasinsky@mail.ru - не прокатит...



мне нужно чтоб только английские буквы и цифры вводились. Так что этот пункт опускаем))


Как, "опускаем"? А точки в email не нужны?



Я ращитываю на выше указанную функцию :P

Спустя 5 минут, 32 секунды (5.04.2012 - 20:46) Игорь_Vasinsky написал(а):
а какое мыло не проходит???

и
Цитата

Как было отмечено выше, начиная с версии 5.2.0 в PHP присутствуют специальные функции для фильтрации данных. Одна из таких функций - filter_var.

Спустя 19 секунд (5.04.2012 - 20:47) Placido написал(а):
$email = '$email';

Зачем это?

Спустя 5 минут, 9 секунд (5.04.2012 - 20:52) Игорь_Vasinsky написал(а):
чтоб хакера запутать.

Спустя 1 минута, 47 секунд (5.04.2012 - 20:53) 12345 написал(а):
Цитата
а какое мыло не проходит???

иЦитата

Как было отмечено выше, начиная с версии 5.2.0 в PHP присутствуют специальные функции для фильтрации данных. Одна из таких функций - filter_var.


Всё работает, это я неного ошибся))


Получилось вот такой код:
<?php
include('config.php');
$log_news = !empty($_POST['log_news']) ? mysql_real_escape_string(trim($_POST['log_news'])) : null;

$log_news=$_POST['log_news'];
$email=$_POST['email'];
$log_news=trim($log_news);
$email=trim($email);

if(!preg_match("/^[a-zA-Z0-9+@]+$/",$log_news))
{ echo "Ошибка ввода логина"; exit(); }


$valid_email = filter_var($email, FILTER_VALIDATE_EMAIL);
if ($valid_email !== false)
{
echo "E-mail адрес корректный";
} else {
echo "Некорректный E-mail адрес"; exit();
}

$query = "SELECT * FROM irbis_user WHERE `login`='{$log_news}' OR `email`='{$email}' ";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql))
{
echo 'Такой логин или E-mail уже существует'; exit();
}

$paswik=md5(rand(1,100000));

$query2 = "INSERT INTO irbis_user(login , email, password )
VALUES ('"
.$log_news."','".$email."','".$paswik."')";
$result = mysql_query($query2) or die(mysql_error());;
echo "Регистрация прошла успешно. На указанный вами E-mail высланы данные для входа.( Ваш логин: $log_news Ваш пароль: $paswik";
?>


Что еще тут можно исправить??

Спустя 1 час, 53 минуты, 48 секунд (5.04.2012 - 22:47) m4a1fox написал(а):
Фигасе, Игоряна прорвало!
Быстрый ответ:

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