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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> страница администрирования, показывать по паролю 
:(
    Опции темы
Alx
Дата 24.1.2005, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Red Dragon
годен)))


--------------------
PM MAIL WWW ICQ   Вверх
Alx
Дата 24.1.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



ну вот и я подоспел. выкидываю не только PHP, но и все страницы с HTML и JavaScript для полноты картины. итак,

install.php
Код

<html>
<head>
<title>FlyVote :: Установка Базы данных MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="autor" content="Alx, ALEXANDRO">
<link rel="StyleSheet" href="files/main.css">
<script>
function subm()
{var frm = document.forms["sql_install"];
var dataRight = true;
if (frm.elements[0].value == "")
{alert("Вы должны ввести название Вашего SQL хоста!")
dataRight = false;
}
if (frm.elements[1].value == "")
{alert("Вы должны ввести название Вашей БД!")
dataRight = false;
}
if (frm.elements[2].value == "")
{alert("Вы должны ввести имя пользователя базы!")
dataRight = false;
}
if (frm.elements[4].value == "")
{alert("Вы должны ввести ваш логин!")
dataRight = false;
}
if (frm.elements[5].value == "")
{alert("Вы должны ввести Ваш пароль!")
dataRight = false;
}
if (frm.elements[6].value == "")
{alert("Вы должны повторить введённый Вами пароль для исключения опечаток!")
dataRight = false;
}
if (frm.elements[6].value != frm.elements[5].value)
{alert("Пароли не совпадают!")
dataRight = false;
}
if (dataRight)
{frm.elements[7].value = "subm";
frm.submit();
}
}
</script>
</head>
<body>
<center>
<div style="text-align:center;font-size:20pt;"><b>FlyVote<b></div>
<div style="text-align:center;font-size:13pt;"><b>Установка БД MySQL</div>
<br><br>
<table width="100%" height="80%">
<tr>
<td align="center" valign="middle">
<?
if (isset($_POST["sent"]))
mainfunc();
else
printform();
function mainfunc()
{$dataRight = true;
if ($_POST["sql_host"] == "" || $_POST["sql_db"] == "" || $_POST["sql_login"] == "" || $_POST["user_name"] == "" || $_POST["user_pass"] == "" || $_POST["user_pass2"] == "")
{echo "<center><b style='color:red;'>ОШИБКА!<br>Вы не заполнили все поля формы!</b></center>";
$dataRight = false;
}
if ($_POST["user_pass"] != $_POST["user_pass2"])
{echo '<center><b style="color:red;">Пароль и подтверждение не совпадают</b></center>';
printform();
$dataRight = false;
}
if ($dataRight)
{define("DBName",$_POST["sql_db"]);
define("HostName",$_POST["sql_host"]);
define("UserName",$_POST["sql_login"]);
define("Password",$_POST["sql_pass"]);
if(@!mysql_connect(HostName,UserName,Password))
{echo "<b style='color:red;'>Ошибка соеденения с базой:</b><br><textarea readonly cols='66' rows='5'>".mysql_error()."</textarea><br>";
printform();
exit;
}
$code = '<?
$sql_host = "'.$_POST['sql_host'].'";
$sql_db = "'.$_POST['sql_db'].'";
$sql_user = "'.$_POST['sql_login'].'";
$sql_pass = "'.$_POST['sql_pass'].'";
?>';

@$fp=@fopen("conf.php","w");
@fwrite($fp,$code);
@fclose($fp);
@chmod("conf.php", 0666);

mysql_select_db(DBName);
@mysql_query("drop table flyvote_admin");
@mysql_query("create table flyvote_admin(name text, pass text)");
mysql_query("insert into flyvote_admin(name, pass) values('".$_POST['user_name']."', '".md5($_POST['user_pass'])."')");
$r=mysql_query("select * from flyvote_admin");
if(@mysql_num_rows($r))
{echo '<table width="70%" border="0" cellspacing="3" cellpadding="0" style="background: #FFDB9F; border: 1px solid #666666;">
<tr>
<td colspan="2" class="titletd">
Установка завершена!
</td>
</tr>
<tr>
<td width="100%" style="background: #FFE4B9; border: 1px solid #666666;padding:30px;" valign="top">
<div align="center"><b>Установка успешно завершена!</b></div>
<br>
<i>Данные, необходимые для доступа в Панель Администрирования FlyVote:</i>
<br><br>
<b>Логин:</b> '.$_POST['user_name'].'
<br>
<b>Пароль:</b> '.$_POST['user_pass'].'
<br><br>
Пожалуйста сохраните эти данные в надёжным месте, так как при утере восстановить их будет нельзя.
<br><br>
<div align="center"><b>Внимание!</b></div>
<br>
Вам необходимо удалить файл <b>install.php</b> через FTP как можно скорее, чтобы никто не мог сменить Ваши настройки и получить доступ к Вашей Панели Администрирования.
<br><br><br>
<i>Спасибо за выбор нашей программы!
<div align="right">
<a href="http://alx.com.ru/">Alx</a> @ <a href="http://soft.flyweb.ru/">FlyWeb Soft</a>
</div>
</td>
</tr>
<tr>
<td class="titletd" onmouseover="this.style.cursor=\'hand\';" onclick="document.location.href = \'index.php\';">
Вход в Панель Администрирования
</td>
</tr>
</table>
';
}
else
{echo "<b style='color:red;'>Ошибка соеденения с базой:</b><br><textarea readonly cols='66' rows='5'>".mysql_error()."</textarea><br>";
printform();
}
}
}
function printform()
{echo '
<form name="sql_install" action="install.php" method="post">
<table width="70%" border="0" cellspacing="3" cellpadding="0" style="background: #FFDB9F; border: 1px solid #666666;">
<tr>
<td colspan="2" class="titletd">
Данные MySQL
</td>
</tr>
<tr>
<td width="40%" class="label">
Имя хоста:
</td>
<td width="60%" class="tdp">
<input type="text" size="50" name="sql_host" value="localhost">
</td>
</tr>
<tr>
<td width="40%" class="label">
База:
</td>
<td width="60%" class="tdp">
<input type="text" size="50" name="sql_db" value="'.@$_POST["sql_db"].'">
</td>
</tr>
<tr>
<td width="40%" class="label">
Логин:
</td>
<td width="60%" class="tdp">
<input type="text" size="50" name="sql_login" value="'.@$_POST["sql_login"].'">
</td>
</tr>
<tr>
<td width="40%" class="label">
Пароль:
</td>
<td width="60%" class="tdp">
<input type="password" size="50" name="sql_pass" value="'.@$_POST["sql_pass"].'">
</td>
</tr>
</table>
<br>
<table width="70%" border="0" cellspacing="3" cellpadding="0" style="background: #FFDB9F; border: 1px solid #666666;">
<tr>
<td colspan="2" class="titletd">
Личные данные администратора
</td>
</tr>
<tr>
<td width="40%" class="label">
Логин:
</td>
<td width="60%" class="tdp">
<input type="text" size="50" name="user_name" value="'.@$_POST["user_name"].'">
</td>
</tr>
<tr>
<td width="40%" class="label">
Пароль:
</td>
<td width="60%" class="tdp">
<input type="password" size="50" name="user_pass">
</td>
</tr>
</tr>
<tr>
<td width="40%" class="label">
Повторите пароль:
</td>
<td width="60%" class="tdp">
<input type="password" size="50" name="user_pass2">
<input type="hidden" name="sent">
</td>
</tr>
</table>
<br>
<table width="70%" border="0" cellspacing="3" cellpadding="0" style="background: #FFDB9F; border: 1px solid #666666;">
<tr>
<td colspan="2" class="titletd" onmouseover="this.style.cursor=\'hand\';" onclick="subm();">
>> Готово <<
</td>
</tr>
</table>
</form>';
}
?>
</td>
</td>
</table>
</center>
</body>
</html>


admin.php
Код

<?
if(file_exists("conf.php"))
{require "conf.php";
define("DBName",$sql_db);
define("HostName",$sql_host);
define("UserName",$sql_user);
define("Password",$sql_pass);
}
else
{header('Location:install.php');
}
?>

<html>
<head>
<title>FlyVote :: Установка Базы данных MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="autor" content="Alx, ALEXANDRO">
<link rel="StyleSheet" href="files/main.css">
<script>
function subm()
{var frm = document.forms["login_form"];
var dataRight = true;
if (frm.elements[0].value == "")
{alert("Введите логин!")
dataRight = false;
}
if (frm.elements[1].value == "")
{alert("Введите пароль!")
dataRight = false;
}
if (dataRight)
{frm.elements[2].value = "subm";
frm.submit();
}
}
</script>
</head>
<body>
<center>
<div style="text-align:center;font-size:20pt;"><b>FlyVote<b></div>
<div style="text-align:center;font-size:13pt;"><b>Admin Zone</div>
<br><br>
<table width="100%" height="80%">
<tr>
<td align="center" valign="middle">
<?
if (isset($_POST["sent"]))
mainfunc();
else
printform();
function mainfunc()
{$dataRight = true;
if ($_POST["login"] == "" || $_POST["pass"] == "")
{echo "<center><b style='color:red;'>ОШИБКА!<br>Введите логин и пароль!</b></center>";
$dataRight = false;
}
if ($dataRight)
{if(@!mysql_connect(HostName,UserName,Password))
{echo "<b style='color:red;'>Ошибка соеденения с базой:</b><br><textarea readonly cols='66' rows='5'>".mysql_error()."</textarea><br>";
printform();
exit;
}
mysql_select_db(DBName);
$r=mysql_query("select * from flyvote_admin");
if(@mysql_num_rows($r))
{$f = mysql_fetch_array($r);
if ($_POST["login"] != $f[0])
{echo "<b style='color:red;'>Неправильный логин</b><br>";
$dataRight = false;
}
if (md5($_POST["pass"]) != $f[1])
{echo "<b style='color:red;'>Неправильный пароль</b><br>";
$dataRight = false;
}
if ($dataRight)
{echo "<b style='color:green;'>Авторизация прошла успешно!</b><br>";
session_save_path('/home/alx/www/sessions');
session_start();
$_SESSION["password"] = md5($_POST["pass"]);
echo "<script>document.location.href = 'admin.php';</script>";
exit;
}
else
printform();
}
else
{echo "<b style='color:red;'>Ошибка соеденения с базой:</b><br><textarea readonly cols='66' rows='5'>".mysql_error()."</textarea><br>";
printform();
}
}
}
function printform()
{echo '
<form name="login_form" action="index.php" method="post">
<table width="70%" border="0" cellspacing="3" cellpadding="0" style="background: #FFDB9F; border: 1px solid #666666;">
<tr>
<td colspan="2" class="titletd">
Авторизация
</td>
</tr>
<tr>
<td width="40%" class="label">
Логин:
</td>
<td width="60%" class="tdp">
<input type="text" size="50" name="login">
</td>
</tr>
<tr>
<td width="40%" class="label">
Пароль:
</td>
<td width="60%" class="tdp">
<input type="password" size="50" name="pass">
<input type="hidden" name="sent">
</td>
</tr>
<tr>
<td colspan="2" class="titletd" onmouseover="this.style.cursor=\'hand\';" onclick="subm();">
Вход!
</td>
</tr>
</table>
</form>';
}
?>
</td>
</td>
</table>
</center>
</body>
</html>


