我创建了这个类,但我是PHP OOP&的新手。 PDO和我不知道我必须如何以及在哪里检查用户名是有效的,电子邮件是有效的,并且e.t.c ..
这是我的代码
Class Users {
private $db;
public function __construct(Database $datebase) {
if (!$database instanceOf Database) {
throw new Exeption();
}
$this->db = $datebase;
}
public function userRegistration($username, $password, $email) {
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$regdate = date('d.m.Y');
$query = $this->db->prepare("INSERT INTO `users` (`username`, `password`, `email`, `regdate`) VALUES (?, ?, ?, ?) ");
$query->bindValue(1, $username);
$query->bindValue(2, $password);
$query->bindValue(3, $email);
$query->bindValue(4, $regdate);
return ($query->execute()) ? true : false ;
}
}
答案 0 :(得分:0)
如果您想查看内容,请使用Respect/Validation。例如:
$usernameValidator = v::alnum()->noWhitespace()->length(1,15);
$usernameValidator->validate($_POST['username']); //true or false
$passwordValidator = v::alnum()->length(10, null);
$passwordValidator->validate($_POST['password']); //true or false
v::email()->validate($_POST['email']); //true or false
答案 1 :(得分:0)
要检查数据库中是否存在用户名或电子邮件,您可以使用SQL搜索电子邮件或用户名。
$query = $this->db->prepare("SELECT * FROM users WHERE email = ? ");
$query->bindValue(1, $email);
如果查询返回的值不是数据库中已存在的电子邮件或用户名。从那里,您可以显示自己的验证。
答案 2 :(得分:0)
要检查是否存在用户或电子邮件,您不需要其他类,只需添加另一个名为userExist或emailExist的方法并运行查询,然后检查您是否获得了结果。
public function emailExist($email){
$query = $this->db->prepare("SELECT * FROM users WHERE email = ? ");
$query->bindValue(1, $email);
try{
$query->execute();
//use the if statement and $query->rowCount() to check if there is a result
$rows = $query->rowCount();
if($rows === 1){
return true;
} else {
return false;
}
}catch (PDOException $e) {
die($e->getMessage());
}
}