错误消息不适用于PHP用户检查

时间:2014-06-11 18:21:52

标签: php mysql

我是PHP的新手,已经编写了一个注册PHP页面,它工作正常,可以为新用户添加数据库。但是,在添加重复的用户名时,不会显示错误消息。我错过了任何代码,还是需要更改代码?

我的代码:

<?php

define('DB_HOST', 'localhost');
define('DB_NAME', 'login');
define('DB_USER','root');
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['username'];
$password =  $_POST['password']; 
$firstname = $_POST['firstname'];
$surname = $_POST['surname'];
$query = "INSERT INTO users (username, password, firstname, surname) VALUES ('$username', '$password', '$firstname', '$surname')";


$data = mysql_query ($query)or die(mysql_error());
if($data)
{
echo "YOUR REGISTRATION IS COMPLETED, YOU CAN SIGN IN NOW";
}
}

function SignUp()
{
if(!empty($_POST['username']))
{
$query = mysql_query("SELECT * FROM users WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die(mysql_error());

if(!$row = mysql_fetch_array($query) or die(mysql_error()))
{
    newuser();
}
else
{
    echo "SORRY, YOU ARE ALREADY REGISTERED USER.";
}
}
}
if(isset($_POST['submit']))
{
SignUp();
}
?>

2 个答案:

答案 0 :(得分:0)

既然你是新手,你也可以放弃MySQL_语句,并选择像MySQLi_或PDO这样更安全的东西。这不会禁止您使用数据库,它们更安全。

另外:$row未定义。

再一次,因为你是新手,我建议使用一个编辑器,让你缩进你的代码。缩进使您的代码更具可读性,并在遇到此类问题时帮助其他人帮助您。

答案 1 :(得分:0)

$row未定义,请尝试使用mysql_num_rows 如果您想访问列值,可以使用mysql_fetch_array 在这种情况下,您只需检查$query是否返回了一行。 所以你可以将代码更改为

正如你所做的那样    $data = mysql_query ($query)or die(mysql_error()); if($data) { echo "YOUR REGISTRATION IS COMPLETED, YOU CAN SIGN IN NOW"; }

$query = mysql_query("SELECT * FROM users WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die(mysql_error());

if($query){ newuser(); }else{ echo "SORRY, YOU ARE ALREADY REGISTERED USER."; }