我正在创建一个基本的注册表单,我想验证用户输入。我已经阅读了很多不同的方法。首先,我的工作不起作用,因为当它不是有效的电子邮件时,它回应“电子邮件是有效的”。我真的希望能找到最有效,最简洁的方法!
所以我的两个问题是:
1。)我的代码中是否有错误表明它是有效的电子邮件,即使它不是?
2.。)如何尽可能提高效率?
以下是代码:
<?php
include('functions.php');
$server = "localhost";
$auth = "root";
$pass = "password";
$db = "users";
$conn = connect_to_db($server, $auth, $pass, $db);
$signup = isset($_POST['submit']);
$output = NULL;
if( $signup ){
$username = htmlspecialchars($_POST['username']);
$password = md5($_POST['password']);
$email = $_POST['email'];
if( filter_var($email, FILTER_VALIDATE_EMAIL) && !empty($username) && !empty($password) && !empty($email) ){
echo 'Email is valid';
$sql = "SELECT username FROM info WHERE username = '$username'";
$result = mysqli_query($conn, $sql);
if( mysqli_num_rows($result) > 0 ){
echo "Sorry, there is already an account registered with that username";
} else {
$sql = "INSERT INTO info (username, password, date_created) VALUES ('$username', '$password', NOW())";
mysqli_query($conn, $sql);
$output = "<p> Username: $username <br />" . "Password: $password </p>";
}
} elseif ( empty($username) || empty($password) ) {
$output = "<p> Both fields are required </p>";
}
echo $output;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>My Website</title>
</head>
<body>
<form method="POST">
<h1>Signup: </h1><br />
Choose a username: <input type="text" name="username" /> <br />
Choose a password: <input type="password" name="password" /> <br />
Enter your email: <input type="email" name="email" /> <br />
<input type="submit" name="submit" value="Signup" />
<p>Already have an account? Login here: <br /> <a href="index.php">Login</a></p>
</form>
</body>
</html>
答案 0 :(得分:-2)
Emm ..对于用户名和密码输入,您可以使用该函数并将其放在函数文件中:
function makeItSafe($value) {
htmlspecialchars($value);
strip_tags($value);
htmlentities($value, ENT_QUOTES);
return $value;
}
对于电子邮件,是的,您可以使用 filter_var 功能或使用 RegExp 方式..但在我看来,filter_var更易于使用:)
答案 1 :(得分:-2)
我使用下面的代码验证电子邮件地址。然后我要求用户确认他们的电子邮件以完成注册,因为没有真正的方法来确定电子邮件是否真实。
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// invalid emailaddress
}
此外,您应该创建一个检查POST数据的函数。
function checkData($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}