Сначала о том, как получить доступ к переменным GET Вы проверяете значение, используя $_GET["pg"] == false
. Обратите внимание, что это выражение не будет делать то, что вы ожидаете во многих ситуациях. На самом деле значение никогда не будет напрямую false
. Единственный способ, которым он будет равен false
, если он пустой или не установлен (в этом случае вы также получите предупреждение компилятора, которого следует избегать). Обычно более безопасный способ проверить, было ли установлено значение, использовать isset( $_GET["pg"] )
.
Следующее, что я хочу решить, - это проблема безопасности, которую вы представляете. Вы используете значение GET напрямую, чтобы включить файл с этим именем. Если бы я был пользователем со злым умыслом, я мог бы легко установить значение pg
на что-то, чего вы обычно не ожидаете и которое каким-то образом нарушает ваш сайт. Как правило, следует избегать использования данных, введенных пользователем каким-либо образом (параметры запроса - это пользовательские данные), и сначала обязательно их очистить. Хороший способ сделать это, когда вы планируете использовать значение в качестве основы для страницы, которую вы хотите включить, - это иметь некоторый белый список допустимых / разрешенных значений. Затем вы можете проверить, находятся ли введенные данные в этом белом списке, и если это так, добавьте правильную страницу. Другой простой способ - использовать оператор switch
, чтобы просто пройти через все принятые случаи.
Теперь, наконец, к вашей проблеме: я не уверен, что это была просто ошибка, когда вы опубликовали код, но в файле 1 отсутствует включение файла 2. Таким образом, вы никогда не включите файл 3, и, конечно, переменная никогда не будет установлена.
Другая проблема может заключаться в использовании значения GET. Если значение не содержит точное имя файла (как в регистре и без лишних пробелов), файл не будет найден. Хорошей идеей является вывод имени файла, который вы хотите включить в файл 2, просто чтобы проверить, не совершаете ли вы какие-либо ошибки. Белый список, как описано выше, будет еще одним способом убедиться, что вы пытаетесь включить правильный файл.
Наконец, вы должны включить отчеты об ошибках на своем сервере, вы можете сделать это либо в конфигурации вашего сервера, либо добавив следующую строку в начало вашего первого файла (т.е. файл 1):
error_reporting( E_ALL );
Таким образом, вы получите ошибки и предупреждения, которые сообщат вам, если во время выполнения произошло что-то неожиданное, и вы могли бы легче увидеть свою ошибку.
Старый ответ
В общем, это работает так:
Файл 1:
<?php
include 'file2.php';
echo $myVariable; // prints 'Hello World!'
?>
Файл 2:
<?php
include 'file3.php';
?>
Файл 3:
<?php
$myVariable = 'Hello World!';
?>