IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> Привязываем сторонний скрипт к мамбе, или аутентификация из мамбы но без мамбы
Alecfyz
сообщение 18.09.05 - 17:39
Сообщение #1


Gorsk.net Studio
***

Группа: Admin
Сообщений: 1,852
Регистрация: 24.02.05
Пользователь №: 3



Нам был задан вопрос:
QUOTE
есть пользователи + администратор и есть статистика игры по кваке quake3, я ее сохраняю тут:    http://local.site/users/1.php    2.php  3.php и т.д.,
и как бы нужно что бы каждый пользователь имел доступ только к своей статистике, тобиш просто, когда он заходит в мамбу, вводит свой логин и пароль, у него в его user menu появляется дополнительный пункт "Статистика", при нажатии на который его перекинет на ссылку 1.php или 2.php , которую можно будет указать.

Решение.
Я подумал и решил написать простенькую связку для подобных задач:
Скачиваем компонент - Прикрепленный файл  csredir.zip ( 1.3k ) Кол-во скачиваний: 1293
модуль - Прикрепленный файл  scmenu.zip ( 1.13k ) Кол-во скачиваний: 1268
и демо-файл - Прикрепленный файл  demo.zip ( 366bytes ) Кол-во скачиваний: 1462

Устанавливаем компонент и модуль. Модуль публикуем в той же позиции, что и юзерсоке меню (user-menu), но ниже юзер-меню; и говорим "Не показывать заголовок модуля". Так мы добьемся эффекта "еще одного" пункта юзер-меню.
Затем идем в /components/com_csredir/ и находим там файл "csredir.php". Вот его листинг:
CODE
<?php
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

$full_path = "";  // если нужно, поставьте полный путь вместе с "HTTP://" и слешем  "/" в конце

global $my;
switch ($my->username) { // '$my->username' = логин

   case "admin":
   $cslink = "1";  // 1.php
   break;

   case "Vasya":
   $cslink = "2";  // 2.php
   break;

   case "Pupkin":
   $cslink = "3";  // 3.php
   break;

   default:
   $cslink = "";
   break;

}
if ($cslink) {
$cslink_chk = $cslink;
$cslink = $full_path.$cslink ?>
<table class="moduletable" width="100%"  border="0" cellspacing="0" cellpadding="0">
 <tr>
   <th><div align="center">Статистика Counter Strike для пользователя <?php echo $my->username ?></div></th>
 </tr>
 <tr>
   <td><form name="form1" method="post" action="<?php echo $cslink ?>.php">
     <div align="center"><br />
       <input type="submit" name="Submit" value="Показать">
     </div>
     <input type="hidden" name="check" value="<? echo $my->username; ?>">
     <input type="hidden" name="cslink_chk" value="<? echo $cslink_chk; ?>">
   </form></td>
 </tr>
</table>

<?php

       } else { ?>
<table class="moduletable" width="100%"  border="0" cellspacing="0" cellpadding="0">
 <tr>
   <th><div align="center">Статистика Counter Strike</div></th>
 </tr>
 <tr>
   <td><div align="center"><br /><strong>НЕДОСТУПНО!<strong></div></td>
 </tr>
</table>

<?php
}


?>

В самом начале можно задать полный путь до того места. где у вас находятся файлы (в данном случае - статистики). Нужно указывать путь вместе с "HTTP://" и слешем "/" в конце. То есть, например: "http://super-site.ru/stat/"
И если я ничего не напутал rolleyes.gif , то скрипт сам найдет соответствующие каждому юзеру файлы. Если оставить переменную пустой, то скрипт будет искать файлы в корневой директории сайта.
---
Теперь разберем, что такое
CODE
   case "admin":
   $cslink = "1";  // 1.php
   break;

