2015-05-08 2 views
0

Это мой URL:

http://localhost/messources/actes/palactes.php?mode=MODE_NEW 

В PHP У меня есть это:

if (isset($_GET['id'])) 
      { 
       $_SESSION['id'] = $_GET['id']; 
      }else{ 
       $_SESSION['id'] = $_SESSION['id']; 
      } 

, поскольку идентификатор не в URL, я ожидал бы весь этот блок не будет выполнен , $ _GET ['id'] не существует, поэтому значение должно быть NULL, поэтому isset() тестирует это.

Однако, я получаю уведомление PHP:

Undefined index: id in .... 

Что я должен сделать, чтобы избавиться от этого уведомления (я не хочу, чтобы добавить & идентификатор = к URL)

+0

ли вы начали сеанс? Вероятно, ошибка в этой строке: '$ _SESSION ['id'] = $ _SESSION ['id'];' – Rizier123

+1

'$ _SESSION ['id'] = $ _SESSION ['id'];' - это определенно бессмысленно – user4035

+0

Я начал свою сессию с session_start(), а $ _SESSION ['id'] все еще может быть NULL, так как не было установлено $ _GET ['id']. – thiebo

ответ

1

Использование

session_start();// Only if you havent started. 

if (isset($_GET['id'])) 
      { 
       $_SESSION['id'] = $_GET['id']; 
      }else{ 
       $_SESSION['id'] = 0; 
      } 

И вы можете проверить, равен ли он 0 или нет. Если 0, то NOt зарегистрирован еще не в системе.

0

Нет необходимости в - $_SESSION['id'] = $_SESSION['id'];.

ли это -

 if (isset($_GET['id'])) 
     { 
      $_SESSION['id'] = $_GET['id']; 
     } 
0

Это решение:

if(!isset($_SESSION['id']) && !isset($_GET['id'])){ 
     $_SESSION['id'] = NULL; 
} 

if(! isset($_SESSION['id']) && isset($_GET['id'])){ 
     $_SESSION['id'] = $_GET['id']; 
} 

Это не работает, когда $ _SESSION [ 'ID'] установлено.

0

Ваше чтение из идентификатора в сессии не определен

$_SESSION['id'] = $_SESSION['id']; 
0

По вашему вопросу,

Что я должен сделать, чтобы избавиться от этого уведомления (я не хочу, чтобы добавить & ID = к URL)

И ваш URL является

http://localhost/messources/actes/palactes.php?mode=MODE_NEW 

Ваш PHP код имеет

if (isset($_GET['id'])) 
      { 
       $_SESSION['id'] = $_GET['id']; 
      }else{ 
       $_SESSION['id'] = $_SESSION['id']; 
      } 

1) Как вы присвоить значение вашей $_GET['id'], потому что с тем, что у вас есть на вашем URL$_GET['id'] всегда будет возвращать NULL, так как он не имеет значения, в любом месте. Вы можете проверить, выполнив var_dump($_GET);, и ваш $_SESSION['id'] также вернет NULL. Повторите тест, используя var_dump($_SESSION);. Вы должны дать ему значение, прежде чем вы сможете получить что-либо, назначенное на $_GET['id'].См http://php.net/manual/en/reserved.variables.get.php

0

Функция вы ищете empty, который проверяет, если он существует, и не один из следующих значений:

  • «» (пустая строка)
  • 0 (0 как целое число)
  • 0.0 (0 как поплавок)
  • "0" (0 в виде строки)
  • NULL
  • FALSE
  • array() (пустой массив)
  • $ var; (Переменная объявлена, но без значения)

Так как я хотел бы переписать ваш код

if (!empty($_GET['id'])) { 
    $_SESSION['id'] = $_GET['id']; 
} else { 
    $_SESSION['id'] = $_SESSION['id']; 
} 
Смежные вопросы