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

Форум PHP

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

 

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

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

тема: Вопрос о связке двух различных готовых скриптов одной админкой.
 
 автор: CTyDEHT   (31.10.2006 в 15:45)   письмо автору
 
 

Ситуация такая: имеются два готовых платных скрипта от разных разработчиков.
У каждой есть своя админ панель, аунтефицирующая администратора по логину и паролю.

Задача: Изготовить одну страницу с одной формой.
После ввода админ логина и пароля в эту форму данные передались как нибудь в файлы аунтефикиции тех, готовых скриптов.
И что б при заходе на www.my_site.ru/script_1/admin/login.php и www.my_site.ru/script_2/admin/login.php скрипты как бы знали, что аунтефикация прошла ( при истинных данных ессно) и пропускали в свою панель.
Ну а если данные введены ложные в первичную форму, то на усмотрение: или бы выскакивало ругательное сообщение и происходила перезагрузка первичной страницы с формой или же происходил редирект на свои аунтефикационные страницы скриптов...

Вопросы:
Сталкивался ли кто с такой ситуёвиной?
Сложно ли сделать данное?
Код форм не привожу, хочу, что б объяснили "на пальцах", а я потом сам попробую дойти до нужного результата. Если не удастся ( а это непременно, т.к. знаний не хватает), то ... буду умолять помочь более предметно.
Заранее спасибо.

   
 
 автор: NIK   (31.10.2006 в 17:53)   письмо автору
 
   для: CTyDEHT   (31.10.2006 в 15:45)
 

задача ясна, и её решение зависит от того как реализована авторизация в скриптах. Если они платные, то наверное не примитивно... Я лично именно с такой задачей несталкивался, но сталкивался с написаниеим аторизации. И знаю два способа авторизации пользователя - это сеанс сессий и куки. Точно не знаю, можно ли подделать и то и другое, но попытаться стоит. Напиши суда код тех скриптов, кторый отвечает за авторизацию. Ещё точнее то, что свидетельствует о том что пользователь прошёл авторизицию... Или хотя бы что это скрипты..

   
 
 автор: krollik   (31.10.2006 в 17:56)   письмо автору
 
   для: NIK   (31.10.2006 в 17:53)
 

NIK: Есть еще авторизация через стандартные средства Apach
-------
А вообще если у обоих скриптов происходит авторизация через сессии, то в принципе задача решаема будет(особенно, если реквизиты для входа в оба скрипта буду одинаковые).. Просто надо будет узнать, где они отмечаються, что пользователь зашёл, и сделать чтобы при авторизации в 3 админке помечался пользователь и в первых 2.

   
 
 автор: cheops   (31.10.2006 в 19:14)   письмо автору
 
   для: CTyDEHT   (31.10.2006 в 15:45)
 

Нужно больше подробностей - как происходит авторизация и где хранятся аккаунты (в базе данных или в файлах)? Ситуация вполне решаемая (и возникает довольно регулярно) и часто возникает - нужно либо добавить учётные записи в файлы или таблицы базы данных обоих приложений.

   
 
 автор: CTyDEHT   (31.10.2006 в 20:16)   письмо автору
 
   для: CTyDEHT   (31.10.2006 в 15:45)
 

И так, код первый, файл /script_1/admin/index.php (платный каталог организаций на базе, но конфиг и данные админ аккаунта хранятся в файлах):


<?php
        
include("auth.php");        
// содержание файла auth.php: 
//        error_reporting(E_ERROR);
//        ini_set('session.gc_maxlifetime',3600);
//        session_save_path ('tmp');
//        session_start();
//        $conf['login'] = 'adminlogin';
//        $conf['pass'] = 'adminpass';
        
        
require('lang.php'); //небольшой языковой файл

