此代码正在尝试验证是否已在浏览器中输入链接,但是,即使不需要,警告消息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>
答案 0 :(得分: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);
答案 1 :(得分: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";
}
希望这有帮助!
答案 2 :(得分:-1)
您的代码在输入验证之前没有检查POST数据是否已经实际收到,因此它试图验证它没有实际收到的输入,因此抱怨它缺席。要解决此问题,请将PHP代码包装在脚本的顶部:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
# your existing validation code goes here
};
这将导致验证仅在有要验证的输入数据时发生,并消除您现在看到的虚假错误。
您可能还难以使用带有连字符的输入字段名称;我没有看到它应该失败的任何直接原因,但它并不常见,而且可能是这种情况,因为它不能很好地运作。如果在进行上述更改后仍然存在同样的问题,请尝试将clone-url
的所有实例更改为clone_url
,看看会发生什么。