我有一个简单的PHP脚本:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>MY WEB</title>
</head>
<body>
<form action="" method="get">
<input type="text" name="textval" value="<?php if( isset($_GET['textval']) ) echo htmlspecialchars($_GET['textval']) ?>" />
<input type="submit" value="Check" />
</form>
</body>
</html>
<?php
if ( empty($_GET['textval']) ) {
echo "Please Fill The TextBox" . PHP_EOL; // displays this
}
else{
echo "OKAY" . PHP_EOL;
}
?>
但是php在打开页面后才抛出此错误而我没有提交表单!!!
如何解决这个问题?
答案 0 :(得分:1)
试试这个
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>MY WEB</title>
</head>
<body>
<form action="" method="get">
<input type="text" name="textval" value="<?php if( isset($_GET['textval']) ) echo htmlspecialchars($_GET['textval']) ?>" />
<input type="submit" value="Check" />
</form>
</body>
</html>
<?php
if(isset($_GET['submitted'])){
if ( empty($_GET['textval']) ) {
echo "Please Fill The TextBox" . PHP_EOL;
}
else{
echo "OKAY" . PHP_EOL;
}
}
?>
答案 1 :(得分:1)
在您编辑代码时,显然会显示if
条件的语句将返回true
,因此在这种情况下,请为name
按钮分配submit
,而不是像
<input type="submit" value="Check" name="submitted" />
<?php
if(isset($_GET['submitted'])) {
if (empty($_GET['textval'])) {
echo "Please Fill The TextBox" . PHP_EOL; // displays this
}
else{
echo "OKAY" . PHP_EOL;
}
}
?>
注意:如果您使用
POST
而不是GET
,则效果会更好 看似$_GET
合适的东西,通常$_GET
用于搜索 页。
答案 2 :(得分:0)
您的$_GET['textval']
最初为空,因此empty($_GET['textval'])
条件为true
。
这就是为什么第一页加载时出错。
答案 3 :(得分:0)
根据您的代码
empty($_GET['textval'])
在提交表单之前,将始终为TRUE。因此,首先要检查您的表单是否已提交。
首先将提交更改为
<input type="submit" name="submit" value="Check" />
现在检查提交是否有效
if(isset($_GET['textval'])) {
if(isset($_POST['submitted'])){
if ( empty($_GET['textval']) ) {
echo "Please Fill The TextBox" . PHP_EOL;
}
else{
echo "OKAY" . PHP_EOL;
}
}
}
或者为您的代码添加一个名为'submitted'的隐藏输入并检查它。
答案 4 :(得分:0)
您还可以使用JQuery验证字段是否为空。这不会重新加载页面。
$("form").submit(function (e){
if($("input[type='text']").val().length == 0)
{
alert('fill form');
return false;
}
});