- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте. Не могу написать правильный код авторизации из двух частей, первая это функция с проверкой существования пользователя, вторая это блок с авторизацией в сессию:
function isUserExist() {
require_once 'dbconfig.php';
$login = $_POST['varr'];
$pass = $_POST['var'];
$file = "SELECT * FROM users WHERE login = \"$login\" and password = \"$pass\"";
$save = mysqli_query ($connection, $file);
$dese = mysqli_fetch_array($save);
mysqli_close($connection);
if (!empty($dese)) return true;
}
if (isUserExist($_POST['varr'], $_POST['var'])) {
if(isset($dese['login'], $dese['password'])) {
$_SESSION['name']=$dese['login'];
$_SESSION['pass']=$dese['password'];
}
Сразу напишу, что так работает:
function isUserExist() {
require_once 'dbconfig.php';
$login = $_POST['varr'];
$pass = $_POST['var'];
$filee = "SELECT * FROM users WHERE login = \"$login\" and password = \"$pass\"";
$save = mysqli_query ($connection, $filee);
$dese = mysqli_fetch_array($save);
if(isset($dese['login'], $dese['password'])) {
$_SESSION['name']=$dese['login'];
$_SESSION['pass']=$dese['password'];
}
}
if (isset($_POST['varr'], $_POST['var'])) {
isUserExist()
}
Но так не надо) Помогите пожалуйста
https://ru.wikipedia.org/wiki/%D0%92%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_SQL-%D0%BA%D0%BE%D0%B4%D0%B0
Bukwik, хранить пароли в открытом виде плохо. Точно также, как писать сегмент авторизации не имея в мозгах никаких знаний об инъекциях. Либо юзайте PDO, либо экранируйте данные на входе.
Вы везде по сайту в query добавляете не экранируемые данные? 😮
Живой проект? С такой скоростью скоро увидим вас в ветке - сайт заражен, что делать ))
Используйте хотя бы mysql_real_escape_string до передачи параметров в запрос.
<?php
В коде
В коде, что юзер авторизован проверка наличия хеша в сессии и его соответствие ид пользователя.
Как то так, если я правильно понял идею автора
$password = mysql_real_escape_string($pass, $link_to_db_connection);
И никто не зайдет потому что внутри функции нет переменной $link_to_db_connection
ТС, во-первых не авторизация, но аутентификация; во-вторых найдите и скачайте готовый класс, который и форму нарисует и проверит и покажет и сохранит и все такое. Сами вы ничего не напишите толком.
Кстати сессия не нужна для аутентификации, нужны куки. Куки оборудованы сроком хранения, в отличии от сессии, которую придется контролировать по сроку дополнительным кодом.
---------- Добавлено 11.08.2015 в 04:47 ----------
Про escape пароля. Пароль не требуется проверять на спец-символы, поскольку хеш их сам убьет. Но требуется когда мы читаем уже зашифрованный пароль из куков например, поскольку куки у юзера и он может вписать туда что угодно.
Оптимизайка, Mad_Man, maxgal, kostyanet Спасибо вам большое. Я нахожусь на стадии обучения, пока слабое подобие, не живой проект)
kostyanet - с куками я вас понял, но сейчас мне необходимо сделать так)
maxgal - спасибо вам за код, но могли бы вы подправить мой код, чтобы сработал именно исходя из того, что там есть? Ещё скажите пожалуйста, для чего используется символ конкатенации здесь - '".$login."' .
Решил написать ответ, возможно кому-то пригодится:
$login = $_POST['varr'];
$pass = $_POST['var'];
function isUserExist($login, $pass) {
require_once 'dbconfig.php';
$login = mysqli_real_escape_string($connection,$login);
$pass = mysqli_real_escape_string($connection,$pass);
$filee ="SELECT * FROM users WHERE login = \"$login\" and password=\"$pass\"";
$save=mysqli_query($connection,$filee);
$dese = mysqli_fetch_array($save);
var_dump($dese);
mysqli_close($connection);
if(empty($dese)) {
return false;
} else{ return true;}
}
if (isUserExist($login, $pass)) {
$_SESSION['name'] = $login;
$_SESSION['pass'] = $pass;
}else{
echo "NET";
}
if (isset($_SESSION['name'], $_SESSION['pass'])) {
echo "<a href='logout.php'> Выход</a>";
echo " Вы успешно вошли ".$_SESSION['name'];
}else {
echo
"<a href=login.php> Вход</a>
<form method='POST' style='line-height:36px;'>
Login
<input type='text' name='varr'/>
<br>
Password
<input type='password' name='var'/><br>
<input type='submit' name=oki value=Woyti>
</form>";
}
Пропустил проверку на пустые поля в функции, после require_once 'dbconfig.php'; добавить if($login =="" and $pass=="") return false;
Пропустил проверку на пустые поля в функции, после require_once 'dbconfig.php'; добавить if($login =="" and $pass=="") return false;
А теперь настало время узнать о существовании объектов, глянуть где-нибудь как _действительно_ нужно писать на пыхе, делать проверки и лепить HTML. Под занавес можно выстрелить себе в ногу столько раз, сколько вызвано echo для вывода HTML.