【发布时间】:2019-05-01 21:00:22
【问题描述】:
单击按钮时。我想使用 register_button 从表单中获取值。但是,它不会进入 if 子句。
我无法检查在 if 语句中输入的任何内容。 是否有任何其他选项可以让我从表单中检索数据,或者我是否犯了一些错误?
var_dump($_POST) 返回
array(6) {
["reg_fname"]=> string(1) "a"
["reg_lname"]=> string(3) "asd"
["reg_email"]=> string(5) "ad@ad"
["reg_pass"]=> string(4) "dasd"
["reg_pass2"]=> string(5) "sadsa"
["register_button"]=> string(8) "Register"
}
Invalid format
代码:
$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>
【问题讨论】:
-
这些是否在
<form>元素中?var_dump($_POST)告诉你什么? -
是的,它们在
-
编辑您的问题以包含此信息
-
另外你不应该默默地改变用户的密码。如果我想将
my<pass>word作为密码,我应该可以,不是吗?最后但同样重要的是,您应该使用prepared statements 进行数据库访问。 -
请勿更改或过滤密码。这是不合理的,你让他们变得脆弱。使用 Password Hashing API 来散列和验证密码。