2014-02-05 2 views
0

Я получил эту строку кода прямо здесь:Php навигации вопрос

<?php include_once('pages/component/header.php') ?> 
<?php include_once('pages/component/nav.php') ?> 
<!-- BODY --> 
<?php 
$action=$_GET['status']; 
switch($action) 
{ 
    case 'about': include_once "pages/about.php";break; 
    case 'portfolio': include_once "pages/portfolio.php";break; 
    case 'contact': include_once "pages/contact.php";break; 
    default : include_once "pages/default.php";break; 

} 
?> 
<?php include_once('pages/component/footer.php') ?> 

, но когда я переключаю в к странице, на WAMP локальный, я получаю эту ошибку, говоря:

Примечание: Undefined индекс : статус в C: \ wamp \ www \ index.php в строке 5

Любое тело знает, почему это происходит?

Он отлично работает, когда я загружаю его на свой FTP.

+1

Я подозреваю, в обоих случаях вы пытаетесь читать несуществующий член '$ _GET', но ваша система WAMP устанавливается с другим значением' error_reporting' в php.ini. Если в строке запроса нет статуса, вы можете подавить ошибки, изменив 5-ю строку на '$ action = @ $ _ GET ['status'];' –

+0

Это работало как удовольствие. Спасибо – user3273001

ответ

1

Проблема заключается в том, что вы не первый проверить, есть ли $_GET['status'] переменная. Например, если вы перейдете на свой URL-адрес следующим образом: http://localhost/index.php ИЛИ http://localhost/, то нет $_GET набор переменных. С кодом, который у вас есть, он всегда будет работать до тех пор, пока у вас не будет ?status=. Вы должны установить эту переменную, если вы собираетесь ее использовать.

Лучше сначала проверить, чтобы увидеть, есть ли переменная $ _GET в URL. Это должно решить вашу проблему:

<?php include_once('pages/component/header.php') ?> 
<?php include_once('pages/component/nav.php') ?> 
<!-- BODY --> 
<?php 
$action= (isset($_GET['status'])) ? ($_GET['status']) : (''); 
switch($action) 
{ 
    case 'about': include_once "pages/about.php";break; 
    case 'portfolio': include_once "pages/portfolio.php";break; 
    case 'contact': include_once "pages/contact.php";break; 
    default : include_once "pages/default.php";break; 

} 
?> 
<?php include_once('pages/component/footer.php') ?> 
+1

У вас есть синтаксическая ошибка. Это должно быть '? ...: 'вместо': ...? ' –

+0

Поймал! Благодаря! – Armin

+0

Пробовал это, но получаю синтаксическую ошибку.Im довольно новичок, когда дело доходит до PHP .. – user3273001

1

Это означает, что $_GET['status'] не определен. Это относится к параметрам запроса, так index.php?status=something

Вы можете проверить на него первым, как if(isset($_GET['status'])){

0

Он говорит, что $_GET['status'] просто не существует. Это не ошибка, это уведомление.

Разница между вашей локальной средой и удаленной конфигурацией. Это уведомление все еще существует, но оно просто не отображается. Вы можете настроить его через переменные display_errors и error_reporting в PHP.ini или, альтернативно, настроить их во время выполнения на PHP.

Чтобы решить эту проблему, вы можете просто проверить, существует ли она до ее использования.

$action=isset($_GET['status'])?=$_GET['status']:''; 

или

$action=empty($_GET['status'])?=$_GET['status']:''; 

empty() функция также проверяет, если она существует (isset() функциональность), а также проверить, если он не пустой.

0

Он по-прежнему выдает уведомление на вашем веб-сервере, но ваша конфигурация веб-сервера не позволяет отображать его на экране.

Избавьтесь от него, используя isset().

if(isset($_GET["status"]) { 
    $action = $_GET['status']; 
} else { 
    $action = ""; 
} 
Смежные вопросы