case "admin" - admin в данном случае - логин юзера "Administrator"
$cslink = "1" - 1 это имя файла-обработчика (статистики), соответствующего данному юзеру. То есть, если вам нужно будет добавить к трем существующим в файле юзерам admin, Vasya, Pupkin еще одного юзера, вы просто добавляете в начало еще одну такую конструкцию и выглядеть это станет так:
CODE
switch ($my->username) {

   case "moi_user":
   $cslink = "stat3";  // stat3.php
   break;

   case "qwe":
   $cslink = "1";  // 1.php
   break;

   case "Vasya":
   $cslink = "2";  // 2.php
   break;

   case "Pupkin":
   $cslink = "3";  // 3.php
   break;

   default:
   $cslink = "";
   break;

}

----
Теперь, посмотрим, что нужно будет сделать в каждом своем файле, который вы хотите поставить "обработчиком" (статистики).
Код демо-файла (1.php):
CODE
<?php
// Доступ только для:
$allowuser = "admin";

$checkredir = $_SERVER['HTTP_REFERER'];
$myname = $_POST['check'];
$cslink_chk = $_POST['cslink_chk'];


if (strpos($checkredir, 'csredir') === FALSE || $myname != $allowuser || !$cslink_chk ) die ("Direct Access to this location is not allowed");
// ----------------------------------------------




// Здесь тело вашего файла


?>

Единственное, что вам потребуется это вставить в самый верх ваших "не-мамбо" файлов-обработчиков такой же код, как в демо-файле; и прописать в каждом файле логин того юзера, для кого этот файл предназначен: $allowuser = "newuser"
--------------------------------------
Вот, собственно и все. Метод не претендует на совершенство, но работает smile.gif
Удачи.
cool.gif


--------------------
Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
biz
сообщение 18.09.05 - 20:00
Сообщение #2


Advanced Member
***

Группа: Members
Сообщений: 67
Регистрация: 18.09.05
Пользователь №: 1,530



QUOTE
Модуль публикуем в той же позиции, что и юзерсоке меню (user-menu), но ниже юзер-меню; и говорим "Не показывать заголовок модуля". Так мы добьемся эффекта "еще одного" пункта юзер-меню.


А это как?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alecfyz
сообщение 18.09.05 - 20:16
Сообщение #3


Gorsk.net Studio
***

Группа: Admin
Сообщений: 1,852
Регистрация: 24.02.05
Пользователь №: 3



Ну например, юзерское меню опубликовано в позиции 'left'
Вот новый модуль, который вы скачали выше, нужно опубликовать тоже в позиции 'left'; поставить радиокнопку "Показывать заголовок модуля" в позицию "Нет".
cool.gif


--------------------
Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
biz
сообщение 18.09.05 - 20:32
Сообщение #4


Advanced Member
***

Группа: Members
Сообщений: 67
Регистрация: 18.09.05
Пользователь №: 1,530



THS A LOT !!!!!!!!!!!
IT WORKS !!!!!!!!!!!!!!!!!!!!1
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
biz
сообщение 18.09.05 - 20:37
Сообщение #5


Advanced Member
***

Группа: Members
Сообщений: 67
Регистрация: 18.09.05
Пользователь №: 1,530



wrode redirect est', no kogda ya dobovlyau takoe
CODE
<?php
// дНЯРСО РНКЭЙН ДКЪ:
$allowuser = "admin";

$checkredir = $_SERVER['HTTP_REFERER'];
$myname = $_POST['check'];
$cslink_chk = $_POST['cslink_chk'];


if (strpos($checkredir, 'csredir') === FALSE || $myname != $allowuser || !$cslink_chk ) die ("Direct Access to this location is not allowed");
// ----------------------------------------------




// гДЕЯЭ РЕКН БЮЬЕЦН ТЮИКЮ


?>



to ono stranicy statistiki voobshe ne otobrajaet.... (sorry chto na transliti, wrode y menya tyt ne pisher kirilizey) ЙХПХКХЖЖЮ...

Сообщение отредактировал biz - 18.09.05 - 20:49
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alecfyz
сообщение 18.09.05 - 21:21
Сообщение #6


