我有一个表单发布到一个页面,我有一个奇怪的问题,我从POST数据中获取值。正如您所看到的,在运行条件之前,我可以检查image_id、vote和fb_id_form是否都已设置。
javascript警报运行,因此我知道设置了三个变量。但我得到的是令人困惑的。我得到了第一个警告窗口,上面写着“有效”。然后我会看到两个空白的警告窗口。当我试图警告他们时,fb_id_form怎么可能被‘设置’(通过条件)却没有值呢?
if(isset($_POST['image_id']) && isset($_POST['vote']) && isset($_POST['fb_id_form'])){
$image_id = $mysqli->real_escape_string($_POST['image_id']);
$vote = $mysqli->real_escape_string($_POST['vote']);
$fb_id_form = $mysqli->real_escape_string($_POST['fb_id_form']);
echo "<script>alert('worked');</script>";
echo "<script>alert('".$fb_id_form."');</script>";
echo "<script>alert('".$_POST['fb_id_form']."');</script>";
}这是表单数据(在同一页上):
echo "<form method=\"post\" action=\"\">
<input type=\"hidden\" name=\"image_id\" value=\"".$id."\" />
<input type=\"hidden\" name=\"vote\" value=\"1\" />
<input type=\"hidden\" name=\"fb_id_form\" value\"".$fb_id."\" />
<input type=\"submit\" name=\"submitvote\" value=\"Vote\" />
</form>";这是问题所在。我在表单之前回显了一个$fb_id警报,它给了我正确的值。当我提交它的时候,我想这个值丢失了。
发布于 2012-12-01 01:11:34
因为如果$_POST['fb_id_form']包含空字符串,则isset仍然为真。您想要使用empty()
isset vs empty link
empty与isset有很大的不同。首先,最明显的事情是它以与isset相反的方式工作,但它还有更多的东西。Empty将为所有内容返回true,如果设置为false,则还将返回true。
还将返回空字符串、空数组、字符串“0”、数字0或false。
发布于 2012-12-01 01:09:41
当变量被赋值且不为空时,将设置变量(isset()为true)。这意味着包含空字符串("")的变量实际上是集合的。参见documentation。
要检查变量是否为空,请使用empty()或使用$mystr === ""检查。
发布于 2012-12-01 01:16:26
之所以会得到这些结果,是因为即使变量中存储的唯一内容是空字符串,isset()也会返回true。有可能你的结果没有被存储。这可能是因为您的表单可能有一个恢复页面的操作,该操作清空字段,使变量为空字符串?我们必须看到你的html代码才能给出一个更全面的答案……
https://stackoverflow.com/questions/13649672
复制相似问题