Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Админка, проблема входа 
:(
    Опции темы
PARROT
Дата 19.5.2005, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Админка не впускает в панель управления.
Произошло это после добавления куков. Никак не доходит почему.
Код

<?
//куки
if ($auth=="OK") {
    echo "HACKER ???";
    unset($auth);
    exit;
}
$out = mysql_query("SELECT names FROM pass WHERE login='".$HTTP_COOKIE_VARS['login_c']."' and pasw='".md5($HTTP_COOKIE_VARS['password_c'])."'") or die(mysql_error());
if (@mysql_num_rows($out) == 1) {
    $auth="OK";
    $resl_arr=mysql_fetch_row($out);
    $imya=$resl_arr[0];
}
//выход
if ($button=="выйти") {
    setcookie("login_c", $login, time()-1);
    setcookie("password_c", $password, time()-1);
    header("Location: collection_admin.php");
    exit;
}
//вход
if($button=="войти" and $auth!="OK")
{
$login_result = mysql_query("SELECT pasw FROM pass WHERE login='$login'") or die(mysql_error());
if (!mysql_error() && @mysql_num_rows($login_result)==1) 
{
$prl=mysql_fetch_row($login_result);
if ($prl[0]==md5($password)) 
{
setcookie("login_c", $login);
setcookie("password_c", $password);
$auth="OK";
header("Location: collection_admin.php?mode=edit");
exit;
}
}
}
?>
<form method=post>
<table align=right bgcolor=#000000>
<tr><td>login:</td>
<td><input type=text name=login></td>
</tr>
<tr>
<td>password:</td>
<td><input type=password name=password></td>
</tr>
<tr>
<td colspan=2 align=right><input type=submit name=button value=войти>
<input type=submit name=button value=выход></td></tr>
</table>
</form>
?>



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 19.5.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



HTTP_COOKIE_VARS - забудь про это, юзай $_COOKIE
$button?
$login?
$password?
может
$_POST['button']
$_POST['login']
$_POST['password']?
Код
<form method=post>

Ну ведь можно хотя бы так:
Код
<form action="?" method=post>

никак не доходит? в самом начале скрипта напиши
Код

ini_set('display_errors', true);
error_reporting(E_ALL);


Это сообщение отредактировал(а) Opr - 19.5.2005, 12:51
PM MAIL Skype   Вверх
PARROT
Дата 19.5.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



А проблема то, в неправильно составленном алгоритме действий и последовательности!

Глобалка отдыхает!

Хотя все равно пока работает не до конца правильно... smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 19.5.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PARROT
а что сложного в алгритме:
( если есть куки)
{
проверяем подходят ли они.
// если да - выводим то что нужно.
}
(если они есть и не подходят || их нет)
{
// выводи форму.
}
далее для других страницу пишем функцию проверки.
проверка()
{
(если куки есть)
{
всё ок
}
else
{
Header("location: login.php");
}
}

PM MAIL Skype   Вверх
PARROT
Дата 19.5.2005, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Да вот, немного разобралась, но нужна проверка!
1) Меня не устраивает, что меню при нажатие на ссылку админки исчезает, хочу чтобы оно всегда было.
2) Не понятно с куками, ставятся они или нет, но удалять не удаляются. Как проверить?
Код

<?
if ($off=="выход") {
    setcookie("login_c", $login, time()-1);
    setcookie("password_c", $password, time()-1);
    unset($auth);//Никак куку не удаляет! Хоть умри.  :stena 
    header("Location: collection_admin.php");
    exit;
}
//нажата кнопа
if($button=="войти" and $auth!="OK")
{
$login_result = mysql_query("SELECT pasw FROM pass WHERE login='$login'") or die(mysql_error());
if (!mysql_error() && @mysql_num_rows($login_result)==1) 
{
$prl=mysql_fetch_row($login_result);
if ($prl[0]==md5($password)) 
{
setcookie("login_c", $login);
setcookie("password_c", $password);
$auth="OK";
}
header("Location: collection_admin.php?auth=OK");
exit;
}
}
if(!isset($HTTP_COOKIE_VARS['login_c']))
{
if ($auth!=="OK")
 {
?>
<form method=post>
<table align=right bgcolor=#000000>
<tr><td>login:</td>
<td><input type=text name=login></td>
</tr>
<tr>
<td>password:</td>
<td><input type=password name=password></td>
</tr>
<tr>
<td align=right colspan=2><input type=submit name=button value=войти></td>
</tr>
</table>
</form>
<?
}
}
if ($auth=="OK")
 {
?>
 <form method=post>
 <input type=submit name=off value=выход>
 </form>
 <?
 echo "<h3>Товары:</h3>
<a href=collection_admin.php?mode=add>Добавить в коллекцию</a><br>
<a href=collection_admin?mode=del>Удалить из коллекции </a><br>
<a href=collection_admin?mode=edit>Редактировать коллецию</a><br>";
}
//удаление 
 if($delit)
{
mysql_query("delete from collection where id_col='$delit'");
                   header('location: collection_admin.php?mode=del');
exit;
}

switch ($mode) {
case 'add': 
{
.....    
}
break;
}
}




?>
</body>
</html>
<?php
ob_end_flush();
?>

Ну вообщем пока так.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 19.5.2005, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Код

