Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Переменная PHP в допполе

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


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

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

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

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

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


16 комментариев

D0Gmatist
Юзер

D0Gmatist - 6 апреля 2014 09:48 -

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

be3str
Юзер

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

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

D0Gmatist
Юзер

D0Gmatist - 6 апреля 2014 10:34 -

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

be3str
Юзер

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

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

rocksmart
Юзер

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

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

script.php


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

D0Gmatist
Юзер

D0Gmatist - 6 апреля 2014 10:12 -

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

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

rocksmart
Юзер

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
Юзер

D0Gmatist - 6 апреля 2014 10:48 -

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

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

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

rocksmart
Юзер

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

будет пусто

D0Gmatist
Юзер

D0Gmatist - 6 апреля 2014 10:58 -

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

be3str
Юзер

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

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

i_loves_ac_dc
Гости

i_loves_ac_dc - 6 апреля 2014 11:03 -

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

be3str
Юзер

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

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

be3str
Юзер

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
Юзер

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
Юзер

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

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

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

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

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

наверх