0

此代码正在尝试验证是否已将链接输入到浏览器中,但是,Please enter the URL to clone即使不需要,警告消息仍会显示在页面顶部。任何人都可以提出一种不出现的方法吗?我在下面附上了我的代码。

$posted_radio = (isset($_POST['git']) ? $_POST['git'] : null);
$posted_url = (isset($_POST['clone-url']) ? $_POST['clone-url'] : null);

if($posted_radio == "pull"){
    echo "This would cause a git pull";
}

if (!empty($posted_url)){
    echo "<p>This would post: </p><code>git clone"." ".$posted_url."</code>";
}else{
    echo "Please enter a URL to clone";
}


?>

<form method="POST" action="index.php">

    <input type="radio" name="git" value="clone" id="clone"><label>Clone</label><br>
    <label class="clone-url">Clone URL:</label><input type="url" name="clone-url" class="clone-url"><br>
    <input type="radio" name="git" value="pull"><label>Git Pull</label><br>

    <button class="btn btn-primary">Submit</button>
</form>
4

3 回答 3

0

正如 Marc B. 指出的,$_POST['clone-url']包含一个空字符串''

改变这个:

$posted_url = (isset($_POST['clone-url']) ? $_POST['clone-url'] : null);

对此:

$posted_url = (isset($_POST['clone-url']) && trim($_POST['clone-url']) !== '') ? $_POST['clone-url'] : null);
于 2013-07-15T18:56:07.107 回答
0

看你对这个问题的评论,它似乎$post_url是空的。你不检查是否$post_url为空。将您的代码更改为:

$posted_radio = (isset($_POST['git']) ? $_POST['git'] : null);
$posted_url = (isset($_POST['clone-url']) ? $_POST['clone-url'] : null);

if($posted_radio == "pull" && !empty($posted_url) ){
    echo "This would cause a git pull";
}

if (!empty($posted_url)){ //if url is not empty, print success
    echo "<p>This would post: </p><code>git clone"." ".$posted_url."</code>";
}elseif(!is_null($posted_url)){ //if url is not null, print error
    echo "Please enter a URL to clone";
}

希望这可以帮助!

于 2013-07-15T19:03:41.037 回答
-1

您的代码在对输入进行验证之前不会检查是否实际收到了 POST 数据,因此它正在尝试验证它实际上没有收到的输入,因此抱怨它的缺失。要解决此问题,请将 PHP 代码包装在脚本顶部,如下所示:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  # your existing validation code goes here
};

这将导致验证仅在有要验证的输入数据时发生,并消除您现在看到的虚假错误。

您也可能在使用带有连字符的输入字段名称时遇到问题;我看不出它应该失败的任何直接原因,但它并不常见,而且可能是这种情况,因为它不能很好地工作。如果在进行上述更改后,您仍然遇到同样的问题,请尝试更改clone-urlto的所有实例,clone_url看看会发生什么。

于 2013-07-15T18:49:41.113 回答