if (!mysql_error()

ошибки у тебя 100% не будет, там ведь стоит or DIE - скрипт к тому времени уже умрет.
ах, да, и с чего ты взяла
Цитата
Глобалка отдыхает!

и как это понимать?
Добавлено @ 16:32
Не проверял, но работать должно:
Код
<?php
  // Функция показа формы
    function showForm()
    {
return <<<EOF
    <form method=post>
<table align=right bgcolor=#000000>
<tr><td>login:</td>
<td><input type=text name=login></td>
</tr>
<tr>
<td>password:</td>
<td><input type=password name=password></td>
</tr>
<tr>
<td colspan=2 align=right><input type=submit name=button value=âîéòè>
<input type=submit name=button value=âûõîä></td></tr>
</table>
</form>
EOF;
    }
    function checkAuth()
    {
        $query = mysql_query("SELECT count(*) AS count
                              FROM pass
                              WHERE login = '".mysql_escape_string($_COOKIE['login_c'])."'
                              AND pass = '".mysql_escape_string($_COOKIE['password_c'])."'") or die(mysql_error());
        $result = mysql_fetch_assoc($query);
        if($result['count'] == 1)
        {
             return true;
        }
        else
        {
             return false;
        }
    }
    if(isset($_POST['button']))
    {
        $query = mysql_query("SELECT count(*) AS count
                              FROM pass
                              WHERE login = '".mysql_escape_string($_POST['login'])."'
                              AND pass = '".md5($_POST['password'])."'") or die(mysql_error());
        $result = mysql_fetch_assoc($query);
        if($result)
        {
           setcookie("login_c", $result['login']);
           setcookie("password_c", md5($result['pass']);
           header("location: ".$_SERVER['PHP_SELF']);
           die();
        }
    }
   // Проверяем, авторизированы ли мы?
    if(!checkAuth())
    {
       // нет!? показываем форму
        showForm();
    }
    else
    {
print <<<EOF
бла блаб бла
EOF;


    }

?>


Это сообщение отредактировал(а) Opr - 19.5.2005, 16:33
PM MAIL Skype   Вверх
PARROT
Дата 19.5.2005, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Глобалка отдыхает, потому как у меня у хостера on!
Понимаю, надо начинать писать по человечески, переучиваться всегда тяжело.
Переписывала сегодня свой вход раз 5 и не один не оказался удачным. Прям растроилась. Устала.
Может начнем писать вместе? Заново? С куками. У меня теперь на них аллергия или дикий страх... smile



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Opik
Дата 19.5.2005, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PARROT
давай...))) а причем что стоит у хостера? когда ты пишешь $_POST['var'] оно и будет браться из POST, из GET оно не вылезит НИКАК, при всем желании.
PM MAIL Skype   Вверх
PARROT
Дата 4.6.2005, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Ну все, больше не могу, куки проваливаются сквозь землю, после 2 нажатия кнопки обновить регистрационную информацию юзера.
В чем может быть причина?
smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Borland_Delphi_6
Дата 4.6.2005, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

Репутация: 2
Всего: 20



Цитата
setcookie("password_c", $password, time()-1);


Хм, по-моему это не правильно... Если нужно, чтобы куки сдохли после закрытия браузера, следует указать 0:
setcookie("password_c", $password, 0);


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
PARROT
Дата 4.6.2005, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Все равно теряются куки. smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Irokez
Дата 4.6.2005, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(Borland_Delphi_6 @ 4.6.2005, 17:43)
Хм, по-моему это не правильно... Если нужно, чтобы куки сдохли после закрытия браузера, следует указать 0:
setcookie("password_c", $password, 0);

правильно
PM   Вверх
PARROT
Дата 4.6.2005, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Цитата(Irokez @ 4.6.2005, 19:24)
Цитата(Borland_Delphi_6 @ 4.6.2005, 17:43)

setcookie("password_c", $password, 0);


Так как правильно? Как у меня time ()-1 или все таки 0?



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Irokez
Дата 4.6.2005, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(PARROT @ 4.6.2005, 23:12)
Так как правильно? Как у меня time ()-1 или все таки 0?

а нет сорри, неправильно прочитал .. 0 - если сразу после закрытия, time () - 1 - если сразу .. кажется так ...
PM   Вверх
PARROT
Дата 4.6.2005, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Получается, что оба варианта валидны?
Можно и так, и так?
//////////////////////////////////////////////////////
Проблема остается:
Данные в форму выводятся из кук
$do является путеводителем
В данном случае она не срабатывает, потому как я незнаю что в ней передавать!!!, то ли кнопку, то ли какую-то переменную, которая должна придти из адресной строки, как в других вариантах админки.
Код

//обновление регистрационной информации пользователя
if($do=="account") {
if(isset($_POST['upp'])) {
    mysql_query ("UPDATE reg SET name= '$im', phone= '$tel', city='$gorod', mail='$milo', site='$ste', parol=md5('$passw') WHERE   id_r = ".$id_a) or die(mysql_error());        
    }
}
//сама форма
switch ($do)
{
case 'account' :{
?>
<form method=POST>
<table><tr><td>имя</td><td><input type=text name=im maxlength=60 size=48 value='<?=$imya;?>' class=i></td></tr>
<tr><td>телефон</td><td><input type=text  name=tel maxlength=60 size=48 value='<?=$fone;?>' class=i></td></tr>
<tr><td>город</td><td><input type=text  name=gorod maxlength=60 size=48 value='<?=$city;?>' class=i></td></tr>
<tr><td>e-mail:</td><td><input type=text  name=milo maxlength=60 size=48 value='<?=$meil;?>' class=i></td></tr>
<tr><td>site:</td><td><input type=text  name=ste maxlength=60 size=48 value='<?=$st;?>' class=i></td></tr>
<tr><td>пароль</td><td><input type=text  maxlength=60 size=48 name=passw class=i></td></tr>
<tr><td colspan=2 align=center><input type=submit name=upp value="изменить" class=inp>
</table>
</form>
<?
}
break;
}
}


smile smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.