php - 范围问题查找代码摘录中 var 为何为空的原因
$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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是一个奇怪的案例。由于我的表单操作声明,我能够传递这些值。
我在第一个表单上:
在第二个表单上:
如果我们从第二个表单中删除操作信息:
它将起作用。
谢谢所有回复的人,这是,我的,一个奇怪的东西。 :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:
On the second form:
If we remove the action information from the second form:
It will work.
Thank you all that have replied, this is, à mon avis, a weird stuff. :s
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.你有两个不同的条件。一个在
$_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.