Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用if语句解释PHP中的布尔值_Php_Boolean - Fatal编程技术网

用if语句解释PHP中的布尔值

用if语句解释PHP中的布尔值,php,boolean,Php,Boolean,以下表单始终返回true,即使域可用。有人能告诉我我做错了什么吗?谢谢 <?php function domainAvailable($domain){ $results = @dns_get_record($domain, DNS_ANY); return empty($results); } if (isset($_REQUEST['domain'])) // check to see if form has been submitted { $domain = htmlspecia

以下表单始终返回true,即使域可用。有人能告诉我我做错了什么吗?谢谢

<?php
function domainAvailable($domain){
$results = @dns_get_record($domain, DNS_ANY);
return empty($results);
}
if (isset($_REQUEST['domain']))  // check to see if form has been submitted
{
$domain = htmlspecialchars($_REQUEST['domain'], ENT_QUOTES, 'UTF-8');

$httpdomain = 'http://' . $domain;

    if (domainAvailable($httpdomain) == true){
        echo "$domain is not available.";
        if (domainAvailable($httpdomain) == false){
            echo "$domain is available!";   
        }
    }
}
?>
<form method="post" action="">
<div>
<label for="domain name">Suggest a Domain:</label> <input type="text" name="domain" /><br />
<input type="submit" />
</div>
</form>

建议一个域:

从解开ifs开始:

if (domainAvailable($httpdomain)){
   echo "$domain is not available.";
} else {
   echo "$domain is available!"; 
}
另外,你可能把你的弦向后拉

if (domainAvailable($httpdomain)){
   echo "$domain is available.";
} else {
   echo "$domain is not available!"; 
}
然后,去掉这一行:

$httpdomain = 'http://' . $domain;
您的domainAvailable函数可能会始终返回true,因为
http://
不是有效域名的一部分

调用htmlspecialchars可能也会导致误报

总而言之:

<?php
#CLI debugging:
if(empty($_REQUEST['domain']) && !empty($argv[1]))
    $_REQUEST['domain'] = $argv[1];

function domainAvailable($domain) {
    $results = @dns_get_record($domain, DNS_ANY);
    return empty($results);
}

if (isset($_REQUEST['domain']))  // check to see if form has been submitted
{
    $domain = htmlspecialchars($_REQUEST['domain'], ENT_QUOTES, 'UTF-8');

    if (domainAvailable($_REQUEST['domain'])) {
        echo "$domain is available.";
    } else {
        echo "$domain is not available!";
    }
}

PS.htmlspecialchars不会弄乱任何东西如果您有机会解释包含#CLI调试的原因,“htmlspecialchars不会弄乱任何东西”--仅当您的输入不包含特殊字符时。尝试一个非ascii域,如
Bücher.ch
Пзззззззззззззз。您可能需要实现punycode才能真正实现这些功能,但是无论怎样,
htmlspecialchars
都会妨碍您的工作。我将CLI模式设置为“因为这样更容易工作/测试:)
$ php scratch.php google.com | more
google.com is not available!
$ php scratch.php googleasdfasdf.com. | more
googleasdfasdf.com. is available.