大家好,我有一个简单的pdo登录和注册页面,当我在localhost中测试它时,我可以注册相同的用户名和电子邮件。如何在注册页面中检查重复,并在同一用户/电子邮件已存在时显示错误?这是我的register.php
<?php
require 'config.php';
if(isset($_SESSION['username'])){
header('location:dashboard.php');
}
if(isset($_POST['register'])) {
$errMsg = '';
// Get data from FROM
$fullname = $_POST['fullname'];
$username = $_POST['username'];
$address = $_POST['address'];
$password = $_POST['password'];
$secretpin = $_POST['secretpin'];
if($fullname == '')
$errMsg = 'Enter your fullname!';
if($username == '')
$errMsg = 'Enter username!';
if($address == '')
$errMsg = 'Enter a valid email!';
if($password == '')
$errMsg = 'Enter password!';
if($secretpin == '')
$errMsg = 'Enter a sercret pin number!';
if($errMsg == ''){
try {
$stmt = $connect->prepare('INSERT INTO pdo (fullname, username, address, password, secretpin) VALUES (:fullname, :username, :address, :password, :secretpin)');
$stmt->execute(array(
':fullname' => $fullname,
':username' => $username,
':address' => $address,
':password' => $password,
':secretpin' => $secretpin,
));
header('Location: register.php?action=joined');
exit;
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
}
if(isset($_GET['action']) && $_GET['action'] == 'joined') {
$errMsg = 'Registration successfull. Now you can <a href="login.php">login</a>';
}
?>
我的另一个问题是,如何获得每个注册人的注册日期,并将其保存在数据库中,并在配置文件页面中回显日期。我只是一个php新手,我从其他开源php代码中得到了一些想法。谢谢你们。
p、 别介意安全问题,我还在学习:)
1条答案
按热度按时间9jyewag01#
您使用的是pdo,而不是不推荐的mysql或mysqli,因此您的安全性已经稍微提高了。
检查重复只不过是sql“like”语句查询的一种情况,类似于so-
从网站用户中选择*其中useremail或userlogin类似?
这方面的一个例子实际上可以在这个链接上找到-https://www.w3schools.com/sql/sql_like.asp
我不想破坏您的方法,但是请记住目前您的代码:
每次都将覆盖$errmsg,因此您也不会得到完整的错误集,这可能很重要,也可能不重要。
我知道你不需要安全指针,但是使用
作为一种知道是否有人注册的方法也不是一个好主意,请要么使用一个框架,要么改变你的方法,因为这个建议我可以访问该网址,而不必实际填写你的表格。