php - 范围问题查找代码摘录中 var 为何为空的原因

发布于 2024-09-18 17:29:31 字数 1523 浏览 2 评论 0原文

$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 的值,但我不明白为什么。我可以请你帮忙找出为什么会发生这种情况吗?

更新

这是完全相同的问题,但是通过使用SESSIONS:

<?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

$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 ""

On the above excerpt I lost the value of $nomeDominio and $roidInfo but I don't understand why. Can I have your help to find out why is this happening?

UPDATE

Here is, the exact same issue, but by using SESSIONS:

<?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
 }

?>

Thanks in advance,
MEM

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

窝囊感情。 2024-09-25 17:29:31

这是一个奇怪的案例。由于我的表单操作声明,我能够传递这些值。

我在第一个表单上:

 <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">

它将起作用。

谢谢所有回复的人,这是,我的,一个奇怪的东西。 :s

This was a weird case. I was able do pass the values due to my form action declarations.

I had, on the first form:

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

On the second form:

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

If we remove the action information from the second form:

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

It will work.

Thank you all that have replied, this is, à mon avis, a weird stuff. :s

生死何惧 2024-09-25 17:29:31

isset($_GET['infoDominio'] 实际上是真的吗?如果不是这样,$nomeDominio 在最后一个代码块中保留一个空字符串。

Is isset($_GET['infoDominio'] actually true? If thats not the case $nomeDominio stays an empty string in the last code block.

疾风者 2024-09-25 17:29:31

你有两个不同的条件。一个在 $_GET['infoDominio'] 上,一个在 $_POST['atualizarDominio'] 上。也许只设置了其中之一而另一个没有设置?

当设置 $_GET['infoDominio'] 时,将运行“all well”代码。当设置 $_POST['atualizarDominio'] 时,会运行“not all well”。它们是两个不同的变量!

编辑:

好的,正如我在原始问题下的讨论中发现的那样 - 真正的问题是 PHP 不记得每次运行之间的 $nomeDominio$roidInfo脚本 - 你必须使用会话或cookie来记住它们。

You got two DIFFERENT conditions. one on $_GET['infoDominio'], one on $_POST['atualizarDominio']. Maybe only one of them is set and the other is not?

The "all well" code is run when $_GET['infoDominio'] is set. The "not all well" is run when $_POST['atualizarDominio'] is set. They are two different variables!

edit:

OK, as I found in the discussion under the original original question - the real issue is that PHP doesn't remember $nomeDominio and $roidInfo between each run of the script - you have to use sessions or cookies to remember them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文