使用“isset”功能

时间:2011-09-28 20:07:15

标签: php

虽然我访问了php文档,但我并不了解“isset”功能的用法。 1 - 例如在php教程书中,作者用这个上下文写了一篇文章:当我们在first.html中创建一个表单并且我们想要使用second.php中的表单信息时,我们必须使用这两段代码: / p>

if(!isset($_GET['q']))  
       die("The Search key word is not set !!!"); 
$key = $_GET['q'];  
if($key == "")  
       die("The Search key word must be entered !!!"); 

但我不明白这两个代码有什么区别?

2 - 另一个例子我看到这个代码用于检查底部是否被点击:

if(isset($_POST['login_btn']))  
{  
   ....
}

但我不明白为什么要检查底部是否被点击?

7 个答案:

答案 0 :(得分:2)

$key="";
isset($key)  //This evaluates to true. 

字符串为空,但定义了变量。 isset()函数返回true,即使对于空字符串也是如此。

也许您希望使用empty()代替,其中包含更广泛的条件,评估为false。

答案 1 :(得分:2)

isset检查给定的变量或索引是否存在。如果您认为变量存在而不存在,则PHP会生成通知。你使用isset做的所有事情都在抑制可能的通知 - 这是一种很好的做法。

答案 2 :(得分:1)

不同之处在于,在一个实例中,表单未提交,在第二个实例中,表单已提交,但空白值。

如果表单尚未提交,您不希望在页面上处理表单。

一个页面上可能还有多个表单,因此您可以检查按钮值以找出提交的表单。

答案 3 :(得分:0)

这个功能非常简单

在php.net上:

  

确定变量是否已设置且不为NULL。

在您的情况下,您的post变量的isset函数检查是否为空

答案 4 :(得分:0)

这里的每个人都已经向您解释了isset()函数检查的内容(即如果设置了变量),但我认为您真正要问的是$_GET[]$_POST[] $_GET[]工作。您需要更多地查看提供此代码的表单。了解$_POST[]login_btn变量是什么,我认为这段代码对您来说更有意义。

例如,您的第二个示例检查是否通过post方法发送了名为{{1}}的值。如果是,则运行...代码块。

答案 5 :(得分:0)

$key == "";    // Is $key an empty string
isset($key);   // Has the $key variable been defined and not null

仅供参考,以下是其他一些可能有用的内容

empty($key);   // Is $key and empty value (0, false, null, "", array())
$key == false  // Is $key a falsey value (0, false, null, "", "0", array())
$key === false // Is $key a false boolean (false)

答案 6 :(得分:0)

我只是要稍微剖析你的代码..

isset

if(!isset($_GET['q']))  
   die("The Search key word is not set !!!"); 

通常用于查看URL中的变量是否设置如下:

http://mysite.com/index.php?q=1

设置$_GET['q']并且isset($_GET['q'])会回来 true

$键== “”

$key = $_GET['q'];  
if($key == "")

检查$key是否为空。使用我之前的示例网址,$key不会为空或空白,而是1

为什么要检查按钮

处理表单的脚本需要知道在表单之后访问它的方式不会出错。这是您希望确保按下表单提交按钮的位置。由于这令人困惑,这里有一个例子:

假设您要将博客系统的标签插入到数据库中,您可能拥有如下代码:

<强> AddTag.php

<form name="addtag" method="process.php" action="post">
    <input type="text" name="tagname" />
    <input type="submit" name="submittag" />
</form>

<强> process.php

<?php
 if ($_POST['submittag'])    {
     //INSERT query
 }
?>

如您所见,如果在没有首先访问AddTag表单的情况下访问 process.php ,脚本将不会尝试插入您的标记。