|
|
|
| Ситуация такая: имеются два готовых платных скрипта от разных разработчиков.
У каждой есть своя админ панель, аунтефицирующая администратора по логину и паролю.
Задача: Изготовить одну страницу с одной формой.
После ввода админ логина и пароля в эту форму данные передались как нибудь в файлы аунтефикиции тех, готовых скриптов.
И что б при заходе на www.my_site.ru/script_1/admin/login.php и www.my_site.ru/script_2/admin/login.php скрипты как бы знали, что аунтефикация прошла ( при истинных данных ессно) и пропускали в свою панель.
Ну а если данные введены ложные в первичную форму, то на усмотрение: или бы выскакивало ругательное сообщение и происходила перезагрузка первичной страницы с формой или же происходил редирект на свои аунтефикационные страницы скриптов...
Вопросы:
Сталкивался ли кто с такой ситуёвиной?
Сложно ли сделать данное?
Код форм не привожу, хочу, что б объяснили "на пальцах", а я потом сам попробую дойти до нужного результата. Если не удастся ( а это непременно, т.к. знаний не хватает), то ... буду умолять помочь более предметно.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: CTyDEHT
(31.10.2006 в 15:45)
| | задача ясна, и её решение зависит от того как реализована авторизация в скриптах. Если они платные, то наверное не примитивно... Я лично именно с такой задачей несталкивался, но сталкивался с написаниеим аторизации. И знаю два способа авторизации пользователя - это сеанс сессий и куки. Точно не знаю, можно ли подделать и то и другое, но попытаться стоит. Напиши суда код тех скриптов, кторый отвечает за авторизацию. Ещё точнее то, что свидетельствует о том что пользователь прошёл авторизицию... Или хотя бы что это скрипты.. | |
|
|
|
|
|
|
|
для: NIK
(31.10.2006 в 17:53)
| | NIK: Есть еще авторизация через стандартные средства Apach
-------
А вообще если у обоих скриптов происходит авторизация через сессии, то в принципе задача решаема будет(особенно, если реквизиты для входа в оба скрипта буду одинаковые).. Просто надо будет узнать, где они отмечаються, что пользователь зашёл, и сделать чтобы при авторизации в 3 админке помечался пользователь и в первых 2. | |
|
|
|
|
|
|
|
для: CTyDEHT
(31.10.2006 в 15:45)
| | Нужно больше подробностей - как происходит авторизация и где хранятся аккаунты (в базе данных или в файлах)? Ситуация вполне решаемая (и возникает довольно регулярно) и часто возникает - нужно либо добавить учётные записи в файлы или таблицы базы данных обоих приложений. | |
|
|
|
|
|
|
|
для: 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> </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> </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 час... :) | |
|
|
|
|
|
|
|
для: 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'] проверяют, и если он правильный, доступ разрешают.
Вторая админка большая? Если нет, то имхо во втором скрипте авторизацию лучше сделать как и в первом. Связать так будет проще. | |
|
|
|
|
|
|
|
для: NIK
(31.10.2006 в 22:17)
| | >Вторая админка большая? Если нет, то имхо во втором скрипте авторизацию лучше сделать как и в первом. Связать так будет проще.
Ээх, это очевидно, что лучше сделать новую авторизацию, но к сожалению это пока не по моему уму. Хорошо хоть такая то есть...
Мне б просто как-нибудь подменить эти сессии, что бы скрипты приняли их из моей формы, и пропустили во внутрь. Что бы они думали, что админ прошел через их аунтефикационные формы... | |
|
|
|