Помогите поправить авторизацию

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
467
Реакции
16
Есть такой вот код у меня, в файле edit.php
PHP:
<?php
include_once("bd.php");

$resultat = mysql_query("SELECT * FROM users WHERE login='$_GET[login]'");
$array = mysql_fetch_array($resultat);
?>
  <html>
Содержание сайта
</html>



<?php
if(isset($login) AND isset($password))



        echo "<strong>Edite Zone</strong>";
   
else{
print <<<HERE
<table>
Вход:
<br>
<br>

      <form action="login.php" method="POST">
      <tr>
      <td>Логин:</td>
      <td><input type="text" name="login" ></td>
      </tr>
     
      <tr>
      <td>Пароль:</td>
      <td><input type="password" name="password" ></td>
      </tr>
     
     <tr>
      <td colspan="2"><input type="submit" value="OK" name="submit" ></td>
      </tr>
      </form>
      </table>
<a href="registration.php">Регистрация</a><a href="password.php">Восстановление пароля</a>
HERE;
}

?>
И при переходе на страницу edit.php, открывается вся запороленная страница, а внизу поля логин и пароль, хорошо что хоть без ввода пароля нельзя содержимое менять.

Суть вопроса: как закрыть всю страницу, пока пользователь не введет логин с паролем?
 
  • Заблокирован
  • #2
Ну наверное условием, типа условия вывода для определенных групп пользователей, а для не авторизованных скрыть содержимое до авторизации.
 
Есть такой вот код у меня, в файле edit.php
PHP:
<?php
include_once("bd.php");

$resultat = mysql_query("SELECT * FROM users WHERE login='$_GET[login]'");
$array = mysql_fetch_array($resultat);
?>
  <html>
Содержание сайта
</html>



<?php
if(isset($login) AND isset($password))



        echo "<strong>Edite Zone</strong>";
  
else{
print <<<HERE
<table>
Вход:
<br>
<br>

      <form action="login.php" method="POST">
      <tr>
      <td>Логин:</td>
      <td><input type="text" name="login" ></td>
      </tr>
    
      <tr>
      <td>Пароль:</td>
      <td><input type="password" name="password" ></td>
      </tr>
    
     <tr>
      <td colspan="2"><input type="submit" value="OK" name="submit" ></td>
      </tr>
      </form>
      </table>
<a href="registration.php">Регистрация</a><a href="password.php">Восстановление пароля</a>
HERE;
}

?>
И при переходе на страницу edit.php, открывается вся запороленная страница, а внизу поля логин и пароль, хорошо что хоть без ввода пароля нельзя содержимое менять.

Суть вопроса: как закрыть всю страницу, пока пользователь не введет логин с паролем?
Оставить на странице только форму. тоесть не авторизованным редирект на отдельную форму.
 
  • Заблокирован
  • #5
А чем вас собственно условия не устраивают? У вас DLE? Если да то там есть уже готовые условия вывода, типа:
Выводим баннер только группе пользователей 5(Гости:( [group=5]{banner_yandex}[/group] Позволяем менять оформления сайта группам пользователей 1,2,3(Администраторы, Редакторы, Журналисты:( [group=1,2,3]{changeskin}[/group] Выводим популярные новости всем группам, кроме группы гостей: [not-group=5]{topnews}[/not-group]

А если не dle то что собственно мешает написать собственные условия, тем более что данная реализация решит кучу вопросов в будущем. ))) Так что дерзайте! Направление задали. )))
 
if(isset($login) AND isset($password))

echo "<strong>Edite Zone</strong>";

else{

Этот кусок поменяй на этот

if(isset($login) AND isset($password)) {

echo "<strong>Edite Zone</strong>";

} else {

И еще вот так вот не делай

"SELECT * FROM users WHERE login='$_GET[login]'"

Сначала проверь есть ли в $_GET что-нибудь, потом присвой каждый элемент массива в переменную (я так понял что там у тебя будут login и password) потом сделать для спецсимволов спец коды (для этого есть функции isset() и htmlspecialchars())
Ну и потом уже переменную в запрос вставляй. А-то несекурно получается.

И это... Че-то я не увидел откуда переменные $login и $password берутся. Если из $_GET то действуй по плану описанному выше и для пароля.
 
if(isset($login) AND isset($password))
Должно быть if(isset($_POST['login'],$_POST['password']))
1. Проверять надо, Для просмотра ссылки Войди или Зарегистрируйся, а то сейчас переменные не определены
2. Для просмотра ссылки Войди или Зарегистрируйся:
Если были переданы несколько параметров, то isset() вернет TRUE только в том случае, если все параметры определены. Проверка происходит слева направо и заканчивается, как только будет встречена неопределенная переменная.
Нет смысла в лишнем коде;)
ПроДля просмотра ссылки Войди или Зарегистрируйся я уже молчу
 
Последнее редактирование:
Согласен. Только эту проверку нужно вверх вынести, чтобы не тягать голые значения из массива $_GET, а присвоить их в переменные и обработать функциями спец символов. И потом работать уже с переменными $login и $password.
 
  • Нравится
Реакции: ZiX
Назад
Сверху