Сложность передачи переменных включает использование глобальных переменных - PullRequest
0 голосов
/ 04 января 2012

У меня есть трехуровневое дерево для отображения контента на странице.Он использует include для отображения определенных страниц PHP на основе URL.Чего не происходит, так это того, что переменные не поняты во включенных файлах PHP.

index.php

// example url http://fakesite.com/?color=red&user=999
$user = $_GET['user'];

if ($_GET['color'] == 'red')        
       {$color = 'red';}
elseif ($_GET['color'] == 'white')      
       {$color = 'white';}
else 
       {$color = 'blue';}

global $color;
global $user;
include 'page2.php';

page2.php

global $color;
global $user;
echo 'hi '.$user.'I hear you like '.$color;

Ответы [ 4 ]

3 голосов
/ 04 января 2012

В этих $global строках вообще нет необходимости. Все переменные, определенные в основном скрипте, определены в файле include d. По сути, это все равно, что взять код в файле include d и поместить его вместо вызова include (с некоторыми исключениями)

0 голосов
/ 04 января 2012

index.php

<?php
    $user = $_GET['user'];

    if ($_GET['color'] == 'red')        
           {$color = 'red';}
    elseif ($_GET['color'] == 'white')      
           {$color = 'white';}
    else 
           {$color = 'blue';}
    include 'page2.php';
?>

page2.php

<?php
    echo 'hi '.$user.'I hear you like '.$color;
?>

глобальный пример

function dosomethingfunky(){
    global $user, $color;
    echo 'hi '.$user.'I hear you like '.$color;
}
0 голосов
/ 04 января 2012

Вы пытались удалить ВСЕ эти четыре глобальные линии?Я не знаю, в этом ли проблема, но они совсем не нужны!

При включении или требовании файла все объявленные выше переменные доступны для включенного / необходимого файла.

Если это не помогло, возможно, у вас неверный путь к include.

0 голосов
/ 04 января 2012

Эта строка:

include_once 'page2.php;

должна измениться на:

include_once 'page2.php';

У вас отсутствует цитата.

...