$action=$_GET['action'];
if(isset(
$_SESSION['ses_login'],$_SESSION['ses_pass']) ){
if(
$_SESSION['ses_login'] == $conf['login'] and $_SESSION['ses_pass'] == md5($conf['pass']) ){

        include(
"../include.php"); //файл с указанием данных mysql...
        
include("head.php");// шапка админки

 
if ($_GET['action'] == 'exit')
        {
            unset (
$_SESSION['ses_login'],$_SESSION['ses_pass']);
            
session_destroy();
// html код после нажатия "Выход из админпанели"
              
echo '<META HTTP-EQUIV=Refresh CONTENT=5;url=index.php>';
        }else{        
 
//статистика скрипта (всего наименований, новых и т.п.)
         
}
      include(
"footer.php");//подвал админки
 
}
    else
    {
        unset (
$_SESSION['ses_login'],$_SESSION['ses_pass']);

    
$LANG=array();
    require(
'lang.php');

        echo 
$LANG['155'];//Некорректная сессия<br><a href="index.php">Войти заново</a>
    
}
}
else
{
                if (isset(
$_POST['pass'],$_POST['login'])){
                if (
$_POST['login'] == $conf['login'] and $_POST['pass'] == $conf['pass']){
                              
$_SESSION['ses_login'] = $_POST['login'];
                              
$_SESSION['ses_pass'] = md5($_POST['pass']);

    
$LANG=array();
    require(
'lang.php');

            echo 
$LANG['154'];//'Вы вошли в систему, ждите редиректа<script>location = "index.php"...
                
}
    else 
session_destroy();
    
$LANG=array();    
?>
<HTML><HEAD><TITLE>script_1</TITLE><BODY>
<form method="post" action="index.php">
<TABLE><TR>
<TD>логин</TD>
<TD>пароль</TD>
<TD>&nbsp;</TD>
</TR><TR>
<TD><INPUT size=16 name=login></TD>
<TD><INPUT type=password size=16 name=pass></TD>
<TD><INPUT type=submit value=Войти name=B1></TD>
</TR></TABLE>
</FORM>
</BODY></HTML>
<?php
    
}
    else
    {
    
session_destroy();
    
$LANG=array();
    require(
'lang.php');
                
?>
<HTML><HEAD><TITLE>script_1</TITLE><BODY>
<form method="post" action="index.php">
<TABLE<TR>
<TD>логин</TD>
<TD>пароль</TD>
<TD>&nbsp;</TD>
</TR><TR>
<TD><INPUT  size=16 name=login></TD>
<TD><INPUT  type=password size=16 name=pass></TD>
<TD><INPUT  type=submit value=Войти name=B1></TD>
</TR></TABLE>  
</FORM>
</BODY></HTML>
<?php
    
}
}

?>


Лишние теги html вырезал/заменил/...

Код второй, файл /script_2/admin.php (бесплатная (как выяснилось позже) доска объявлений на файлах, конфиг и данные админ аккаунта хранятся в config.php):


<? 
include "config.php";
// Авторизация
if (!isset($_GET['pswrd'])) {
echo 
"<form action=\"admin.php\" method=\"get\" name=pass>пароль
<BR>
<input type=password size=\"17\" value=\"\" name=\"pswrd\">
<BR>
<input type=\"submit\" value=\"Войти\">
<SCRIPT language=JavaScript>document.pass.pswrd.focus();</SCRIPT>"
;
}
else {if (
$_GET['pswrd']=="$password") { // Авторизация пройдена успешно($password задана в config.php)

// Блоки управления скриптом
// Блоки управления скриптом
// Блоки управления скриптом
// Блоки управления скриптом
// Блоки управления скриптом


//В конце каждого блока управления стоит нижеследующее:
Header("Location: admin.php?pswrd=$password");
exit;
?>


Хотелось б видеть любое возможное решение (files or mysql все равно).
Заранее огромное спасибо...

P.S. Если "прочувствую" логический механизм данного решения, прикручу ещё phpbb и скрипт опроса к одной странице... Ну это мечты... ;)
P.P.S. С 8-ми месячным сыном на коленях это сообщение писал (готовил код) примерно 1 час... :)

   
 
 автор: NIK   (31.10.2006 в 22:17)   письмо автору
 
   для: CTyDEHT   (31.10.2006 в 20:16)
 

в первом скрипте когда ты вводишь логин и пароль, они сверяется с этим:


// содержание файла auth.php:
 ...
//        $conf['login'] = 'adminlogin';
//        $conf['pass'] = 'adminpass'; 


и если они совпадают, то создаются сессии с логином и паролем. В последующем проверяется, существуют ли эти сессии или нет. Если существуют - доступ разрешается, нет сессий - нет доступа. В кратце вот так.

Во втором скрипте авторозиция хиленькая. Пароль там хранится в строке запроса, то есть в $_GET['pswrd']. Если эта переменная не задана (то есть к скрипту обращаются просто типа admin.php), то выводят форму для ввода пароля. Когда заполняешь форму, обращеник к срипту идёт уже как admin.php?pswrd=pass. Ну и собственно пароль pass из переменной $_GET['pswrd'] проверяют, и если он правильный, доступ разрешают.

Вторая админка большая? Если нет, то имхо во втором скрипте авторизацию лучше сделать как и в первом. Связать так будет проще.

   
 
 автор: CTyDEHT   (31.10.2006 в 22:34)   письмо автору
 
   для: NIK   (31.10.2006 в 22:17)
 

>Вторая админка большая? Если нет, то имхо во втором скрипте авторизацию лучше сделать как и в первом. Связать так будет проще.

Ээх, это очевидно, что лучше сделать новую авторизацию, но к сожалению это пока не по моему уму. Хорошо хоть такая то есть...
Мне б просто как-нибудь подменить эти сессии, что бы скрипты приняли их из моей формы, и пропустили во внутрь. Что бы они думали, что админ прошел через их аунтефикационные формы...

   
Rambler's Top100
вверх

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