|
 4.9 Кб |
|
| на сайте уже имеется вход в админку, как сделать так чтобы Система авторизации HTTP-Basic (MySQL) была единой регистрацией? ниже я привёл код админки сайта, помогите пожалуйста!
<?
define('SITE', true);
include("admin/config.php");
$admin_login_form = "<table align=center><form 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 align=center><input type=submit value=Войти></td></tr></form></table>";
$title = "Панель администратора";
?>
<link rel="stylesheet" type="text/css" HREF="<?=$im?>/style.css">
<script language="JavaScript">
<!--
function ConformDelete(form)
{
if (confirm("Вы действительно хотите удалить объект?")) return true;
return false;
}
// --></script>
<script language="JavaScript">
<!--
function ConformGo(form)
{
if (confirm("Вы подтверждаете операцию?")) return true;
return false;
}
// --></script>
<?
if(@$_GET['action'] == "logout")
{
if(isset($_SESSION['login']) && isset($_SESSION['password']))
{
unset ($_SESSION['login'], $_SESSION['password']); session_destroy();
}
}
if(isset($_POST['login']) && isset($_POST['password']) && !isset($_SESSION['login']) && !isset($_SESSION['password']))
{
$_POST['login'] = addslashes($_POST['login']);
$admins = mysql_query("SELECT * FROM jshop_admin WHERE login = '". $_POST['login']."' AND password = '". md5($_POST['password'])."'");
if(mysql_numrows($admins) == 1)
{
$_SESSION['login'] = $_POST['login']; $_SESSION['password'] = $_POST['password'];
}
else echo "<center>Администратора с данными параметрами входа не существует!<br><br></center>".$admin_login_form;
}
else if(!isset($_SESSION['login']) && !isset($_SESSION['password'])) echo $admin_login_form;
if(isset($_SESSION['login']) && isset($_SESSION['password']))
{
$_SESSION['login'] = addslashes($_SESSION['login']);
$admins = mysql_query("SELECT * FROM jshop_admin WHERE login = '". $_SESSION['login']."' AND password = '". md5($_SESSION['password'])."'");
if(mysql_numrows($admins) == 1)
{
echo "<br /><br /><table cellpadding=5 cellspacing=5 border=0><tr>";
echo "<td align=center><strong><a href=\"".$h."/admin/catalog/\">Каталог товаров</a></strong></td>";
echo "<td align=center><strong><a href=\"".$h."/admin/profile/\">Профиль</a></strong></td>";
echo "<td align=center><strong><a href=\"".$h."/admin/logout/\">Выйти</a></td>";
echo "</tr></table><br><br>";
if(isset($_GET['action']))
{
if($_GET['action'] == "catalog") include("admin/scatalog.php");
if($_GET['action'] == "profile") include("admin/sprofile.php");
}
}
else echo "<center>Администратора с данными параметрами входа не существует!<br><br></center>".$admin_login_form;
}
?>
|
Или как можно из этого кода вытащить :
if(isset($_SESSION['login']) && isset($_SESSION['password']))
{
$_SESSION['login'] = addslashes($_SESSION['login']);
$admins = mysql_query("SELECT * FROM jshop_admin WHERE login = '". $_SESSION['login']."' AND password = '". md5($_SESSION['password'])."'");
if(mysql_numrows($admins) == 1)
{
echo "<br /><br /><table cellpadding=5 cellspacing=5 border=0><tr>";
echo "<td align=center><strong><a href=\"".$h."/admin/catalog/\">Каталог товаров</a></strong></td>";
echo "<td align=center><strong><a href=\"".$h."/admin/profile/\">Профиль</a></strong></td>";
echo "<td align=center><strong><a href=\"".$h."/admin/logout/\">Выйти</a></td>";
echo "</tr></table><br><br>";
if(isset($_GET['action']))
{
if($_GET['action'] == "catalog") include("admin/scatalog.php");
if($_GET['action'] == "profile") include("admin/sprofile.php");
}
}
|
и как это сделать на странице к примеру admin.php | |
|
|
|
|
 1.5 Кб |
|
|
для: Stop
(14.11.2009 в 14:48)
| | в приложении файл, пример создания http-авторизации.
подключай в защищаемых скриптах через include.
для того, что бы работал скрипт, тебе надо создать таблицу в БД, с логином и паролем.
ну и как я понимаю, тебе надо будет переписать твой скрипт полностью.
p.s.пример взят из книги "Головоломки на PHP для хакера". | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.11.2009 в 13:29)
| | проблема решилась намного проще... просто убрал вторую админку и внедрил код басик авторизации...
осталась одна проблема добавление пользователей, на пшп программирую 2 день,
есть поля
ID
LOGIN
PASSWORD
IP
MAC
TELEFON
MESTO
их надо заполнять...и выводить при нажатии на ссылку пользователи..
у меня в админке есть изменение аккаунта АДМИНИСТРАТОРА ниже привожу код, как сделать просто добавление юзеров с полями перечисленными выше?Пожалуйста помогите!)
<?
if (!defined('SITE')) die();
if(isset($_POST['login']))
{
if($_POST['login'] != "" && $_POST['password'] != "")
{
$_POST['login'] = str_replace("'", "`", $_POST['login']);
$_POST['password'] = str_replace("'", "`", $_POST['password']);
$_POST['login'] = htmlspecialchars(stripslashes($_POST['login']));
$_POST['password'] = htmlspecialchars(stripslashes($_POST['password']));
$_SESSION['login'] = $_POST['login'];
$_SESSION['password'] = $_POST['password'];
$change = mysql_query("UPDATE jshop_admin SET login = '".$_POST['login']."', password = '".md5($_POST['password'])."'");
}
}
if(isset($_GET['op']) && $_GET['op'] == "edit")
{
$profile = mysql_query("SELECT * FROM jshop_admin");
if(mysql_numrows($profile) == 1)
{
$profile = mysql_fetch_array($profile);
$profile['login'] = str_replace('"', '"', $profile['login']);
$profile['login'] = htmlspecialchars(stripslashes($profile['login']));
$profile['password'] = str_replace('"', '"', $profile['password']);
$profile['password'] = htmlspecialchars(stripslashes($profile['password']));
echo "<form method=post action=\"".$h."/admin/profile/\">";
echo "<table align=center cellpadding=0 cellspacing=0><tr><td bgcolor=#E5E5E5><table width=100% cellpadding=1 cellspacing=1>";
echo "<tr bgcolor=#F8F8F8><td colspan=10 align=center><div class=table_item><b>Редактировать</b></div></td></tr>";
echo "<tr bgcolor=#FFFFFF><td><div class=table_item>Логин</div></td><td><div class=table_item><input size=50 name=login type=text value=\"". $profile['login'] ."\"></div></td></tr>
<tr bgcolor=#FFFFFF><td><div class=table_item>Пароль</div></td><td><div class=table_item><input size=50 name=password type=text></div></td></tr>
</table></td></tr></table>
<center><br><br><input type=submit value=\"Изменить\"></center>
</form>";
}
else echo "<center>Ошибка при чтении профиля!</center>";
}
else
{
$profile = mysql_query("SELECT * FROM jshop_admin");
if(mysql_numrows($profile) == 1)
{
$profile = mysql_fetch_array($profile);
echo "<table align=center cellpadding=0 cellspacing=10><tr><td bgcolor=#E5E5E5><table width=100% cellpadding=1 cellspacing=1><tr bgcolor=#F8F8F8><td colspan=10 align=center><div class=table_item><b>Профиль Администратора</b></div></td></tr><tr bgcolor=#FFFFFF><td><div class=table_item>Логин</div></td><td><div class=table_item>".$profile['login']."</div></td></tr><tr bgcolor=#FFFFFF><td><div class=table_item>Пароль</div></td><td><div class=table_item>********</div></td></tr><tr bgcolor=#FFFFFF><td colspan=2><div class=table_item><a href=\"".$h."/admin/profile/edit/\">Изменить данные</a></div></td></tr></table></td></tr></table>";
}
else echo "<center>Ошибка при чтении профиля!</center>";
}
?>
|
| |
|
|
|
|
|
|
|
для: Stop
(15.11.2009 в 13:54)
| | создаёте html форму, где делаете перечисленые поля для ввода информации.
после того, как форма отправлена, проверяете данные, которые пришли из формы и заносите в БД используя sql оператор INSERT | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.11.2009 в 14:09)
| | после того, как форма отправлена, проверяете данные, которые пришли из формы
не понял как это реализовать!-(( сама форма с полями давно уже сделана, не могу сделать вставку данных в бд
всё вставку в бд реализовал , но он изменяет только аккаунт администратора , как модернизировав ниже приведённый код можно осуществить ДОБАВЛЕНИЕ пользователей а не измененине
<?
if (!defined('SITE')) die();
if(isset($_POST['login']))
{
if($_POST['login'] != "" && $_POST['password'] != "" && $_POST['IP'] != "")
{
$_POST['login'] = str_replace("'", "`", $_POST['login']);
$_POST['password'] = str_replace("'", "`", $_POST['password']);
$_POST['IP'] = str_replace("'", "`", $_POST['IP']);
$_POST['login'] = htmlspecialchars(stripslashes($_POST['login']));
$_POST['password'] = htmlspecialchars(stripslashes($_POST['password']));
$_POST['IP'] = htmlspecialchars(stripslashes($_POST['IP']));
$_SESSION['login'] = $_POST['login'];
$_SESSION['password'] = $_POST['password'];
$_SESSION['IP'] = $_POST['IP'];
$change = mysql_query("UPDATE jshop_admin SET login = '".$_POST['login']."', password = '".md5($_POST['password'])."',IP = '".$_POST['IP']."'");
}
}
if(isset($_GET['op']) && $_GET['op'] == "edit")
{
$profile = mysql_query("SELECT * FROM jshop_admin");
if(mysql_numrows($profile) == 1)
{
$profile = mysql_fetch_array($profile);
$profile['login'] = str_replace('"', '"', $profile['login']);
$profile['login'] = htmlspecialchars(stripslashes($profile['login']));
$profile['password'] = str_replace('"', '"', $profile['password']);
$profile['password'] = htmlspecialchars(stripslashes($profile['password']));
$profile['IP'] = str_replace('"', '"', $profile['IP']);
$profile['IP'] = htmlspecialchars(stripslashes($profile['IP']));
echo "<form method=post action=\"".$h."/admin/profile/\">";
echo "<table align=center cellpadding=0 cellspacing=0><tr><td bgcolor=#E5E5E5><table width=100% cellpadding=1 cellspacing=1>";
echo "<tr bgcolor=#F8F8F8><td colspan=10 align=center><div class=table_item><b>Редактировать</b></div></td></tr>";
echo "<tr bgcolor=#FFFFFF><td><div class=table_item>Логин</div></td><td><div class=table_item><input size=50 name=login type=text value=\"". $profile['login'] ."\"></div></td></tr>
<tr bgcolor=#FFFFFF><td><div class=table_item>Пароль</div></td><td><div class=table_item><input size=50 name=password type=text></div></td></tr>
<tr bgcolor=#FFFFFF><td><div class=table_item>IP</div></td><td><div class=table_item><input size=50 name=IP type=text></div></td></tr>
</table></td></tr></table>
<center><br><br><input type=submit value=\"Изменить\"></center>
</form>";
}
//else echo "<center>Ошибка при чтении профиля!</center>";
}
else
{
$profile = mysql_query("SELECT * FROM jshop_admin");
if(mysql_numrows($profile) == 1)
{
$profile = mysql_fetch_array($profile);
echo "<table align=center cellpadding=0 cellspacing=10><tr><td bgcolor=#E5E5E5><table width=100% cellpadding=1 cellspacing=1><tr bgcolor=#F8F8F8><td colspan=10 align=center><div class=table_item><b>Профиль Администратора</b></div></td></tr><tr bgcolor=#FFFFFF><td><div class=table_item>Логин</div></td><td><div class=table_item>".$profile['login']."</div></td></tr><tr bgcolor=#FFFFFF><td><div class=table_item>Пароль</div></td><td><div class=table_item>********</div></td></tr><tr bgcolor=#FFFFFF><td><div class=table_item>IP</div></td><td><div class=table_item>".$profile['IP']."</div></td></tr><tr bgcolor=#FFFFFF><td colspan=2><div class=table_item><a href=\"".$h."/admin/profile/edit/\">Изменить данные</a></div></td></tr></table></td></tr></table>";
}
else echo "<center>Ошибка при чтении профиля!</center>";
}
?>
|
| |
|
|
|
|
|
|
|
для: Stop
(15.11.2009 в 14:11)
| | >заносите в БД используя sql оператор INSERT
я же тебе сразу написал как
данные проверяешь на пустору, если поле обязательно к заполнения, на допустимые символы и т.д | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.11.2009 в 15:00)
| | а выше приведённый код никак нельзя модернизировать?
if(mysql_numrows($profile) == 1) как я понял он выбирает 1 ID и как раз это акк админа, никак нельзя чтобы просто добавлял? | |
|
|
|
|
|
|
|
для: Stop
(15.11.2009 в 15:53)
| | первое.
тут mysql_numrows($profile) пропущено подчёркивание в имени функции.
второе.
для того что бы запрос добавлял запись в БД надо его переписать с использованием оператора INSERT, а привёдённый выше запрос делает выборку записей из БД.
но об этом я уже писал два раза.
и не модернизировать, а полностью написать новый запрос к БД для занесения данных пользователя. | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.11.2009 в 18:03)
| | блин(( | |
|
|
|