Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: PHP. include_once(GET_way)  (Прочитано 14782 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dukalys
Гость
« : 09-03-2009 06:12 » 

Проблема такого рода. в интеренете не нашёл решения этой проблемы необходимо вызвать Php скрипт
include_once("test.php?d=1"); из другого скрипта!!! но прикол в том что не просто вызвать а с указанием переменных методом get
щас всё по порядку
есть 2 скрипта test2.php & test.php
test2.php

<?php
include_once("test.php?d=1");
echo $k;
?>

test.php

<?php
$k = "123";
?>

после вызова test2.php валятся ошибки, толкового описания в инете которых я не нашёл!

Warning: include_once(test.php?d=1) [function.include-once]: failed to open stream: No error in C:\Server\Apache2.2\www\test2.php on line 11

Warning: include_once() [function.include]: Failed opening 'test.php?d=1' for inclusion (include_path='.;C:\php5\pear') in C:\Server\Apache2.2\www\test2.php on line 11

Notice: Undefined variable: k in C:\Server\Apache2.2\www\test2.php on line 12

Путём не сложных вычислений видно что данная проблема возникает при указании в include_once вызова скрипта содержащего значение какой либо переменной в данном случае ?d=1, без неё всё работает!!!! пожалуйста помогите очень нужно , 2 дня проковырял  Здесь была моя ладья...
Записан
Dukalys
Гость
« Ответ #1 : 09-03-2009 08:46 » 

Разобрался. описываю что сделал :
т.к. include вызывает код скрипта на выполнение в этот скрипт то переменные из одного в другой передаются сами
в данном случае d=1 можно передать в test след образом (а хотелось GET-ом)
test2.php

<?php
$url = "d=1&p=2&c=3"; //Сразу комплект переменных
include_once("test.php");
echo $k;
?>

test.php
<?php
parse_str($url); //Тут формируем 3 переменных $d $p $c  с которыми можем сдесь работать
$k = "123";
?>

failed to open stream: No error in Возникала изза передачи в include_once переменных в названии скрипта (видимо разрешено только передавать название без параметров)

Записан
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #2 : 09-03-2009 10:08 » 

file1.php
Код:
выполняем разные действия и показываем html

file1.html
Код:
<a href="file2.php?some_id=123">

file2.php
Код:
$id = $_GET['some_id'];


Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 09-03-2009 10:30 » 

Dukalys, вместо гадания на кофейной гуще, лучше бы прочел мануал!

http://ru.php.net/manual/ru/function.include.php
http://ru.php.net/manual/ru/filesystem.configuration.php#ini.allow-url-fopen
http://ru.php.net/manual/ru/wrappers.php

Нормально, include() принимает только путь+имя локального файла. Путь+имя может быть абсолютным, относительным или совсем не содержать пути, а только имя файла.

Если опция allow_url_fopen включена, то разрешена форма, аналогичная формату URL. Эта форма не может быть сокращенной!!!

Код: (PHP)
<?php
include ("http://zopa.s.ruchkoi.com/file2.php?a=1&b=2&c=3");
?>

Метод, описанный тобой в ответе №1, тоже имеет право на существование. Но надо понимать, как передавать параметры.

http://www.php.net/manual/ru/reserved.variables.php

Стоит предварительно сохранить содержимое переменных, нужных твоей программе, и присвоить им новое значение, какое было бы в случае, если бы второй скрипт запустился бы "естественным" путем.

Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dukalys
Гость
« Ответ #4 : 09-03-2009 16:53 » 

Спасибо за разъяснение
Директива allow_url_fopen = On

Цитата
Нормально, include() принимает только путь+имя локального файла. Путь+имя может быть абсолютным, относительным или совсем не содержать пути, а только имя файла.
Вкурсе, но почему у меня не работало понять до сих пор не могу  Пробовал и с абсол и с относит путём и без пути всегда ошибка была (по перебор это не метод как выразились выше) , сейчас всё без ошибок выполняется проверил методом
Код:
<?php
include ("http://zopa.s.ruchkoi.com/file2.php?a=1&b=2&c=3");
?>

Понял что только разрешена форма, аналогичная формату URL!!!

Насчёт глобальных переменных
Я пробовал использовать GLOBALS передавать данные через сессию через куки но всё без результатно, а потомучто скрипт просто напросто не вызывался, была ошибка при вызове
include ("file2.php?a=1&b=2&c=3"); (а мне видимо казалось почемуто что он выполняется и я всё хотел передавать переменные , а они ни в какую не лезли, совсем видимо с катух мозг слетел)

Всем спасиб поставили мну на место.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 09-03-2009 18:33 » 

Dukalys, мой совет: в мануале PHP надо читать не только верхние строчки, а всю страницу, включая комментарии - там часто указаны примеры работы, баги разных версий и методы их обхода. Так можно найти много интересного.

Какая у тебя версия PHP?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dukalys
Гость
« Ответ #6 : 10-03-2009 05:13 » 

Версия  РHP 5.2.6
Вот собстенно, а в мануалах по одному пишут приходиться переделывать под себя. а на счёт того что там в примечаниях написано как баги обойти (ну не всегда, или не доходчиво))
Записан
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #7 : 10-03-2009 07:13 » 

а на счёт того что там в примечаниях написано как баги обойти (ну не всегда, или не доходчиво))

А они не всегда есть)))
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 10-03-2009 07:40 » 

PHP 5.1.6.

Проверка опций:

test.php
Код: (PHP)
<?php

header('Content-type: text/plain; charset=utf-8');

echo 'allow_url_fopen=', ini_get('allow_url_fopen') ? 'On' : 'Off';

?>

Код:
allow_url_fopen=On


Тестирование:

file1.php
Код: (PHP)
<?php

header('Content-type: text/plain; charset=utf-8');

echo "file1.php\n";

include('http://my.domain.com/file2.php?a=1&b=2&c=3');

echo "finish";

?>

file2.php
Код: (PHP)
><?php

echo "file2.php\n";

print_r($_GET);

?>

Результат:
Код:
file1.php
file2.php
Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)
finish
« Последнее редактирование: 10-03-2009 07:47 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #9 : 10-03-2009 07:59 » new

Вообще, на сколько я понимаю, использование allow_url_fopen, не очень хорошо и можно делать там где ты хозяин, допустим код с использованием данной функции не везде может выполниться.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines