Ну вот и сам скрипт
<?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(); этого хватит
может 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 написал(а):
Тоесть вот так будет правильно?
А может подскажешь как мне сделать проверку на ввод E-mail?
<?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? |
Цитата |
Тоесть вот так будет правильно? |
так ты половину моих замечаний проигнорировал
Спустя 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 написал(а):
Можешь переделать это скрипт чтоб правильно всё получилось? а то я что-то не очень понимаю тебя
Спустя 50 секунд (5.04.2012 - 20:37) Placido написал(а):
Цитата (12345 @ 5.04.2012 - 19:24) | ||
мне нужно чтоб только английские буквы и цифры вводились. Так что этот пункт опускаем)) |
Как, "опускаем"? А точки в 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 написал(а):
Фигасе, Игоряна прорвало!