php - область видимости обнаруживает, почему var пуст в отрывке кода - PullRequest
0 голосов
/ 08 сентября 2010
$roidInfo = '';
$nomeDominio ='';
   if (isset($_GET['infoDominio']))
   {
     $nomeDominio = filter_input(INPUT_GET, 'nomeDominio', FILTER_SANITIZE_STRING);
     $dominioVo->setNome($nomeDominio);
     try 
     {
       ...
      $roidInfo = isset($infoDominio['roid']) ? $infoDominio['roid'] : '';
     }
     catch (EppCommandsExceptions $e)
     {
       ...
     } 

     //all well here, I get the dump with values:
     //var_dump($nomeDominio);
     //var_dump($roidInfo);
    }
    if (isset($_POST['atualizarDominio']))
    {
      var_dump($nomeDominio); //dump ""
      var_dump($roidInfo); //dump ""

В приведенном выше фрагменте я потерял значения $ nomeDominio и $ roidInfo, но я не понимаю, почему.Могу ли я получить вашу помощь, чтобы выяснить, почему это происходит?

ОБНОВЛЕНИЕ

Вот, точно такая же проблема , но с использованием СЕССИЙ:

<?php session_start(); ?>

<?php
 $roidInfo = '';
 $nomeDominio ='';

 if (isset($_GET['infoDominio']))
 {
    $nomeDominio = '123';
    try 
    {
      //...
      $roidInfo = '456';

      $_SESSION['nomeDominio'] = $nomeDominio;
      $_SESSION['roidInfo'] = $roidInfo;

      //retrieving the values. OK.
      var_dump($_SESSION['roidInfo']);
      var_dump($_SESSION['nomeDominio']);
     }
     catch (EppCommandsExceptions $e)
     {
       //...
     }
 }

 if (isset($_POST['atualizarDominio']))
 {
    //retrieving index undefined. not ok.
    var_dump($_SESSION['nomeDominio']);
    var_dump($_SESSION['roidInfo']);


    //all the rest... runs
 }

?>

Заранее спасибо, MEM

Ответы [ 3 ]

1 голос
/ 08 сентября 2010

Это был странный случай. Я смог передать значения из-за моих объявлений действий формы.

В первой форме у меня было:

 <form name="infoDominio" action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>"  method="get">

На втором бланке:

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>" name="atualizarDominio" method="post">

Если мы удалим информацию о действии из второй формы:

<form action="" name="atualizarDominio" method="post">

Это будет работать.

Спасибо всем, кто ответил, это, monvis, странный материал. : S

0 голосов
/ 08 сентября 2010

У вас есть два РАЗЛИЧНЫХ условия.один на $_GET['infoDominio'], один на $_POST['atualizarDominio'].Может быть, только один из них установлен, а другой нет?

Код "все хорошо" запускается, когда установлен $_GET['infoDominio'].«Не все хорошо» запускается, когда установлено $_POST['atualizarDominio'].Это две разные переменные!

edit:

ОК, как я обнаружил в обсуждении по первоначальному оригинальному вопросу - реальная проблема в том, что PHP не помнит $nomeDominio и $roidInfo между каждым запуском скрипта - вы должны использовать сессии или куки, чтобы запомнить их.

0 голосов
/ 08 сентября 2010

Действительно ли isset($_GET['infoDominio'] правда?Если это не так, $nomeDominio остается пустой строкой в ​​последнем блоке кода.

...