Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблема с входом в админ. центр магазина


Автор: bylex 22.11.2008, 22:22
Помогите пожалуйста разобраться. Мучаюсь уже 3 день, ни как не пойму проблему почему не могу войти в админ. центр магазина, ввожу пароль и логин указанный в конфигурационном файле,но ничего не получатся.Скажите где тут ошибка?Заранее спасибо.

Автор: destrd 22.11.2008, 22:23
Во-первых, потрите куки,
Во-вотрых, на крайний случай мените пароль через базу.

Автор: bylex 22.11.2008, 22:34
Цитата(destrd @  22.11.2008,  22:23 Найти цитируемый пост)
Во-вотрых, на крайний случай мените пароль через базу

А как через базу менять вход в админцентр то? smile 
Там есть файл конфигурации в котором можно изменять логин и пароль, но ничего не получается не входит все равно.Где то в самом скрпте ошибка, не могу разобраться.

Автор: bylex 22.11.2008, 23:17
//вот здесь что то не так 
Код

<? //администрирование базы данных: добавление/редактирование товаров, категорий 
require("../config.php"); 
require("checklogin.php"); 
require("../funcs.php"); 
if($nvshoplogin==$login_admin AND $nvshoppassword==$password_admin) 
{ 

SetCookie("nvshoplogined","true",time()+3600); 
SetCookie("nvshoplogin","$login_admin",time()+3600); 
SetCookie("nvshoppassword","$password_admin",time()+3600); 
include ("connect.inc"); 
mysql_connect($DB_HOST,$DB_USER,$DB_PASS) or die (mysql_error()); 
mysql_select_db($DB_NAME) or die (mysql_error()); 
} 
else 
{ 
Header("Location: index.php"); 
} 
//до сюда 
?> 


далее фрагмент кода config.php 

Код

<?php 
# Логин для администратора 
$login_admin="admin"; 

# Пароль администратора 
$password_admin="123456"; 

......и т.д. 


Далее проверка введенного пароля и логина checklogin.php 

Код

<? 
session_start(); 
if(!isset($nvshoplogined) ) 
{ 
echo ' 
<table width="200" border="1" cellspacing="5" cellpadding="5" align="center" bgcolor="#C0C0C0"> 
<tr> <form action="index.php" method="post"> 
<th>Имя:</th> 
<td><input type="text" name="nvshoplogin"></td> 
</tr> 
<tr> 
<th>Пароль:</th> 
<td><input type="password" name="nvshoppassword"></td> 
</tr> 
<tr> 
<td colspan="2" align="center"> 
<input type="hidden" name="nvshoplogined" value="true"> 
<input type="submit" value=" ВОЙТИ "> 
</form></td> 
</tr> 
</table>'; 
exit; 
} 

?> 



Далее скрипт соединения с базой connect.inc 

Код

<? 
$DB_HOST = ""; // вебсервер базы данных 
$DB_USER = ""; // имя пользователя базы 
$DB_PASS = ""; // пароль 
$DB_NAME = ""; // имя базы 
mysql_connect($DB_HOST,$DB_USER,$DB_PASS) or die (mysql_error()); 
mysql_select_db($DB_NAME) or die (mysql_error()); 

?> 



далее листинг funcs.php 
Код

<? 
if (!function_exists("CountGoods")){ 
function CountGoods($CatID) 
{ 
$q = mysql_query("SELECT * FROM GoodsList WHERE CatID=$CatID") or die (mysql_error()); 
$k=$k+mysql_num_rows($q); 
return($k); 
} 
function Html2Text($html) 

{ 

$search=array ("'<script[^>]*?>.*?</script>'si", // Strip out javascript 

"'<[\/\!]*?[^<>]*?>'si", // Strip out html tags 

"'([\r\n])[\s]+'", // Strip out white space 

"'&(quot|#34);'i", // Replace html entities 

"'&(amp|#3;'i", 

"'&(lt|#60);'i", 

"'&(gt|#62);'i", 

"'&(nbsp|#160);'i", 

"'&(iexcl|#161);'i", 

"'&(cent|#162);'i", 

"'&(pound|#163);'i", 

"'&(copy|#169);'i", 

"'&#(\d+);'e"); // evaluate as php 



$replace=array ("", 

"", 

"\\1", 

"\"", 

"&", 

"<", 

">", 

" ", 

chr(161), 

chr(162), 

chr(163), 

chr(169), 

"chr(\\1)"); 



return preg_replace ($search, $replace, $html); 

} 

} 
?> 


Подскажите где ошибка?

Автор: destrd 22.11.2008, 23:23
Думаете мне хочется тут разбираться?smile В субботу вечером?!
Где ошибка? Проверьте пароль? Как там хэш отрабатывает и вся фигня, сделайте селект, руками, и посмотрите результат. Где-то при передаче параметров ошибка, если оценить беглым взглядом.

Автор: bylex 22.11.2008, 23:41
Ну вопрос не только к вам smile Я пока в этом не силен, тока начинаю, поэтому в "Как там хэш отрабатывает и вся фигня, сделайте селект, руками, и посмотрите результат." не силен.

Автор: theworldcreator 23.11.2008, 02:04
Cкрипт использует register_globals(набери в google и почитай что это). Весьма вероятно эта директива не включена, и вообще ее использования - признак плохого тона, а при незнание вопроса 90% дырка в безопасности.

Автор: MoLeX 24.11.2008, 06:30
Цитата(destrd @  22.11.2008,  23:23 Найти цитируемый пост)
Думаете мне хочется тут разбираться?smile В субботу вечером?!


destrd, если не хочется так и не пишите!!!

Автор: bylex 26.11.2008, 20:13
theworldcreator, Спасибо почитаю про это.

Автор: bylex 26.11.2008, 20:35
theworldcreator, КрасотаsmileСпасибо вам огромное, вы первый ответили правильно, вопрос задавал на нескольких форумахsmile Все так и получилось, register_globals не включено былоsmileСкажите пожалуйста а можно переделать скрипт этот чтобы он не использовал register_globals, трудно это будет сделать?Что для этого нужно?Где можно почитать чтобы переделать?Огромное вам спасибо, я мучался так долго переделывал сам скрипт редактировал, так и ни че не смог сделать...а оказывается всего лишь надо было написать две буквы ON smile 

Автор: lelik133 27.11.2008, 09:00
ну включение register_globlas само по себе действительно дырка в безопасности.
что бы переделать надо переписать все куски в коде которые обращаются к POST/GET переменным

Автор: bylex 27.11.2008, 16:38
А пример можно на куске кода моего?

Автор: bars80080 27.11.2008, 17:21
Цитата(bylex @  27.11.2008,  15:38 Найти цитируемый пост)
А пример можно на куске кода моего? 

ну вот смотри:

в форме у тебя есть такое поле: ><input type="text" name="nvshoplogin">
в скрипте используется переменная $nvshoplogin

чтобы оно коректно без register_globals работало, нужно в начале скрипта, в котором используется это переменная присвоить её:

Код

if(isset($_POST['nvshoplogin'])) $nvshoplogin = $_POST['nvshoplogin']; else $nvshoplogin = '';

и так для каждой переменной, приход которой ты ожидаешь

в этом самом месте, лучше всего устроить проверку на корректность принимаемых данных. допустим, что введённая строка содержит только буквы и цифры и больше ничего

Автор: bylex 28.11.2008, 02:14
Спасибо за ответ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)