проверка сессии:
Код

<?
if(file_exists("conf.php"))
{require "conf.php";
define("DBName",$sql_db);
define("HostName",$sql_host);
define("UserName",$sql_user);
define("Password",$sql_pass);
}
else
{header('Location:install.php');
exit;
}
mysql_select_db(DBName);
$r = mysql_query("select * from flyvote_admin");
$f = mysql_fetch_array($r);
session_save_path('/home/alx/www/sessions');
session_start();
if ($_SESSION['password'] != $f[1])
{header('Location:index.php');
exit;
}
?>




--------------------
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 24.1.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 122
Всего: 261



Alx
Red Dragon
Все таки останусь при мнении, что даже если не защиту для банка делаете, пароль в открытом (читаемом) виде хранить нельзя.

Цитата(Alx @ 24.1.2005, 17:15)
if ($_POST["sql_host"] == "" || $_POST["sql_db"] == "" || $_POST["sql_login"] == "" || $_POST["user_name"] == "" || $_POST["user_pass"] == "" || $_POST["user_pass2"] == "")

Проверяй используя empty();

Цитата(Alx @ 24.1.2005, 17:15)
$r=mysql_query("select * from flyvote_admin");
if(@mysql_num_rows($r))
{$f = mysql_fetch_array($r);
if ($_POST["login"] != $f[0])
{echo "<b style='color:red;'>Неправильный логин</b><br>";
$dataRight = false;
}
if (md5($_POST["pass"]) != $f[1])
{echo "<b style='color:red;'>Неправильный пароль</b><br>";
$dataRight = false;
}

Зачем так сложно...
$r=mysql_query("select * from flyvote_admin WHERE login = XXX AND pass = md5(YYY)");
если вернет 1 запись значит юзер ввел правтльные данные.

PM ICQ   Вверх
Alx
Дата 24.1.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Цитата(Mal @ 24.1.2005, 18:15)
Зачем так сложно...
$r=mysql_query("select * from flyvote_admin WHERE login = XXX AND pass = md5(YYY)");
если вернет 1 запись значит юзер ввел правтльные данные.


smile smile



--------------------
PM MAIL WWW ICQ   Вверх
Sardar
Дата 24.1.2005, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



Alx на спор по словарю с комбинациями или даже перебором smile Все оффисные машины поставить, максимум за пару месяцев подберут smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Irokez
Дата 24.1.2005, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

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



Mal Hack
1) Опасность mysql инъекции
2) Нет проверки на регистр
PM   Вверх
Mal Hack
Дата 24.1.2005, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 122
Всего: 261



