Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Система авторизации HTTP-Basic (MySQL)
 
 автор: Stop   (14.11.2009 в 14:48)   письмо автору
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

  Ответить  
 
 автор: Slo_Nik   (15.11.2009 в 13:29)   письмо автору
1.5 Кб
 
   для: Stop   (14.11.2009 в 14:48)
 

в приложении файл, пример создания http-авторизации.
подключай в защищаемых скриптах через include.
для того, что бы работал скрипт, тебе надо создать таблицу в БД, с логином и паролем.
ну и как я понимаю, тебе надо будет переписать твой скрипт полностью.
p.s.пример взят из книги "Головоломки на PHP для хакера".

  Ответить  
 
 автор: Stop   (15.11.2009 в 13:54)   письмо автору
 
   для: 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('"''&quot;'$profile['login']);
        
$profile['login']  = htmlspecialchars(stripslashes($profile['login']));

        
$profile['password'] = str_replace('"''&quot;'$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>";
}
?>

  Ответить  
 
 автор: Slo_Nik   (15.11.2009 в 14:09)   письмо автору
 
   для: Stop   (15.11.2009 в 13:54)
 

создаёте html форму, где делаете перечисленые поля для ввода информации.
после того, как форма отправлена, проверяете данные, которые пришли из формы и заносите в БД используя sql оператор INSERT

  Ответить  
 
 автор: Stop   (15.11.2009 в 14:11)   письмо автору
 
   для: 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('"''&quot;'$profile['login']);
                
$profile['login']  = htmlspecialchars(stripslashes($profile['login']));

                
$profile['password'] = str_replace('"''&quot;'$profile['password']);
                
$profile['password']  = htmlspecialchars(stripslashes($profile['password']));

                
$profile['IP'] = str_replace('"''&quot;'$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>";
}
?>

  Ответить  
 
 автор: Slo_Nik   (15.11.2009 в 15:00)   письмо автору
 
   для: Stop   (15.11.2009 в 14:11)
 

>заносите в БД используя sql оператор INSERT

я же тебе сразу написал как

данные проверяешь на пустору, если поле обязательно к заполнения, на допустимые символы и т.д

  Ответить  
 
 автор: Stop   (15.11.2009 в 15:53)   письмо автору
 
   для: Slo_Nik   (15.11.2009 в 15:00)
 

а выше приведённый код никак нельзя модернизировать?
if(mysql_numrows($profile) == 1) как я понял он выбирает 1 ID и как раз это акк админа, никак нельзя чтобы просто добавлял?

  Ответить  
 
 автор: Slo_Nik   (15.11.2009 в 18:03)   письмо автору
 
   для: Stop   (15.11.2009 в 15:53)
 

первое.
тут mysql_numrows($profile) пропущено подчёркивание в имени функции.
второе.
для того что бы запрос добавлял запись в БД надо его переписать с использованием оператора INSERT, а привёдённый выше запрос делает выборку записей из БД.
но об этом я уже писал два раза.
и не модернизировать, а полностью написать новый запрос к БД для занесения данных пользователя.

  Ответить  
 
 автор: Stop   (15.11.2009 в 23:48)   письмо автору
 
   для: Slo_Nik   (15.11.2009 в 18:03)
 

блин((

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования