Помогите, мне нужно убрать авторизацию через аккаунт в базе данных сервера, потому что этот аккаунт просто не находят) Можно ли сделать общий пароль для всех? Проще говоря сделать чтобы заходить могли все, по одному и тому же логину с паролем, которые ни от чего не зависят Код (Text): <?php session_start(); ?> <?php require_once("includes/connection.php"); ?> <?php if(isset($_SESSION["session_username"])){ // вывод "Session is set"; // в целях проверки header("Location: login_check.php"); } if(isset($_POST["login"])){ if(!empty($_POST['username']) && !empty($_POST['password'])) { $username=htmlspecialchars($_POST['username']); $password=htmlspecialchars($_POST['password']); $hpassword = md5($password); $query =mysqli_query($con,"SELECT * FROM accounts WHERE NickName='".$username."' AND Password='".$hpassword."'"); $numrows=mysqli_num_rows($query); if($numrows!=0) { while($row=mysqli_fetch_assoc($query)) { $dbusername=$row['NickName']; $dbpassword=$row['Password']; $admin=$row['Admin']; } if($username == $dbusername && $hpassword == $dbpassword) { if($admin > 0) { $_SESSION['session_username']=$username; header("location: login_check.php"); } else { $message = "Вы не являетесь администратором! Доступ закрыт!"; } } } else { $message = "Неправильное имя пользователя или пароль!"; } } else { $message = "Все поля обязательны к заполнению!"; } } ?> <html> <head> <meta charset="utf-8"> <title>UnlimitedLog</title> <link href="assets/styles.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.form.js"></script> </head> <body><div class="menu"><table width="100%"><tr><td valign="top" align="left"><script> </script> <a></a><ul><a></a> <a href="/"><li>Главная</li></a> <a href="https://rp-virginia.ru"><li>Сайт</li></a> <a href="https://forum.rp-virginia.ru"><li>Форум</li></a></ul></td> <td valign="top" align="right"></td> <td valign="top" align="right"> <!-- <a href="/register.php" rel="no"><li>Регистрация</li></a> --> <a href="/login.php"><li>Войти</li></a></td></tr></tbody></table></div> <div class="right"><div id="content"> <table width="100%" border="0"> <tbody> <tr> <td class="top"><h1>Войти</h1></td> </tr> <tr> <td class="middel"><div class="box"> <div id="login" class="boxtitle">Войти</div> <form name="loginform" id="loginform" action="" method="POST"> <table width='100%'> <tr><td>Ник</td><td><input type='text' name="username"></td></tr> <tr><td>Пароль</td><td><input type='password' name="password"></td></tr> </table> <input type=submit name='login' value='Войти'><p><h2><?echo $message; ?></h2> </form></div></td> </tr> <html> <? include("header/footer.php"); ?> </html> </table> </div></div></body> </html>
Вот в этом куске убрать проверку Код (Text): <?php session_start(); ?> <?php require_once("includes/connection.php"); ?> <?php if(isset($_SESSION["session_username"])){ // вывод "Session is set"; // в целях проверки header("Location: login_check.php"); } оставить Код (Text): <?php session_start(); ?> <?php require_once("includes/connection.php"); ?> <?php // вывод "Session is set"; // в целях проверки header("Location: login_check.php");
Всплыла еще одна проблема, авторизироватся оно авторизировалось. Но содержимое не показывает которое должно быть после авторизации
и как тогда подредактировать этот код чтобы оно авторизировалось и имело право, а не просто кидало на страницу авторизации? Пароль и логин из бд сервера оно так же получить не может поэтому нужен логин и пароль 1 для всех
Код (Text): <?php require_once("includes/connection.php"); ?> <?php if(isset($_SESSION["session_username"])){ // вывод "Session is set"; // в целях проверки header("Location: login_check.php"); } if(isset($_POST["login"])){ if(!empty($_POST['username']) && !empty($_POST['password'])) { $username=htmlspecialchars($_POST['username']); $password=htmlspecialchars($_POST['password']); $_SESSION['session_username']=$username;//вот это надо } } ?> <html> Имя пользователя наверное проверяется в сессии. Поэтому его определяем. Скорей всего после проверки пароля в переменную session_username попадало значение из формы.
Попробуй так. Я переставил порядок проверок.Если оставить только этот код: Код (Text): <?php require_once("includes/connection.php"); ?> <?php if(isset($_POST["login"])){ if(!empty($_POST['username']) && !empty($_POST['password'])) { $username=htmlspecialchars($_POST['username']); $password=htmlspecialchars($_POST['password']); $_SESSION['session_username']=$username;//вот это надо } } if(isset($_SESSION["session_username"])){ // вывод "Session is set"; // в целях проверки header("Location: login_check.php"); } ?> <html> То пароль проверяется только на существование. Дальше в сессию добавляется имя пользователя session_username. Сервер перенаправляет на страницу login_check.php. Там есть в коде проверки?
Последний раз попробую объяснить в общем виде. Авторизация = проверка права на что-то, например на просмотр страницы. if (права нет) exit; Аутентификация = проверка логина и пароля с последующим сохранением где-то (в сессии) информации о пользователе. $_SESSION['user'] = 'Вася' Теперь подумай есть ли у тебя аутентификация и авторизация. И ещё, так как ты уже пытаешься применить какие-то советы, у тебя код отличается от того что ты показывал. И мы хз с чем ты работаешь. Так что гадаем на кофейной гуще. P.S. За header("Location:...") ВСЕГДА должен стоять exit. Потому что команда header не останавливает выполнение скрипта. --- Добавлено --- P.P.S. Перед header() не должно выводиться н и ч е г о. Ни echo, ни "?> ххх <?php", ни сообщения об ошибке. Бывает что некий пробел или перевод строки или невидимый символ BOM стоят раньше header и в итоге он ругается "header alerady sent" но нам об этом никто не сказал. --- Добавлено --- И в итоге нуб плачет "ничего не работает". Оно работает, просто оно в точности выполняет твои команды, но ты не понимаешь какие команды дал. Потому что скопировал их не вникая.
Ну, раньше выводили лайт-страничку или текстовик с текстом «Перейдите по такому-то адресу» (Ваш клиент – отстой!) --- Добавлено --- Хотя можно и в exit передать этот текст. Только я не помню, будет ли он менять Content-Type на простой текстовый.
Встречая в ответе заголовок редиректа, браузер не выводит ничего, он сразу отправляет новый запрос по указанному адресу. Так что вся работа после header location выполняется впустую, скрипт надо просто остановить и всё.