![]() ![]() |
| Alecfyz |
18.09.05 - 17:39
Сообщение
#1
|
![]() Gorsk.net Studio ![]() ![]() ![]() Группа: Admin Сообщений: 1,852 Регистрация: 24.02.05 Пользователь №: 3 |
Нам был задан вопрос:
QUOTE есть пользователи + администратор и есть статистика игры по кваке quake3, я ее сохраняю тут: 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/" И если я ничего не напутал --- Теперь разберем, что такое 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" -------------------------------------- Вот, собственно и все. Метод не претендует на совершенство, но работает Удачи. -------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| biz |
18.09.05 - 20:00
Сообщение
#2
|
|
Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 67 Регистрация: 18.09.05 Пользователь №: 1,530 |
QUOTE Модуль публикуем в той же позиции, что и юзерсоке меню (user-menu), но ниже юзер-меню; и говорим "Не показывать заголовок модуля". Так мы добьемся эффекта "еще одного" пункта юзер-меню. А это как? |
| Alecfyz |
18.09.05 - 20:16
Сообщение
#3
|
![]() Gorsk.net Studio ![]() ![]() ![]() Группа: Admin Сообщений: 1,852 Регистрация: 24.02.05 Пользователь №: 3 |
Ну например, юзерское меню опубликовано в позиции 'left'
Вот новый модуль, который вы скачали выше, нужно опубликовать тоже в позиции 'left'; поставить радиокнопку "Показывать заголовок модуля" в позицию "Нет". -------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| biz |
18.09.05 - 20:32
Сообщение
#4
|
|
Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 67 Регистрация: 18.09.05 Пользователь №: 1,530 |
THS A LOT !!!!!!!!!!!
IT WORKS !!!!!!!!!!!!!!!!!!!!1 |
| 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 |
| Alecfyz |
18.09.05 - 21:21
Сообщение
#6
|
![]() Gorsk.net Studio ![]() ![]() ![]() Группа: Admin Сообщений: 1,852 Регистрация: 24.02.05 Пользователь №: 3 |
Во-первых, юзаем
Во-вторых, повторю: чтобы добавить/изменить редирект, нужно добавить/поправить ссылку в компоненте, и обязательно в самом файле добавить заголовок, который я привел в демо-файле 1.php (и естественно, в этом заголовке поправить имя юзера). -------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| 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"; ?> -------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| biz |
18.09.05 - 21:33
Сообщение
#8
|
|
Advanced Member ![]() ![]() ![]() Группа: Members Сообщений: 67 Регистрация: 18.09.05 Пользователь №: 1,530 |
УРАА!!!!!!!!!! работает!!!!!!!!!! спасибо большое
Сообщение отредактировал biz - 18.09.05 - 21:36 |
| 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!" ?? И что значит "Вообще ничего" ?? Абсолютно чистая страница? -------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| Alecfyz |
18.09.05 - 22:47
Сообщение
#10
|
![]() Gorsk.net Studio ![]() ![]() ![]() Группа: Admin Сообщений: 1,852 Регистрация: 24.02.05 Пользователь №: 3 |
QUOTE УРАА!!!!!!!!!! работает!!!!!!!!!! спасибо большое -------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
![]() ![]() |
| Lo-Fi Version | Time is now: 22.05.12 - 01:30 |