[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как принудительно разавторизировать пользователя?
Страницы: 1, 2
Astin
Точно я неправильно написал.

Тогда наверно будет вот так
$query=mysql_query("SELECT * FROM aftorization WHERE mail='".mysql_real_escape_string($e_login)."'");

Так правильно?
Arh
Функция mysql_query давно устарела и в новой версии PHP её уже нет.
Почитайте про PDO.

$query = $PDO->prepare("SELECT * FROM `aftorization` WHERE `mail` = :mail");
$query->execute([
':mail' => $e_login
]);


Вот только защита от SQL инъекций, не решает всех проблем.
И htmlspecialchars не решает всех проблем.
Например в поле с mail можно записать любую ахинею (нужно проверять что почта это почта).
В поле с именем можно записать имя длинной незнамосколько символов, такое имя не влезет в шаблон (нужно проверять длину и ограничивать длину в базе)


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Catcher
не смешно
Astin
Цитата (Arh @ 3.03.2016 - 10:33)
Функция mysql_query давно устарела и в новой версии PHP её уже нет.
Почитайте про PDO.

$query = $PDO->prepare("SELECT * FROM `aftorization` WHERE `mail` = :mail");
$query->execute([
':mail' => $e_login
]);


Вот только защита от SQL инъекций, не решает всех проблем.
И htmlspecialchars не решает всех проблем.
Например в поле с mail можно записать любую ахинею (нужно проверять что почта это почта).
В поле с именем можно записать имя длинной незнамосколько символов, такое имя не влезет в шаблон (нужно проверять длину и ограничивать длину в базе)

У себя на сайте я сделал для имени регулярное выражение где можно ввести только буквы
и ограничил длину в базе данных.
Для почты тоже сделал регулярное выражение
Arh
Astin
Почитай еще про filter_var()

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
killer8080
Цитата (Astin @ 4.03.2016 - 01:06)
У себя на сайте я сделал для имени регулярное выражение где можно ввести только буквы

То есть мой логин вне закона? rolleyes.gif
Astin
Цитата (killer8080 @ 4.03.2016 - 12:43)
Цитата (Astin @ 4.03.2016 - 01:06)
У себя на сайте я сделал для имени регулярное выражение где можно ввести только буквы

То есть мой логин вне закона? rolleyes.gif

Да
Astin
Цитата (Arh @ 4.03.2016 - 10:08)
Astin
Почитай еще про filter_var()

Arh
Спасибо, очень интересная функция. Я для поля почты использую тоже регулярное
выражение. Я проверяю на корректность заполнения поля.

А вот немного не пойму как его в обычной форме использовать?

filter_var() нужно, я так понял использовать когда уже есть установленный email

Вот к примеру вот этот пример из мануала
<?php
$email_a = 'joe@example.com';
$email_b = 'bogus';

if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
echo "E-mail ($email_a) указан верно.";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
echo "E-mail ($email_b) указан верно.";
}
?>


Переменным уже заранее присваивается почта, и кстати, видно что данные переменных
$email_a и $email_b совершенно разные.

Эту функцию filter_var() думаю хорошо использовать когда уже заранее есть
готовые данные.

Если не правильно понял, то подправьте пожалуйста

_
Arh
Astin
Не понял про готовые данные.
Пользователь при регистрации вводит почту, ты перед тем как занести эти данные в базу, проверяешь их на соответствие, если они не подходят, говоришь пользователю что он что то не так ввёл.

if (filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)) {
//сохраняем в базу
} else {
//ошибка
}


Твоя задача проста, записать в базу то, что там должно быть или не записывать вообще.
Потому что на почту "bogus" ты даже подтверждения выслать не сможешь.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Astin
Цитата (Arh @ 5.03.2016 - 12:06)
Astin
Не понял про готовые данные.
Пользователь при регистрации вводит почту, ты перед тем как занести эти данные в базу, проверяешь их на соответствие, если они не подходят, говоришь пользователю что он что то не так ввёл.

if (filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)) {
//сохраняем в базу
} else {
//ошибка
}


Твоя задача проста, записать в базу то, что там должно быть или не записывать вообще.
Потому что на почту "bogus" ты даже подтверждения выслать не сможешь.

Arh
Про готовые данные я имел в виду пример из мануала, то есть там что почта a,
что почта b имеют правильно введенные данные.
Я понял из примера мануала так что если делать проверку с filter_var можно ввести не корректный email если использовать конструкцию вашу. То есть в примере мануала
почта a и почта b имеют правильную валидацию.

Или получается, что если заранее не задать почту в переменной как в примере мануале
то ваша конструкция проверки почты будет проверять валидность введенной почты

Arh
Astin
Цитата
что почта a,
что почта b имеют правильно введенные данные.

Не, ты не понял примера.
В примере только первое условие сработает.
Посмотри еще раз filter_var()
Там после кода есть "Результат выполнения данного примера:"

Цитата
Или получается, что если заранее не задать почту в переменной как в примере мануале
то ваша конструкция проверки почты будет проверять валидность введенной почты

Тут я опять не понял.
Что значит задать заранее?

У тебя с формы пришли данные, их надо проверить, всё.

$данные = $пришли_с_формы;
if (правильные_данные($данные)) {
//ok
}


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
Astin
Цитата
то ваша конструкция

Тут как то голосование было как обращаться к кому нибудь на форуме (ты,Вы)
Выбрали "ты", потому что все свои и потому что "Вы" с большой буквы и "вы" с маленькой это разные вещи и бывает путаница =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
killer8080
Цитата (Astin @ 5.03.2016 - 07:10)

Цитата (killer8080 @ 4.03.2016 - 12:43)
Цитата (Astin @ 4.03.2016 - 01:06)
У себя на сайте я сделал для имени регулярное выражение где можно ввести только буквы

То есть мой логин вне закона?

Да

не справедливо ph34r.gif

Цитата (Astin @ 5.03.2016 - 07:32)
if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
    echo "E-mail ($email_a) указан верно.";
}

тут правильней использовать filter_input, вместо filte_var, тогда отпадает необходимость проверки на существование переменной.
Astin
Цитата (Arh @ 5.03.2016 - 12:49)
Astin
Цитата
что почта a,
что почта b имеют правильно введенные данные.

Не, ты не понял примера.
В примере только первое условие сработает.
Посмотри еще раз filter_var()
Там после кода есть "Результат выполнения данного примера:"

Цитата
Или получается, что если заранее не задать почту в переменной как в примере мануале
то ваша конструкция проверки почты будет проверять валидность введенной почты

Тут я опять не понял.
Что значит задать заранее?

У тебя с формы пришли данные, их надо проверить, всё.

$данные = $пришли_с_формы;
if (правильные_данные($данные)) {
//ok
}

Arh
Еще раз спасибо за пояснение, видимо не внимательно прочитал про функцию
в мануале, впредь буду внимательней.

На счет "ты" "вы" понял
Astin
killer8080
Цитата
не справедливо ph34r.gif

Справедливо))) Я же не логин заношу в базу а ФИО

А не счет
Цитата
тут правильней использовать filter_input, вместо filte_var, тогда отпадает необходимость проверки на существование переменной.

Обязательно посмотрю функцию filter_input
Быстрый ответ:

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