PHP isset函数未正确检查
单击按钮时。我想使用register_按钮从表单中获取值。但是,它没有进入if子句 在if语句中,我无法检查表单中键入的任何内容。 是否有其他选项可以从表单中检索数据,或者我是否犯了一些错误 var\u dump$\u POST返回 代码:PHP isset函数未正确检查,php,html,post,isset,Php,Html,Post,Isset,单击按钮时。我想使用register_按钮从表单中获取值。但是,它没有进入if子句 在if语句中,我无法检查表单中键入的任何内容。 是否有其他选项可以从表单中检索数据,或者我是否犯了一些错误 var\u dump$\u POST返回 代码: 它进入了第一个if语句。您可以看出这一点,因为当您使用var_dump$_POST时,在转储输出之后会得到无效的文本格式。这意味着它将进入页面下一步的else语句中,在那里您有echo Invalid format;。因此,实际上是您的筛选变量if语句失败了
它进入了第一个if语句。您可以看出这一点,因为当您使用var_dump$_POST时,在转储输出之后会得到无效的文本格式。这意味着它将进入页面下一步的else语句中,在那里您有echo Invalid format;。因此,实际上是您的筛选变量if语句失败了。请不要在任何人回答后编辑您的问题 您不会检查查询是否成功。 如果要过滤变量,最好是直接进行过滤 您忘了在字符串后的查询中添加逗号 请尝试下面的方法
<?php
$fname = "";
$lname = "";
$em = "";
$em2 = "";
$password = "";
$password2 = "";
$date = "";
$error_array = "";
if (isset($_POST['register_button'])) {
$fname = strip_tags($_POST['reg_fname']);
$fname = str_replace(' ', ' ', $fname);
$lname = $_POST['reg_lname'];
$lname = str_replace(' ', ' ', $lname);
$em = $_POST['reg_email'];
$em = str_replace(' ', ' ', $em);
$password = strip_tags($_POST['reg_pass']);
$password2 = strip_tags($_POST['reg_pass2']);
$date = date("Y-m-d");
// No need to use if
$em = filter_var($em, FILTER_VALIDATE_EMAIL);
/// $con = mysqli_connect("localhost", "user", "pass", "dbname");
/// using if to be sure query success
if ($e_check= mysqli_query($con, "SELECT email FROM users WHERE email='$em'")) {
$num_rows= mysqli_num_rows($e_check);
if ($num_rows> 0) {
echo "Email already in use";
} else {
/// here your insert query
}
}
else
{
echo "No query ";
}
if(strlen($fname) >25 || strlen($fname)< 2 )
{
echo "Your first name must be at least 2 char and maximum 25 char ";
}
}
为什么要使用登记按钮作为支票?为什么没有一个字段是必需的?这些字段在元素中吗?var_dump$_POST告诉您什么?是的,它们在元素中。var\u dump$\u POST返回数组6{[reg\u fname]=>string1 a[reg\u lname]=>string3 asd[reg\u email]=>string5ad@ad[reg_pass]=>string4 dasd[reg_pass2]=>string5 sadsa[register_button]=>string8 register}无效格式编辑您的问题以包含此信息。您也不应默默更改用户密码。如果我想用myword作为密码,我应该可以,不是吗?最后但并非最不重要的一点是,您应该使用来访问数据库。不要更改或过滤密码。这是不合理的,你让他们很脆弱。使用密码哈希API对密码进行哈希和验证。由于键入错误(如缺少或额外的})而导致的问题不在SO主题中。不要回答,而是将问题标记为离题。这不是打字错误造成的。他的代码运行良好。
$fname = "";
$lname = "";
$em = "";
$em2 = "";
$password = "";
$password2 = "";
$date = "";
$error_array = "";
if (isset($_POST['register_button'])) {
$fname = strip_tags($_POST['reg_fname']);
$fname = str_replace(' ', ' ', $fname);
$lname = $_POST['reg_lname'];
$lname = str_replace(' ', ' ', $lname);
$em = $_POST['reg_email'];
$em = str_replace(' ', ' ', $em);
$password = strip_tags($_POST['reg_pass']);
$password2 = strip_tags($_POST['reg_pass2']);
$date = date("Y-m-d");
if(filter_var($em, FILTER_VALIDATE_EMAIL)){
$em = filter_var($em, FILTER_VALIDATE_EMAIL);
$e_check = mysqli_query($con, "SELECT email FROM users WHERE email='$em");
$num_rows = mysqli_num_rows($e_check);
if(num_rows > 0){
echo "Email already in use";
}
}else {
echo "Invalid format";
}
if(strlen(fname)>25 || strlen(fname)<2 ){
echo "Your fi";
}
}
<form method="post" action="index.php">
<input type = "text" name="reg_fname" placeholder="First Name" required>
<br>
<input type = "text" name="reg_lname" placeholder="Last Name" required>
<br>
<input type = "email" name="reg_email" placeholder="Email" required>
<br>
<input type = "password" name="reg_pass" placeholder="Password" required>
<br>
<input type = "password" name="reg_pass2" placeholder="Confirm Password" required>
<br>
<input type = "submit" name="register_button" value="Register">
</form>
<?php
$fname = "";
$lname = "";
$em = "";
$em2 = "";
$password = "";
$password2 = "";
$date = "";
$error_array = "";
if (isset($_POST['register_button'])) {
$fname = strip_tags($_POST['reg_fname']);
$fname = str_replace(' ', ' ', $fname);
$lname = $_POST['reg_lname'];
$lname = str_replace(' ', ' ', $lname);
$em = $_POST['reg_email'];
$em = str_replace(' ', ' ', $em);
$password = strip_tags($_POST['reg_pass']);
$password2 = strip_tags($_POST['reg_pass2']);
$date = date("Y-m-d");
// No need to use if
$em = filter_var($em, FILTER_VALIDATE_EMAIL);
/// $con = mysqli_connect("localhost", "user", "pass", "dbname");
/// using if to be sure query success
if ($e_check= mysqli_query($con, "SELECT email FROM users WHERE email='$em'")) {
$num_rows= mysqli_num_rows($e_check);
if ($num_rows> 0) {
echo "Email already in use";
} else {
/// here your insert query
}
}
else
{
echo "No query ";
}
if(strlen($fname) >25 || strlen($fname)< 2 )
{
echo "Your first name must be at least 2 char and maximum 25 char ";
}
}