Не нравятся результаты поиска? Попробуйте другой поиск!

Переменная PHP в допполе


     06.04.2014    Общие вопросы по PHP, Ламерские вопросы    1224

вопрос
Добрый день! Уже полдня бьюсь, не могу сообразить что и почему..
Имею скрипт (engine/modules/script.php).
Скрипт кушает переменную $fid и соответственно ей выдает информацию (script.php?fid=1234 - "Вы передали GET-запрос 1234"). Если переменная отсутствует - получаем ошибку "переменные не дошли, перепроверьте запрос"

В fullstory.tpl вставляю {include file="engine/modules/script.php?fid=1234"} и получаю ошибку "переменные не дошли, перепроверьте запрос"...

Как с этим бороться, подскажите, люди знающие?

Ответа пока нет


Комментарии пользователей (16)

D0Gmatist
225

794 | 281

D0Gmatist - 6 апреля 2014 09:48 - Местный

исходный код в студию

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

be3str
10 | 4

be3str - 6 апреля 2014 10:27 - Юзер

<?php
if (!empty($_GET["fid"])){
$file = 'Вы передали GET-запрос '.$_GET["fid"].', и он отобразился';
echo $file;
}else{
echo "переменные не дошли, перепроверьте запрос...";
}
?>

D0Gmatist
225

794 | 281

D0Gmatist - 6 апреля 2014 10:34 - Местный

<?php
if ( is_numeric( $_GET["fid"] ) ) {
$file = 'Вы передали GET-запрос '.$_GET["fid"].', и он отобразился';
echo $file;
}else{
echo "переменные не дошли, перепроверьте запрос...";
}
?>

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

be3str
10 | 4

be3str - 6 апреля 2014 10:43 - Юзер

Суть та же, так ничего и не изменилось...

rocksmart
64

307 | 115

rocksmart - 6 апреля 2014 10:02 - Юзер

переменные переданные таким путем объявляются автоматически средствами кода движка.

script.php


$fid = !empty($fid)  ? $fid : 0;

D0Gmatist
225

794 | 281

D0Gmatist - 6 апреля 2014 10:12 - Местный

А откуда взялась переменная $fid ...

Это было сделано?
$fid = $_GET['fid'];

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

rocksmart
64

307 | 115

rocksmart - 6 апреля 2014 10:19 - Юзер

Нет это было сделано engine/classes/templates.class.php

if ( isset($url['query']) AND $url['query'] ) {

                $module_params = array();

                parse_str( $url['query'], $module_params );

                extract($module_params, EXTR_SKIP);

                unset($module_params);
                

            }


При подключении файла через тег

{include file="engine/modules/script.php?fid=1234"}

D0Gmatist
225

794 | 281

D0Gmatist - 6 апреля 2014 10:48 - Местный

Я не понимаю что вы там намудрили

А
{include file="engine/modules/script.php?fid=1234"}
Б
<?php
if ( $_GET["fid"] ) {
    echo $_GET["fid"];
} else {
    echo "ПУСТО";
}
?>

Всё должно работать

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

rocksmart
64

307 | 115

rocksmart - 6 апреля 2014 10:53 - Юзер

будет пусто

D0Gmatist
225

794 | 281

D0Gmatist - 6 апреля 2014 10:58 - Местный

Перечитайте ПЫХПЫ мануал ... если пусо значит где то теряется или блокируется переменная

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

be3str
10 | 4

be3str - 6 апреля 2014 10:55 - Юзер

В том то и проблема, что все действительно должно работать в любых вариантах, но выходит ПУСТО
_______________________________________
Файлы движка кривыми руками не правил, ломать ничего не ломал, честно...
DLE 10.2, кстати

i_loves_ac_dc
7

235 | 41

i_loves_ac_dc - 6 апреля 2014 11:03 - Гости

Откуда берется ?
$_GET["fid"]

be3str
10 | 4

be3str - 6 апреля 2014 11:12 - Юзер

В каком смысле откуда, не совсем понял вопрос...

be3str
10 | 4

be3str - 6 апреля 2014 11:04 - Юзер

+ При прямом обращении к скрипту все хорошо, переменка выводится
+ вывод при обращении к script.php?fid=12345: переменные 12345 не дошли, перепроверьте запрос...
Это если написать вот так
<?php
if ( is_numeric( $_GET["fid"] ) ) {
$file = 'Вы передали GET-запрос '.$_GET["fid"].', и он отобразился';
echo $file;
}else{
echo 'переменные '.$_GET["fid"].' не дошли, перепроверьте запрос...';
}
?>

rocksmart
64

307 | 115

rocksmart - 6 апреля 2014 11:18 - Юзер

Бляха муха:

Когда к файлу script.php обращаешься как к модулю по ссылке - передача данных идет через $_GET

Когда подключаешь через тег то файл подключается через
преобразование строки $url['query'] в переменные для дальнейшей передачи в файл script.php

    if ( isset($url['query']) AND $url['query'] ) {
        $module_params = array();
        parse_str( $url['query'], $module_params );
        extract($module_params, EXTR_SKIP);
        unset($module_params);
    }

Подключение файла
    ob_start();
    $tpl = new dle_template();
    $tpl->dir = TEMPLATE_DIR;
    include $file_path."/".$file_name;
    return ob_get_clean();

заметь $file_name==script.php уже без ?fid=1234

Если хочешь что бы передача данных работала при обоих способах подключения - то можно типа такого
$fid = !empty($fid) ? $fid : '';
$fid = intval($_GET['fid']) ? $_GET['fid'] : $fid;

if ( $fid ) {
    echo $_GET["fid"];
} else {
    echo "ПУСТО";
}
?>

be3str
10 | 4

be3str - 6 апреля 2014 12:22 - Юзер

Когда к файлу script.php обращаешься как к модулю по ссылке - передача данных идет через $_GET

Можно поподробнее для самых тугодумов?

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

Похожие вопросы