массив имен = получить правильный файл - PullRequest
3 голосов
/ 25 октября 2011

Я пытаюсь написать список файлов и поместить их в массив.Нужно изменить содержимое на странице, вызывающей внешнее содержимое.

Я нашел этот маленький кусочек кода и пытаюсь заставить его работать. ССЫЛКА (последний комментарий)

$all_pages=array("main","page_two","page_three");    
$page = $_GET['page'];    
if( isset($page) and array_key_exists("$page", $all_pages) ) // added a missing ')'
{
include('subfolder/folder/'.$_GET['$page'].'.html');
}

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

Я (пытаюсь) назвать файлы как:

<ul>    
   <li><a href="template.php?main">Main content</a></li>
   <li><a href="template.php?page_two">Second content</a></li>
   <li><a href="template.php?page_three">Third content</a></li>
</ul>

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

Вы должны будете использовать in_array() для проверки допустимых значений. array_key_exists требует, чтобы имена страниц были ключами массива.

Во-вторых, $_GET["page"] будет пустым, поскольку у вас не было параметра get с таким именем. Вы должны адаптировать свои ссылки:

   <li><a href="template.php?page=main">Main content</a></li>
   <li><a href="template.php?page=page_two">Second content</a></li>
   <li><a href="template.php?page=page_three">Third content</a></li>

(Или иначе используйте $_SERVER["QUERY_STRING"]. Но вы , вероятно, не хотите этого делать.)

Ваша третья проблема использовалась:

include('subfolder/folder/'.$_GET['$page'].'.html');
                            ^^^    ^^^

Вы должны были использовать только переменную $page, которую вы уже прочитали из $_GET. Использование этого имени в качестве ключа снова не будет работать. И вы дополнительно использовали его в одинарных кавычках (вдвойне неправильно, но, к счастью, безрезультатно).

Так правильно будет:

$all_pages = array("main", "page_two", "page_three");    
$page = $_GET['page'];
if ( in_array($page, $all_pages) )
{
    include('subfolder/folder/'.$page.'.html');
}
1 голос
/ 25 октября 2011

Измените array_key_exists на in_array.Кроме того, переменная $ page может быть установлена, но быть пустой, убедитесь, что она не пуста с помощью if( !empty( $page) && ... и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...