Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

PHP непонятки. Конфликт форм

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> PHP непонятки. Конфликт форм
Имя
Сообщение << Старые топики   Новые топики >>
PHP непонятки. Конфликт форм - 2008-11-13 23:30:47.720000   
Shandow

Сообщений: 48
Оценки: 0
Присоединился: 2008-01-11 17:01:17.716666
Вообщем тут такая ситуевина
Конфликт форм так называемый….
Скажу сразу че то писал сам че то стянул….

Проблема в следующем:
Форма добавления юзера, которая видна в админке после логина воспринимается файлом index.php как форма логина…. Вернее при клике на кнопку "Добавить" он пытается провести логин еще раз по первым 2м полям формы добавления юзера…
3й день сижу вкурить не могу….
Господа хакеры, помогите разобраться, а?

Есть индексная страничка а "админке"
index.php
&lt;?php // Указываем что данный файл главный, // определяя константу IN_ADMIN, так как // нигде больше эта константа не определяется, // но везде проверяется её существование, работать // с панелью администрирования можно только // через файл index.php define("IN_ADMIN", TRUE); // Подключаем все настройки include "../include/functions.inc.php"; include "../include/auth.php"; $name = $_SESSION['login']; echo "&lt;table border=\"0\" width=\"100%\"&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;Вход в панель успешно осуществлен пользователем &lt;b&gt;$name&lt;/b&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td align=right&gt;&lt;a href=\"exit.php\"&gt;&lt;b&gt;Выход&lt;/b&gt;&lt;/a&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt; &nbsp;&nbsp;&nbsp; &lt;/table&gt; &nbsp;&nbsp;&nbsp; &lt;hr&gt;"; include "adduser.php"; ?&gt;
Файл авторизации
auth.php
&lt;?php // Данный файл всегда будит "включаться" в другие файлы // директивой include поэтому следует запретить его самостоятельный вызов // из строки запроса путём указания его имени // Если не определена константа IN_ADMIN – завершаем работу скрипта if(!defined("IN_ADMIN")) die; // Начинаем сессию session_start(); $_SESSION['auth'] = False; // Проверям были ли посланы данные if(!empty($_POST['enter'])) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Достаем Логины-Пароли &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $access = array(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $access = getLogin($_POST['login']); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Разносим значения по переменным &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $login = trim($access[0]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $passw = trim($access[1]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $accss = trim($access[2]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Show_Auth_Form(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; die;} $_SESSION['login'] = $login; if ($passw == md5(md5($_POST['passw'])."fps") &amp;&amp; $accss != 0){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $_SESSION['auth'] = True; }&nbsp; // Если ввода не было, или они не верны // просим их ввести if($_SESSION['auth'] == False){ Show_Auth_Form(); echo "&lt;br&gt;"; echo "&lt;center&gt;&lt;font color=\"red\"&gt;Неверное имя пользователя или пароль...&lt;/font&gt;&lt;/center&gt;"; die; } ?&gt;
файл добавления пользователя в базу
adduser.php
&lt;?php if(!defined("IN_ADMIN")) die; session_start(); if($_SESSION['auth'] == False){ Show_Auth_Form(); echo "&lt;br&gt;"; echo "&lt;center&gt;&lt;font color=\"red\"&gt;Вы не авторизированы...&lt;/font&gt;&lt;/center&gt;"; die; }&nbsp; &nbsp; Show_AddUser(); &nbsp; $adm = isset($_POST["admin"]); &nbsp; if (isset($_POST['flag_adduser'])){ &nbsp; AddUser($_POST['user'], $_POST['pass'], $_POST['mail'], $adm); &nbsp; } else die; ?&gt;
Здесь привожу код функции AddUser
function AddUser($login_, $passw, $email, $adm){ &nbsp;//Получаем новую ID-шку &nbsp;$id_ = CountLogin() + 1; &nbsp;$passwd = md5(md5($passw)."fps"); &nbsp;$mail = $email; &nbsp; &nbsp;if ($adm == true){ &nbsp;$admin = 1; &nbsp;} else $admin = 0; &nbsp;//Конектимся к базе &nbsp;$connect = mysql_connect($GLOBALS["MYSQL_HOST"], $GLOBALS["MYSQL_USER"], $GLOBALS["MYSQL_PASS"]) or die ("Ошибка соединения с базой: " . mysql_error()); &nbsp;//Подключаемся к указаой БД &nbsp;mysql_select_db($GLOBALS["MYSQL_NAME"]) or die ("Ошибка выбора базы данных: " . mysql_error()); &nbsp; &nbsp;//Добавляем пользователя &nbsp;$sql = "INSERT INTO users(id, login, password, email, access) VALUES($id_, $login_, $passwd, $mail, $admin)"; &nbsp;mysql_query("$sql") or die ("Ошибка ошибка добавления: " . mysql_error()); &nbsp; &nbsp;return "Пользователь добавлен!"; }
Код формы авторизации
function Show_Auth_Form() { &nbsp;&nbsp; ?&gt; &nbsp;&nbsp;&nbsp; &lt;center&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;h3&gt;Вход в административную часть&lt;/h3&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;form action=index.php method=post&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;table&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;Логин&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input class=input name=login value=""&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;Пароль&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type=password class=input name=passw value=""&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan="2" align="center"&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type=hidden name=enter value=yes&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input class=button type=submit value="Вход"&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt; &nbsp;&nbsp;&nbsp; &lt;/center&gt; &nbsp;&nbsp; &lt;?php }
И код формы добавления юзера
function Show_AddUser() { &nbsp;&nbsp; ?&gt; &lt;form method=post&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;table&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan="2" align="center"&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;strong&gt;Добавление пользователя в систему&lt;/strong&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;Логин&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input class=input name=user value=""&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;Пароль&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type=password class=input name=pass value=""&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;E-mail&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input class=input name=mail value=""&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;Доступ в административную часть&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="checkbox" class=input name=admin value=""&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan="2" align="center"&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type=hidden name=flag_adduser value=yes&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input class=button type=submit value="Добавить"&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt; &nbsp;&nbsp; &lt;?php }
Post #: 1
RE: PHP непонятки. Конфликт форм - 2008-11-15 19:59:00.020000   
dOver

Сообщений: 140
Оценки: 0
Присоединился: 2007-03-31 04:41:56.070000
Не понятно, что делает функция getLogin(). Попробуй перенести session_start() из auth.php наверх index.php, иначе ты используешь сессии раньше, чем они открыты. Скорее всего, не устанавливаеться $_SESSION['auth'] в True.
Post #: 2
RE: PHP непонятки. Конфликт форм - 2008-11-15 20:42:40.293333   
Shandow

Сообщений: 48
Оценки: 0
Присоединился: 2008-01-11 17:01:17.716666
Он устанавливается….
логин норм проходит… просто непонятно почему он повторно форму добавления юзера за логин принимает

функция getLogin() возвращает массив из логина и хеша+уровень доступа которые вынимаюются из мускуля
function getLogin($login) { //должна возвращать массив с логином и хешем пароля //Конектимся к базе $connect = mysql_connect($GLOBALS["MYSQL_HOST"], $GLOBALS["MYSQL_USER"], $GLOBALS["MYSQL_PASS"]) or die ("Ошибка соединения с базой: " . mysql_error()); //Подключаемся к указаой БД mysql_select_db($GLOBALS["MYSQL_NAME"]) or die ("Ошибка выбора базы данных: " . mysql_error()); //Вынимаем логин $sql_login = "SELECT `login` FROM `users` WHERE login='$login'"; $query_login = mysql_query("$sql_login") or die ("Ошибка запроса: " . mysql_error()); $result_login = mysql_fetch_array ($query_login); //$passw = md5(md5($pass)."fps"); //Вынимаем пароль $sql_pass = "SELECT `password` FROM `users` WHERE login='$login'"; $query_pass = mysql_query("$sql_pass") or die ("Ошибка запроса парoля: " . mysql_error()); $result_pass = mysql_fetch_array ($query_pass); //Вынимаем уровень доступа $sql_access = "SELECT `access` FROM `users` WHERE login='$login'"; $query_access = mysql_query("$sql_access") or die ("Ошибка запроса доступа: " . mysql_error()); $result_access = mysql_fetch_array ($query_access); $result = array(); $result[0] = $result_login[0]; $result[1] = $result_pass[0]; $result[2] = $result_access[0]; &nbsp; //Закрываем соединение &nbsp; mysql_close($connect); return $result; }
Post #: 3
RE: PHP непонятки. Конфликт форм - 2008-11-15 23:26:00.310000   
dOver

Сообщений: 140
Оценки: 0
Присоединился: 2007-03-31 04:41:56.070000
У тебя $_SESSION['auth'] при логине устанавливаеться в True, а при добавлении юзерa сбрасывается. Создай отдельный файл , чтоб добавить юзера. Или сделай так, чтобы $_SESSION['auth'] был в True.

Post #: 4
RE: PHP непонятки. Конфликт форм - 2008-11-16 10:09:52.820000   
Shandow

Сообщений: 48
Оценки: 0
Присоединился: 2008-01-11 17:01:17.716666
Спасибо сейчас попробую =)
Post #: 5
RE: PHP непонятки. Конфликт форм - 2008-11-16 21:46:35.590000   
Shandow

Сообщений: 48
Оценки: 0
Присоединился: 2008-01-11 17:01:17.716666
Вообщем разобрался…. сделал через отдельный файл… но теперь другая трабла
quote:

Ошибка ошибка добавления: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'd903614d7ea574600b36abee81, ad@admin, 0)' at line 1


Синтаксис грит неправильный?
Мож в мускуле де порыцо?
типы полей переставить?
Сорри за тупизну =(
Post #: 6
RE: PHP непонятки. Конфликт форм - 2008-11-17 01:15:15.123333   
Syava

Сообщений: 60
Оценки: 0
Присоединился: 2008-11-07 17:17:24.896666
Я тебе скажу прямо: если ты задашь вопрос конкретно, то тебе ещё ответят на него, а рыться в чужих скриптах в поисках непонятно чего никто не будет. Возможно, какого-то скрипта не существует. Тут все равно, что гадать на кофейной гуще. Сам пробуй разные варианты.
Post #: 7
RE: PHP непонятки. Конфликт форм - 2008-11-17 06:35:10.950000   
TurboXaker

Сообщений: 385
Оценки: 0
Присоединился: 2008-05-23 01:05:40.516666
quote:

ORIGINAL: Shandow

Вообщем разобрался…. сделал через отдельный файл… но теперь другая трабла
quote:

Ошибка ошибка добавления: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'd903614d7ea574600b36abee81, ad@admin, 0)' at line 1


Синтаксис грит неправильный?
Мож в мускуле де порыцо?
типы полей переставить?
Сорри за тупизну =(


все строки направляемы в базу надо в кавычки запихивать, а перед кавычками, которые уже есть в строках ставить обратный слеш (\), если он тоже был там, то заменить на двойной, иначе возможна SQL инъекция!
Post #: 8
RE: PHP непонятки. Конфликт форм - 2008-11-17 07:06:44.930000   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333

quote:

ORIGINAL: Shandow

Вообщем разобрался…. сделал через отдельный файл… но теперь другая трабла
quote:

Ошибка ошибка добавления: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'd903614d7ea574600b36abee81, ad@admin, 0)' at line 1


Post #: 9
RE: PHP непонятки. Конфликт форм - 2008-11-19 21:50:23.830000   
Shandow

Сообщений: 48
Оценки: 0
Присоединился: 2008-01-11 17:01:17.716666
И еще вопосик…
По файлу auth.php
При любом логине ввееденном 2й раз подряд логиин успешен….
Почему так? И где бага
Post #: 10
Страниц:  [1]
Все форумы >> [Веб-программинг] >> PHP непонятки. Конфликт форм







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.