Цитата(Irokez @ 24.1.2005, 21:29)
1) Опасность mysql инъекции

А mysql_escape_string(); зачем придумали?
Поверь POST данные намного легче подделать, чем SQL иньекцию провернуть.

Цитата(Irokez @ 24.1.2005, 21:29)
2) Нет проверки на регистр

Что значит нет?
Там равно стоит...
http://dev.mysql.com/doc/mysql/ru/string-c...-functions.html

PM ICQ   Вверх
Irokez
Дата 24.1.2005, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

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




mysql> select 'a'='A' and '0cc175b9c0f1b6a831c399e269772661'=md5('a');
+---------------------------------------------------------+
| 'a'='A' and '0cc175b9c0f1b6a831c399e269772661'=md5('a') |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Добавлено @ 22:22
раз уж на то пошло:
Код

$r=mysql_query("select * from flyvote_admin WHERE binary login = XXX AND pass = md5(YYY)");


Это сообщение отредактировал(а) Irokez - 24.1.2005, 22:20
PM   Вверх
Mal Hack
Дата 24.1.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 122
Всего: 261



Irokez
login & pass - имена полей... XXX & YYY - данные ПОСТ...
PM ICQ   Вверх
Irokez
Дата 24.1.2005, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

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



Цитата(Mal @ 24.1.2005, 22:28)
Irokez
login & pass - имена полей... XXX & YYY - данные ПОСТ...

с этим я и не спорю, просто хотел показать на примере, что твой запрос регистронезависим

PM   Вверх
Mal Hack
Дата 24.1.2005, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 122
Всего: 261



Для регистрозависимого поиска надо BLOB использовать, а не TEXT
PM ICQ   Вверх
Irokez
Дата 25.1.2005, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

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



Цитата(Mal @ 24.1.2005, 22:38)
Для регистрозависимого поиска надо BLOB использовать, а не TEXT

smile по-моему мы уже о разных вещах начали спорить ...
PM   Вверх
Mal Hack
Дата 25.1.2005, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 122
Всего: 261



Irokez
Нет. TEXT на сколько я знаю, вообще не подерживает регистрозависимый поиск.
PM ICQ   Вверх
Irokez
Дата 25.1.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

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



Проведем эксперимент:

mysql> create table test1(text text);
Query OK, 0 rows affected (0.08 sec)

mysql> insert into test1 'aaa';

mysql> select * from test1 where text='AAA';
+------+
| text |
+------+
| aaa |
+------+
1 row in set (0.04 sec)

mysql> select * from test1 where binary text='AAA';
Empty set (0.00 sec)

Это сообщение отредактировал(а) Irokez - 25.1.2005, 20:56
PM   Вверх
Mal Hack
Дата 25.1.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 122
Всего: 261



Irokez
BINARY это уже другой вопрос smile По сути он из TEXT'a BLOB делает smile
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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