Gorsk.net Studio
***

Группа: Admin
Сообщений: 1,852
Регистрация: 24.02.05
Пользователь №: 3



Во-первых, юзаем http://translit.ru/
Во-вторых, повторю: чтобы добавить/изменить редирект, нужно добавить/поправить ссылку в компоненте, и обязательно в самом файле добавить заголовок, который я привел в демо-файле 1.php (и естественно, в этом заголовке поправить имя юзера).
cool.gif


--------------------
Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alecfyz
сообщение 18.09.05 - 21:30
Сообщение #7


Gorsk.net Studio
***

Группа: Admin
Сообщений: 1,852
Регистрация: 24.02.05
Пользователь №: 3



Так! Стоп! Кажется я понял, что у вас за трабла.
Допустим, содержимое вашего файла такое:
CODE
<?php
   echo "Hello, WORLD";
?>

После вставки моего заголовочного кода вы получаете примерно такой код:
CODE
<?php
$allowuser = "admin";

$checkredir = $_SERVER['HTTP_REFERER'];
$myname = $_POST['check'];
$cslink_chk = $_POST['cslink_chk'];


if (strpos($checkredir, 'csredir') === FALSE || $myname != $allowuser || !$cslink_chk ) die ("Direct Access to this location is not allowed");
// ----------------------------------------------

?>
<?php
   echo "Hello, WORLD";
?>

Заголовочный код, который вы вставляете в свои файлы заканчивается тегом закрытия php-кода: ?> Но это сделано ТОЛЬКО для того, чтобы демо-файл вообще работал. То есть, вам НЕ нужно вставлять теги открытия и закрытия PHP. Правильный файл с заголовочным кодом будет выглядеть так:
CODE
<?php
$allowuser = "admin";

$checkredir = $_SERVER['HTTP_REFERER'];
$myname = $_POST['check'];
$cslink_chk = $_POST['cslink_chk'];


if (strpos($checkredir, 'csredir') === FALSE || $myname != $allowuser || !$cslink_chk ) die ("Direct Access to this location is not allowed");
// ----------------------------------------------
   echo "Hello, WORLD";
?>

cool.gif


--------------------
Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
biz
сообщение 18.09.05 - 21:33
Сообщение #8


Advanced Member
***

Группа: Members
Сообщений: 67
Регистрация: 18.09.05
Пользователь №: 1,530



УРАА!!!!!!!!!! работает!!!!!!!!!! спасибо большое smile.gif

Сообщение отредактировал biz - 18.09.05 - 21:36
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alecfyz
сообщение 18.09.05 - 21:37
Сообщение #9


Gorsk.net Studio
***

Группа: Admin
Сообщений: 1,852
Регистрация: 24.02.05
Пользователь №: 3



Для проверки, работает ли вообще ваш файл, измените заголовочный код так (добавляем строку):
CODE
$allowuser = "admin";

$checkredir = $_SERVER['HTTP_REFERER'];
$myname = $_POST['check'];
$cslink_chk = $_POST['cslink_chk'];


if (strpos($checkredir, 'csredir') === FALSE || $myname != $allowuser || !$cslink_chk ) die ("Direct Access to this location is not allowed");
echo "This file is WORK FINE!":

Видна ли теперь надпись "This file is WORK FINE!" ??
И что значит "Вообще ничего" ?? Абсолютно чистая страница?
cool.gif


--------------------
Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alecfyz
сообщение 18.09.05 - 22:47
Сообщение #10


Gorsk.net Studio
***

Группа: Admin
Сообщений: 1,852
Регистрация: 24.02.05
Пользователь №: 3



QUOTE
УРАА!!!!!!!!!! работает!!!!!!!!!! спасибо большое

smile.gif Ну вот и хорошо.
cool.gif


--------------------
Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic

 



Lo-Fi Version Time is now: 22.05.12 - 01:30
Рейтинг@Mail.ru Rambler's Top100 Яндекс цитирования