注册表单PHP
我是PHP和MySQL的初学者,我正在尝试为我目前正在从事的一个项目创建这个注册表单,这里是PHP脚本,顺便说一句。。如果有很多错误,那是因为我才刚刚开始 我遇到的问题是,如果电子邮件或用户名匹配,它不会检查数据库,因为如果匹配,它应该拒绝 PHP代码:注册表单PHP,php,html,mysql,css,Php,Html,Mysql,Css,我是PHP和MySQL的初学者,我正在尝试为我目前正在从事的一个项目创建这个注册表单,这里是PHP脚本,顺便说一句。。如果有很多错误,那是因为我才刚刚开始 我遇到的问题是,如果电子邮件或用户名匹配,它不会检查数据库,因为如果匹配,它应该拒绝 PHP代码: <?php //register php error_reporting(0); $regUsername = $_POST['reg-username']; $regEmail = $_POST['reg-email'];
<?php
//register php
error_reporting(0);
$regUsername = $_POST['reg-username'];
$regEmail = $_POST['reg-email'];
$regPassword = $_POST['reg-password'];
if(isset($regUsername) && isset($regEmail) && isset($regPassword)){
$connect = mysql_connect('localhost', 'root', '');
$selectDB = mysql_select_db('supermazad');
$query = mysql_query("INSERT INTO users (username, email, password) VALUES ('$regUsername', '$regEmail', '$regPassword')");
$checkIfSame = mysql_query("SELECT * FROM users WHERE username AND email LIKE '$query' ");
echo '<h1 class="successMessage">You have successfully registered!</h1>';
}
if($regUsername || $regEmail == $checkIfSame){
echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
}
?>
将用户名和电子邮件插入数据库后,您试图检查数据库中是否已存在用户名和电子邮件。您应该通过选择注册中提供的用户名和电子邮件,或者在用户名和电子邮件字段上设置唯一键约束,事先进行检查。将用户名和电子邮件插入数据库后,您试图检查数据库中是否已存在该用户名和电子邮件。您应该事先通过使用注册中提供的用户名和电子邮件进行选择,或者在用户名和电子邮件字段上设置唯一键约束进行检查。我认为您应该在$selectDB=mysql\u select\u db('supermazad')之后这样做代码>:
$checkIfSame = mysql_query("SELECT * FROM users WHERE username LIKE '".$regUsername."' OR email LIKE '".$regEmail."' ");
if (mysql_num_rows($checkIfSame ) > 0) {
echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
} else {
//insert new user here
$query = mysql_query("INSERT INTO users (username, email, password) VALUES ('$regUsername', '$regEmail', '$regPassword')");
}
$checkIfSame=mysql\u查询(“从用户名为'.$regUsername.''或电子邮件为'.$regEmail.''的用户中选择*”;
如果(mysql_num_rows($checkIfSame)>0){
回显“用户名或电子邮件已存在”;
}否则{
//在此处插入新用户
$query=mysql_query(“在用户(用户名、电子邮件、密码)中插入值(“$regsername”、“$regEmail”、“$regPassword”);
}
此外,您的帖子中有以下内容:
如果电子邮件或用户名匹配
所以你应该使用或,而不是和我认为你应该在$selectDB=mysql\u select\u db('supermazad')之后这样做代码>:
$checkIfSame = mysql_query("SELECT * FROM users WHERE username LIKE '".$regUsername."' OR email LIKE '".$regEmail."' ");
if (mysql_num_rows($checkIfSame ) > 0) {
echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
} else {
//insert new user here
$query = mysql_query("INSERT INTO users (username, email, password) VALUES ('$regUsername', '$regEmail', '$regPassword')");
}
$checkIfSame=mysql\u查询(“从用户名为'.$regUsername.''或电子邮件为'.$regEmail.''的用户中选择*”;
如果(mysql_num_rows($checkIfSame)>0){
回显“用户名或电子邮件已存在”;
}否则{
//在此处插入新用户
$query=mysql_query(“在用户(用户名、电子邮件、密码)中插入值(“$regsername”、“$regEmail”、“$regPassword”);
}
此外,您的帖子中有以下内容:
如果电子邮件或用户名匹配
所以你应该使用或
,而不是和
请使用mysqli而不是mysql,因为它更安全
删除错误报告(0)
不要使用“like”,因为它可能会有很多结果
mysql查询的语法错误
试试这个,如果有错误就调试一下,但我认为这是可行的
$regUsername = $_POST['reg-username'];
$regEmail = $_POST['reg-email'];
$regPassword = $_POST['reg-password'];
if(isset($regUsername) && isset($regEmail) && isset($regPassword)){
$mysqli = mysqli_connect("localhost","root","","supermazad") or die("Error " . mysqli_error($mysqli));
$queryInsert = "INSERT INTO users (username, email, password)
VALUES
('$regUsername', '$regEmail', '$regPassword')";
mysqli_query($mysqli, $queryInsert); //this will insert the data from db
$queryUser = "SELECT username,email FROM users WHERE username = '$regUsername' AND email = '$regEmail'"; // this will authenticate and uses an exact match
$result = $mysqli->query($queryUser);
$row = mysqli_fetch_array($result);
echo '<h1 class="successMessage">You have successfully registered!</h1>';
}
if($regUsername == $row['username'] && $regEmail == $row['email']){ //this check if email and username are match with database $row['username'] store username from mysql field and $row['email'] do the same
echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
}
$regUsername=$\u POST['reg-username'];
$regEmail=$_POST['reg-email'];
$regPassword=$_POST['reg-password'];
if(isset($regUsername)&&isset($regEmail)&&isset($regPassword)){
$mysqli=mysqli_connect(“localhost”、“root”、“supermazad”)或die(“Error”).mysqli_Error($mysqli));
$queryInsert=“插入用户(用户名、电子邮件、密码)
价值观
(“$regsername”、“$regEmail”、“$regPassword”);
mysqli_query($mysqli,$queryInsert);//这将插入数据库中的数据
$queryUser=“选择用户名,来自用户名为“$regUsername”和电子邮件为“$regEmail”的用户的电子邮件;//这将进行身份验证并使用精确匹配
$result=$mysqli->query($queryUser);
$row=mysqli\u fetch\u数组($result);
echo“您已成功注册!”;
}
如果($regUsername==$row['username']&&&$RegeEmail==$row['email']){//检查电子邮件和用户名是否与数据库$row['username']匹配,从mysql字段存储用户名,$row['email']执行相同的操作
回显“用户名或电子邮件已存在”;
}
顺便说一句,这对初学者来说是正常的,但请在不久的将来改进您的编码,使其更干净、更有条理
请使用mysqli而不是mysql,因为它更安全
删除错误报告(0)
不要使用“like”,因为它可能会有很多结果
mysql查询的语法错误
试试这个,如果有错误就调试一下,但我认为这是可行的
$regUsername = $_POST['reg-username'];
$regEmail = $_POST['reg-email'];
$regPassword = $_POST['reg-password'];
if(isset($regUsername) && isset($regEmail) && isset($regPassword)){
$mysqli = mysqli_connect("localhost","root","","supermazad") or die("Error " . mysqli_error($mysqli));
$queryInsert = "INSERT INTO users (username, email, password)
VALUES
('$regUsername', '$regEmail', '$regPassword')";
mysqli_query($mysqli, $queryInsert); //this will insert the data from db
$queryUser = "SELECT username,email FROM users WHERE username = '$regUsername' AND email = '$regEmail'"; // this will authenticate and uses an exact match
$result = $mysqli->query($queryUser);
$row = mysqli_fetch_array($result);
echo '<h1 class="successMessage">You have successfully registered!</h1>';
}
if($regUsername == $row['username'] && $regEmail == $row['email']){ //this check if email and username are match with database $row['username'] store username from mysql field and $row['email'] do the same
echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
}
$regUsername=$\u POST['reg-username'];
$regEmail=$_POST['reg-email'];
$regPassword=$_POST['reg-password'];
if(isset($regUsername)&&isset($regEmail)&&isset($regPassword)){
$mysqli=mysqli_connect(“localhost”、“root”、“supermazad”)或die(“Error”).mysqli_Error($mysqli));
$queryInsert=“插入用户(用户名、电子邮件、密码)
价值观
(“$regsername”、“$regEmail”、“$regPassword”);
mysqli_query($mysqli,$queryInsert);//这将插入数据库中的数据
$queryUser=“选择用户名,来自用户名为“$regUsername”和电子邮件为“$regEmail”的用户的电子邮件;//这将进行身份验证并使用精确匹配
$result=$mysqli->query($queryUser);
$row=mysqli\u fetch\u数组($result);
echo“您已成功注册!”;
}
如果($regUsername==$row['username']&&&$RegeEmail==$row['email']){//检查电子邮件和用户名是否与数据库$row['username']匹配,从mysql字段存储用户名,$row['email']执行相同的操作
回显“用户名或电子邮件已存在”;
}
顺便说一句,这对初学者来说是正常的,但请在不久的将来改进您的编码,使其更干净并组织起来
$checkIfSame = mysql_query("SELECT * FROM users WHERE username LIKE '".$regUsername."' OR email LIKE '".$regEmail."' ");
if (mysql_num_rows($checkIfSame ) > 0) {
echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
} else {
//insert new user here
$query = mysql_query("INSERT INTO users (username, email, password) VALUES ('$regUsername', '$regEmail', '$regPassword')");
}
$checkIfSame=mysql\u查询(“从用户名为'.$regUsername.''或电子邮件为'.$regEmail.''的用户中选择*”;
如果(mysql_num_rows($checkIfSame)>0){
回显“用户名或电子邮件已存在”;
}否则{
//在此处插入新用户
$query=mysql_query(“在用户(用户名、电子邮件、密码)中插入值(“$regsername”、“$regEmail”、“$regPassword”);
}
试试这个: