Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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
Php 知识产权确认及;URL验证是否为elseif语句?_Php_Validation - Fatal编程技术网

Php 知识产权确认及;URL验证是否为elseif语句?

Php 知识产权确认及;URL验证是否为elseif语句?,php,validation,Php,Validation,编辑 你知道为什么这行不通吗?我添加了“FILTER\u FLAG\u NO\u PRIV\u RANGE”标志,还添加了一个检查,以查看是否输入了localhost(也许还有另一种方法,当我读到它时,它说“FILTER\u FLAG\u NO\u PRIV\u RANGE”不过滤它),但它似乎不起作用 $post_input = 'google.com'; // IP or a URL goes here $targets = array("localhost", "127.0.0.1",

编辑

你知道为什么这行不通吗?我添加了“FILTER\u FLAG\u NO\u PRIV\u RANGE”标志,还添加了一个检查,以查看是否输入了localhost(也许还有另一种方法,当我读到它时,它说“FILTER\u FLAG\u NO\u PRIV\u RANGE”不过滤它),但它似乎不起作用

$post_input = 'google.com'; // IP or a URL goes here

$targets = array("localhost", "127.0.0.1", "127.1"); // The array of words / values

if (!filter_var($post_input, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) 
// The above validates IP, FILTER_FLAG_NO_PRIV_RANGE is so 192.168.1.1 etc do not work (but it is nto working).

    && filter_var($post_input, FILTER_VALIDATE_URL)
    // The above validates IP, this is fine.

    && in_array($post_input, $targets)) 
    // The above checks against the array above, if the input contains this, do not continue, go to 'Invalid IP or URL'.
{
    echo 'Invalid IP or URL';
} else {
    echo 'good';
}
注意:我删除了“!”对于URL验证,如果您想知道的话,这是有意的

//-------------------------------------------------

我知道我做得不对,但我不知道我该怎么做

我希望输入是IP或URL。如果它是IP,它将检查它是否有效,然后跳过URL验证。如果它是一个URL,它将得到验证,然后跳过IP验证

有没有一个简单的方法可以做到这一点

$post_data = '216.58.216.174';
$post_data = 'http://google.com'; // Could also be this

if (!filter_var($post_data, FILTER_VALIDATE_IP)) { /* Validate IP */
    echo 'Invalid IP';
}elseif (!filter_var($post_data, FILTER_VALIDATE_URL)) { /* Validate URL */
    echo 'Invalid URL';
}else {
    echo 'All Good';
}

我想一定是这样的:

if (filter_var($post_data, FILTER_VALIDATE_IP)) { /* Validate IP */
    echo 'This is valid IP';
}elseif (filter_var($post_data, FILTER_VALIDATE_URL)) { /* Validate URL */
    echo 'This is valid URL';
}else {
    echo 'This is not either IP or URL';
}
试着这样做:

if (!filter_var($post_data, FILTER_VALIDATE_IP) && !filter_var($post_data, FILTER_VALIDATE_URL)) { /* Validate IP */
    echo 'Invalid IP or URL';
} else {
    echo 'All Good';
}
查看编辑时,应尝试以下操作:

$post_input = 'http://google.com';
$targets = array("localhost", "127.0.0.1", "127.1"); 
if ((!filter_var($post_input, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) 
   && !filter_var($post_input, FILTER_VALIDATE_URL))
   || in_array($post_input, $targets))
{
    echo 'Invalid IP or URL';
} else {
    echo 'good';
}
小心,
google.com
不会使用
FILTER\u validate\u URL
http://google.com
will

这样,结果将如下所示:

$post_input = 'http://google.com';
$targets = array("localhost", "127.0.0.1", "127.1"); 
if ((!filter_var($post_input, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) 
   && !filter_var($post_input, FILTER_VALIDATE_URL))
   || in_array($post_input, $targets))
{
    echo 'Invalid IP or URL';
} else {
    echo 'good';
}
  • http://google.com
    → 好
  • 192.168.0.1
    → 无效的IP或URL
  • 69.23.43.12
    或任何有效IP→ 好
  • 数组内容→ 无效的IP或URL

您面临的问题是什么?这与问题相同吗?现在,我不确定您想归档什么。请更好地解释所有输入和预期输出。编辑以更好地解释