2013-09-05 2 views
0

Я довольно новичок в PHP. Я научился использовать «include», чтобы включить HTML и PHP-файлы в мою PHP-страницу. Однако я пытаюсь включить страницу PHP и передавать переменные одновременно. Моя первая попытка была такова:Включить страницу с переменными

include 'localhost/blah/test.php?var1=20&var2=30'; 

Но это дает мне эту ошибку:

Warning: include(...): failed to open stream: No such file or directory in C:\xampp\htdocs\blah\index.php on line 78 

Я предполагаю, что включают в себя только позволяет мне открыть файл, а не URL. Я сделал поиск в google и обнаружил, что если allow_url_fopen включен в моем файле php.ini, я должен это сделать. Я проверил php.ini, и он действительно включен.

ИЗМЕНИТЬ ПОСЛЕ ОТВЕТЫ И КОММЕНТАРИИ:

Тогда кажется, что я хочу сделать, не будет работать таким образом. В конце концов это то, что мне бы хотелось:

На index.php, когда пользователь нажимает на LINK_A, перезагружайте только #DIV_FOO с blah.php? Var = A.

Если пользователь нажимает LINK_B, перезагрузите только #DIV_FOO с помощью blah.php? Var = B.

Моя страница массивная, и я пытаюсь ограничить нагрузку, просто запрашивая «подстраницу» за раз, вместо того, чтобы запрашивать весь большой index.php. Как бы вы предложили это сделать?

Чтобы добавить к моему предыдущему комментарию несколько яснее: index.php будет включать blah.php. Если пользователь нажимает на ссылку, я не хочу перезагружать index.php, но только blah.php изменен на blah.php? Var = A. Надеюсь, вы меня понимаете ...

+0

Можете ли вы объяснить свои аргументы в пользу того, что вы хотите это сделать? например, это для шаблонов?С немного более глубоким пониманием мы могли бы предложить лучшее решение (например, возможно, функция сделает ваш код чище) – Scuzzy

ответ

0

Для этого у вас есть, чтобы включать в себя полное доменное имя

http://php.net/manual/en/function.include.php

// Won't work; looks for a file named 'file.php?foo=1&bar=2' on the 
// local filesystem. 
include 'file.php?foo=1&bar=2'; 

// Works. 
include 'http://www.example.com/file.php?foo=1&bar=2'; 
1

нет необходимости разбирать переменные, просто определить как «нормальный

$var1=20; 
$var2=30; 

include '/PATH/test.php'; 

и не разбирайте внешний файл, если его размещено локально

2

Даже если вы можете включать внешние файлы по URL-адресу, вы все равно не сможете передавать переменные в него как часть URL-адреса. PHP не выполняет код, который он включает во время включения, - только когда поток программы добирается до него.

Однако нет необходимости. Включенный код получает объем, в котором он включен, так что вы можете объявлять переменные, а затем включить ваш код и ваш включенный код будет иметь доступ к объявленным переменным:

main.php файл

<?php 
$a = 5; 
$b = 10; 
include("extra.php"); 
?> 

extra.php

<?php 
$c = $a * $b; 
echo $c;  // 50 
?> 
+0

Тогда кажется, что я хочу сделать, не будет работать таким образом. В конце концов это то, что мне бы хотелось: На index.php, когда пользователь нажимает на LINK_A, перезагружайте только #DIV_FOO с помощью blah.php? Var = A. Если пользователь нажимает LINK_B, перезагрузите только #DIV_FOO с помощью blah.php? Var = B. Моя страница массивная, и я пытаюсь ограничить нагрузку, просто запросив «подстраницу» за раз, вместо того, чтобы запрашивать весь большой index.php. Не уверен, что я правильно говорю, но если вы понимаете, что я говорю, как бы вы предложили это сделать? – Juicy

+0

Чтобы добавить к моему предыдущему комментарию несколько яснее: index.php будет включать blah.php. Если пользователь нажимает на ссылку, я не хочу перезагружать index.php, но только blah.php изменен на blah.php? Var = A. Надеюсь, вы меня поняли ... – Juicy

+0

Если вы хотите изменить только часть страницы, вам понадобятся Javascript и AJAX, чтобы сделать это на стороне клиента. Если вы действительно хотите, чтобы PHP это выполнял, вам придется перезагрузить index.php, но вы можете использовать переменную querystring и условно использовать файлы на основе этого. Например, 'index.php? Page = 1', затем в index.php' if ($ _GET ['page'] == 1) {include ("page1.php");} 'и т. Д. –

0

Затем вы включаете какой-либо файл в текущем сценарии все переменные, такие, как в базовом сценарии. Remeber, тогда вы включаете файлы и работаете с объектными переменными, это не сработает.

Смежные вопросы