我在一个页面上有一个提交到另一个页面的表单。在那里,它检查输入邮件是否已填满。如果是,那么做一些事情,如果没有填补,做其他事情。我不明白为什么它总是说它被设置,即使我发送一个空表格。缺少什么或错了什么?
step2.php:
<form name="new user" method="post" action="step2_check.php">
<input type="text" name="mail"/> <br />
<input type="password" name="password"/><br />
<input type="submit" value="continue"/>
</form>
step2_check:
if (isset($_POST["mail"])) {
echo "Yes, mail is set";
} else {
echo "N0, mail is not set";
}
答案 0 :(得分:207)
将其更改为:
if (isset($_POST["mail"]) && !empty($_POST["mail"])) {
echo "Yes, mail is set";
} else {
echo "N0, mail is not set";
}
因此始终设置$_POST
,但其内容可能为空。
由于!empty()
已经检查了值是否已设置,因此您也可以使用此版本:
if (!empty($_POST["mail"])) {
echo "Yes, mail is set";
} else {
echo "N0, mail is not set";
}
答案 1 :(得分:21)
使用!empty
代替isset
。
isset对$_POST
返回true,因为$_POST
数组是超全局的并且始终存在(设置)。
或者更好地使用$_SERVER['REQUEST_METHOD'] == 'POST'
答案 2 :(得分:5)
答案 3 :(得分:2)
如果您将表单发送为空,则仍会发送$ _POST ['mail'],但该值为空。要检查字段是否为空,您需要检查
if(isset($_POST["mail"]) && trim($_POST["mail"]) != "") { .. }
答案 4 :(得分:2)
将以下属性添加到输入文本表单:required="required"
。
如果表格未填写,则不允许用户提交表格。
您的新代码将是:
<form name="new user" method="post" action="step2_check.php">
<input type="text" name="mail" required="required"/> <br />
<input type="password" name="password" required="required"/><br />
<input type="submit" value="continue"/>
if (isset($_POST["mail"])) {
echo "Yes, mail is set";
}
答案 5 :(得分:2)
您可以简单地使用:
if($_POST['username'] and $_POST['password']){
$username = $_POST['username'];
$password = $_POST['password'];
}
或者,使用empty()
if(!empty($_POST['username']) and !empty($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
}
答案 6 :(得分:2)
使用!empty()
代替isset()
。因为isset()
在您的情况下将始终返回true。
if (!empty($_POST["mail"])) {
echo "Yes, mail is entered";
} else {
echo "No, mail is not entered";
}
答案 7 :(得分:1)
也许你可以尝试这个:
if (isset($_POST['mail']) && ($_POST['mail'] !=0)) { echo "Yes, mail is set"; } else { echo "No, mail is not set"; }
答案 8 :(得分:1)
<?php
if(isset($_POST['mail']) && $_POST['mail']!='') {
echo "Yes, mail is set";
}else{
echo "N0, mail is not set";
}
?>
答案 9 :(得分:0)
回答已发布的问题:isset和empty一起给出了三个条件。这也可以由带有ajax命令的Javascript使用。
$errMess="Didn't test"; // This message should not show
if(isset($_POST["foo"])){ // does it exist or not
$foo = $_POST["foo"]; // save $foo from POST made by HTTP request
if(empty($foo)){ // exist but it's null
$errMess="Empty"; // #1 Nothing in $foo it's emtpy
} else { // exist and has data
$errMess="None"; // #2 Something in $foo use it now
}
} else { // couldn't find ?foo=dataHere
$errMess="Missing"; // #3 There's no foo in request data
}
echo "Was there a problem: ".$errMess."!";
答案 10 :(得分:0)
你可以试试这个:
if (isset($_POST["mail"]) !== false) {
echo "Yes, mail is set";
}else{
echo "N0, mail is not set";
}
答案 11 :(得分:0)
<form name="new user" method="post" action="step2_check.php">
<input type="text" name="mail" required="required"/> <br />
<input type="password" name="password" required="required"/><br />
<input type="submit" value="continue"/>
</form>
<?php
if (!empty($_POST["mail"])) {
echo "Yes, mail is set";
}else{
echo "N0, mail is not set";
}
?>
答案 12 :(得分:0)
你可以尝试,
<?php
if (isset($_POST["mail"])) {
echo "Yes, mail is set";
}else{
echo "N0, mail is not set";
}
?>
答案 13 :(得分:0)
让我们以为这是step2.php中的HTML表单
step2.php
<form name="new user" method="post" action="step2_check.php">
<input type="text" name="mail"/> <br />
<input type="password" name="password"/><br />
<input type="submit" value="continue"/>
</form>
我认为您的数据库需要它,因此您可以将HTML表单值分配给php Variable,现在您可以使用Real Escape String,并且下面必须是您的
step2_check.php
if(isset($_POST['mail']) && !empty($_POST['mail']))
{
$mail = mysqli_real_escape_string($db, $_POST['mail']);
}
$ db是您的数据库连接。
答案 14 :(得分:0)
先检查表单是否已提交,然后再检查该字段。您还应该清理现场以防止黑客入侵。
form name="new user" method="post" action="step2_check.php">
<input type="text" name="mail"/> <br />
<input type="password" name="password"/><br />
<input type="submit" id="SubmitForm" name= "SubmitForm" value="continue"/>
</form>
step2_check:
if (isset($_POST["SubmitForm"]))
{
$Email = sanitize_text_field(stripslashes($_POST["SubmitForm"]));
if(!empty($Email))
echo "Yes, mail is set";
else
echo "N0, mail is not set";
}
}
答案 15 :(得分:-1)
$-POST 方法: 如果我们在表单标签中使用 POST 方法传递数据,我们可以使用 $_POST 数组在服务器中查找数据。使用这个数组名称我们从服务器获取数据。($_POST['name'])从表单发送的信息POST 方法对其他人不可见(所有名称/值都嵌入在 HTTP 请求的正文中)并且对要发送的信息量没有限制。 示例代码:
if (retrievedDate.Date.Equals(DateTime.Today))
{
// Do this.
}