2012-06-26 3 views
0

Я работаю на веб-сайте, и это то, что у меня есть мой index.php:Сообщение об ошибке всякий раз, когда я открываю страницу index.php

<?php 

    $p  = $_GET['p']; 
    $pages = array('home', 'culture', 'design', 'art', 'about'); 
    $path = 'http://localhost:8080/projects'; 

    include('header.php'); 


    if(!isset($p) || !in_array($p, $pages)) { 
     include('header.index.php'); 
     include('content.index.php'); 
    } else { 
     switch($p) { 
      case "home"; 
       include('header.home.php'); 
       include('content.home.php'); 
      break; 
      case "culture"; 
       include('content.culture.php'); 
      break; 
      case "design"; 
       include('content.design.php'); 
      break; 
      case "about"; 
       include('content.about.php'); 
      break; 
      case "art"; 
       include('content.art.php'); 
      break; 
      default: 
       include('content.index.php'); 
      break; 
     } 
    } 
    include('footer.php'); 
    ?> 

я получаю следующее сообщение об ошибке:

**Notice: Undefined index: p in C:\wamp\www\projects\index.php on line 3 
Call Stack 
# Time Memory Function Location 
1 0.0523 680200 {main}() ..\index.php:0** 
+0

'$ _GET [ 'р'] 'не задавать. –

ответ

1

при назначении р изначально, р не установлен в $ _GET Таким образом, вы можете сделать это

$p  = isset($_GET['p']) ? $_GET['p'] : null; 

Если вы не заботитесь о нет tices, вы можете отключить их в своем php.ini, изменив error_reporting на E_ALL & ~ E_NOTICE, однако я бы не рекомендовал его

+0

Не рекомендуется отключать их. Работа с ними может быть немного раздражающей, но вы действительно хотите их исправить. – Evert

+0

Вы правы, я обновил свой комментарий. Некоторые места, с которыми я работал, непреклонны в том, чтобы не допустить его, потому что «нам не нравится писать дополнительный код для проверок» – Kris

+0

Спасибо за вашу помощь. Поэтому я предполагаю, что Крис написал бы трюк. Согласятся ли все с этим? – user1170376

-1

Это НЕ ошибка. Как заявляет журнал, это УВЕДОМЛЕНИЕ. Он предназначен для информирования вас о потенциальной проблеме, но не позволяет сценарию быть выполненным.

В этом случае интерпретатор сообщает вам, что массив $ _GET не содержит элемент с индексом 'p'. Он не инициализирован, вероятно, потому, что в этом случае он не был указан в запросе.

Попробуйте протестировать сначала, если элемент существует, прежде чем пытаться получить к нему доступ. Для этого используйте isset().

+0

Это должно рассматриваться как ошибка. Нет скриптов PHP. – Evert

+0

Спасибо за вашу помощь. Поэтому я предполагаю, что Крис написал бы трюк. Согласятся ли все с этим? – user1170376

0

Я новичок здесь, но только предложение может быть попробовать! Пусто

if(!empty($p) || !in_array($p, $pages)) { 
     include('header.index.php'); 
     include('content.index.php'); 
    } 
0

Переключатель заявление у вас есть несколько поддельный, тем более у вас уже есть $page массива. Вы на самом деле хотите, чтобы проверить, если страница существует или загрузить страницу индекса (возможно?):

$p  = isset($_GET['p']) ? (string) $_GET['p'] : NULL; 
$pages = array('home', 'culture', 'design', 'art', 'about'); 
$path = 'http://localhost:8080/projects'; 
if (!in_array($p, $pages)) { 
    $p = 'index'; 
} 
// include $p based on $path 

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


Поэтому код после того, как после того, что @hakre предложил должен выглядеть следующим образом:

$p  = isset($_GET['p']) ? (string) $_GET['p'] : NULL; 
$pages = array('home', 'culture', 'design', 'art', 'about'); 
$path = 'http://localhost:8080/projects'; 

include('header.php'); 
if (!in_array($p, $pages)) { 
    $p = 'index'; 
    include('header.index.php'); 
    include('content.index.php'); 
} 

Спасибо @hakre за вашу помощь ..

+0

Таким образом, код должен выглядеть так после добавления заголовка: – user1170376

+0

Возможно. Или каждый из них должен позаботиться о том, чтобы добавить заголовок на свой собственный. – hakre

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