Передача данных по ссылке - какой ужас!

FaRaOn

Новичок
Передача данных по ссылке - какой ужас!

Я разрабатываю сайт по структуре модулей, то есть чтобы открылась страничка Information(Например) нужна такая ссылка: ....index.php?mod=information
С этим все было ок, но мне понадобилось сделать так чтобы
при нажатии на ссылку модуль information перегрузился и переменной $a(например) присвоилось какое либо значение.
Я пробовал по всякому - никак. Единственное, что приходило в голову: ...index.php?mod=information?a=значение.
Я уверен на 100% , что это ужасное извращение:D работать не будет.:mad:
Подскажите как сделать чтобы значение присвоилось.
Если можно, то чтобы ничего лишнего не показывалось в адресной строке, а то сейчас народу много, кто поломать захочет... Зарание спасибо
 

jer

...
1. передаваться будет, только не
index.php?mod=information?a=значение, a
index.php?mod=information&a=значение

2. насчет поломать - зависит от того, что ты в этой переменной передаешь и как потом обрабатываешь. (почему, например, через переменную mod кто-нибудь не захочет поломать?)

3. чтобы скрыть переменную - ее можно хранить в сессии, и она дальше сервера никуда не уйдет.

4. более точно можно сказать, если объяснишь назначение этой переменной.
 

FaRaOn

Новичок
Назначение переменной :
идет такая проверка:
PHP:
if($a!=""){
читаем файл $a.txt
}
Кстати index.php?mod=information&a=значение не срабатывает.
Похоже на то, что он пытаеться найти переменную в index.php, а она в information.php(в этом модуле).
Хотя модуль инкладиться в index.php... Знаю точно что неработает, вот поглядите:
PHP:
<?php
foreach($link_items as $link)
{
$linka = rus2trn($link);
$article ="";
?>
<tr><td>
<a href='?mod=information&article=mods/txt/<?php echo $linka; ?>.txt'><? echo "$link";?></a>
</td></tr>
<?
}
if($article!=""){
$file_sz = filesize($linka);
$file = fopen($linka, 'r');
$text = fread($file,$file_sz);
fclose($file);
echo "<td>".$text."</td>";
}
?>
 

jer

...
ужас!

читайте http://faq.phpclub.ru/register_globals

и инклудить файл по переданной пользователем переменной - дыра в безопасности.
 

FaRaOn

Новичок
Может подскажешь тогда другой путь решения задачи?
Без разниц с файлами работать или с БД.
Как заметил у меня практически автоматом строит ссылки, так вот желательно чтобы было также, и грузилось примерно таким же методом
PHP:
echo $text;
 

jer

...
тут подобное 1000 раз обсуждалось...

что-то вроде такого:

switch ($_GET['mod'])
{
case 'information' : include 'information.php'; break;
case 'news' : include 'news.php'; break;
...
}

ps: опиши для начала задачу, тогда можно будет подсказать.
 

FaRaOn

Новичок
Допустим есть каталог : mods/txt/
Там лежат различные файлы:
В нашем модуле information выводим ссылки(автоматом) примерно как было.
И если жмем на ссылку чтобы сайт не уходил к текстовику а добавлял сам текст в information.
Допустим на месте переменной $text.
Я хочу сохранить модульное строение сайта, а если делать просто ссылку, то он уходит с information что категорически противоречит моему жеданию. Надеюсь доступно.

Информайшн -> ссылка на текст-> Информайшн(модифицированный с текстом)
 

jer

...
т.е. у тебя в модуле information предполагаются подразделы?
ну тогда можешь передавать 2-переменные.
?mod=<модуль>&sub=<подраздел>

и в зависимости от подраздела инклудь нужный файл или текст выводить из *.txt, только через switch как я выше показал а не напрямую.

ps: найди и почитай тему про организацию сайта через index.php?<модуль + его параметры> против "для каждого модуля - свой файл"

pss: может тебе лучше в /mods/information/ сделать index.php и через него реализовать работу с данным модулем, тогда передавать mod=information не придется. но это уже детали. модульность можно очень по разному реализовывать. у меня, например, совсем все не так %)
 

FaRaOn

Новичок
Спасибо большое за помощь. Вроде разобрался вот кусок кода,
глянь так или нет, если чего я подправлю, и оставим чтоб другие могли быстрее понять как решить проблему.
Код
PHP:
...
function submod($sub) {
$sub='mods/txt/'.$sub.'.txt';//Это путь к TXT
return $sub;
}
...
switch ($_GET['sub'])
{
case 'Ustav' : $file_p=submod($sub);
$file_sz = filesize($file_p);$file = fopen($file_p, 'r');
$text = fread($file,$file_sz);fclose($file);
echo "<td><h3 align=center>Устав</h3>
<p>".$text."</p></td>"; break;
case 'Senorbl i senewali' : $file_p=submod($sub);
$file_sz = filesize($file_p);$file = fopen($file_p, 'r');
$text = fread($file,$file_sz);
fclose($file);echo "<td>".$text."</td>";break;
case 'Sozdateli sayta' : $file_p=submod($sub);
$file_sz = filesize($file_p);$file = fopen($file_p, 'r');
$text = fread($file,$file_sz);
fclose($file);echo "<td>".$text."</td>";break;
}?>
Все это извращение заработало великолепно!!!
jer: еще раз, огромное спасибо!
 

Bloody

Guest
А если я твоему скрипту скормлю в URL &sub=/usr/passwd%00 ?
 

FaRaOn

Новичок
Ну и что корми...
Я и сам попробывал - ничего не происходит, за что
Спасибо jer
 
Сверху