PHP/SQL - 注册用户的空白页面,用于简单的注册页面


PHP/SQL - Blank page for registered users for a simple registration page

我有一个作业,我必须在php中制作一个注册页面......我只是想让事情变得简单,所以让表单工作是我的目标。我知道sql注入/明文的漏洞,但这是我目前最后的担忧,因为它是课堂作业。

下面的脚本适用于插入新用户/密码,但如果有现有用户,则页面为空白,不会发出警告。我正在寻求帮助,以给出屏幕上显示的错误"对不起,此用户已存在"(或其他内容)。

谢谢:D。

<?php
define('DB_HOST', 'localhost');
define('DB_NAME', '////////');
define('DB_USER','/////////');
define('DB_PASSWORD','///////////');
$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error());
function NewUser() { $userName = $_POST['user']; $password = $_POST['pass']; $query = "INSERT INTO UserName (userName,pass) VALUES ('$userName','$password')"; $data = mysql_query ($query)or die(mysql_error()); if($data) { echo "YOUR REGISTRATION IS COMPLETED..."; } } function SignUp() { if(!empty($_POST['user']))  { 
$query = mysql_query("SELECT * FROM UserName WHERE userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error()); 
if(!$row = mysql_fetch_array($query))) 
{ newuser(); } 
else { echo "SORRY...YOU ARE ALREADY REGISTERED USER..."; } } } if(isset($_POST['submit'])) { SignUp(); } ?>

首先,检查您的php_error_log或将错误报告添加到文件的顶部非常重要。

<?php 
   error_reporting(E_ALL);
   ini_set('display_errors', 1);

有一个额外的右括号,您正在调用一个未定义的函数。
假设这些是错误,请使用以下命令进行修复:

if(!$row = mysql_fetch_array($query)) { 
    NewUser();
} 
else {
     echo "SORRY...YOU ARE ALREADY REGISTERED USER..."; 
}
  • 此外,请考虑将mysqli与预处理语句一起使用,或将 PDO 与预处理语句一起使用,它们更安全

希望对您有所帮助。

  1. 感谢@bcesars提供额外的括号修复。我觉得伯爵有些奇怪。

  2. 之后,我遇到了一个问题,即仅当用户和传递与数据库中的相同匹配时,才会弹出"此用户已存在"错误。如果我使用其他密码,该信息仍会插入到数据库中。

溶液:删除

 AND pass = '$_POST[pass]'

$query = mysql_query("SELECT * FROM UserName WHERE userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error()); 

到目前为止,它有效。我仍然是整个数据库/php的新手,所以感谢您对我的♥耐心等待