php - 验证错误!验证检查数据库 phpmyadmin 中是否已存在电子邮件地址
问题描述
如果电子邮件地址已经存在于数据库中,则不应执行该程序并显示“电子邮件已注册”的错误,但它不能这样工作。代码对我来说看起来不错,没有语法错误。但没有像我想要的那样工作,而不是向我展示存在电子邮件的错误。它执行表单并在 mysql 数据库中插入重复的电子邮件地址。
这是代码,请让我知道是否有人可以提供帮助。
<?php
include('dbconnection.php');
if(isset($_REQUEST['rSignup'])){
if(($_REQUEST['rName'] == "") || ($_REQUEST['rEmail'] =="") || ($_REQUEST['rPassword'] =="")){
$regmsg = '<div class="alert alert-warning mt-2" role="alert">All Fields are Required</div>';
}else{
$sql = "SELECT r_email FROM requestorlogin_tb WHERE r_email='".$_REQUEST['rEmail']."'";
$result = $conn->query($sql);
if($result->num_rows==1){
$regmsg = '<div class="alert alert-warning mt-2" role="alert">Email ID Already Registered</div>';
} else{
$rName = $_REQUEST['rName'];
$rEmail = $_REQUEST['rEmail'];
$rPassword = $_REQUEST['rPassword'];
$sql = "INSERT INTO requesterlogin_tb(r_name,r_email,r_password) VALUES('$rName','$rEmail','$rPassword')";
if($conn->query($sql) == TRUE){
$regmsg = '<div class="alert alert-success mt-2" role="alert">Account Successfully Created</div>';
} else{
$regmsg = '<div class="alert alert-danger mt-2" role="alert">Unable to Create Account</div>';
}
}
}
}
?>
解决方案
请更新您的查询以防止 sql 注入并尝试:
$remail=$_REQUEST['rEmail'];
$stmt = $conn->prepare("SELECT r_email FROM requestorlogin_tb WHERE r_email=?");
$stmt->bind_param('s', $remail);
$stmt->execute();
$result = $stmt->get_result(); // Assign the result to a variable
if ($result->num_rows > 0) { // Check the number of rows in the MySQLi result object
echo "exist";
$stmt->close();
$conn->close();
} else {
....
推荐阅读
- r - 如何从 R 中大小增加的数据集中随机抽取样本?
- javascript - Docker:为什么从 .env 传递的变量即使在从 .env 中删除并重建后仍会留在容器中
- java - 是否可以将 Xamarin.forms 代码作为库添加到现有的本机 Android Studio 应用程序?
- node.js - 无法返回 JWT 令牌
- git - 如何使用令牌将图像推/拉到私有存储库
- node.js - 如何在节点中按顺序从循环中返回数据
- wordpress - 帐户登录页面上的 Woocommerce 移动通知
- javascript - 如何在具有特定长度的数组中均匀分布元素
- python-3.x - imputer = imputer.fit(X[:,1:3]) 的 X 代表什么, imputer.fit(X[:,1:3]) 是什么意思?
- azure - New-AzADApplication:密钥凭据结束日期无效。PowerShell 中的错误