-2
我使用此代码注册用户,但它不起作用。它总是回声“注册失败。”我试过很多次,但没有任何工程注册表格无法正常工作
if(isset($_POST['sub']))
{
$uname = $_POST['uname'];
$email = $_POST['email'];
$pass_hash = PassHash::hash($_POST['pass']);
$sq="SELECT * FROM user WHERE username='$uname'";
//echo $sq;
$re=mysqli_query($link,$sq);
if(mysqli_num_rows($re)>0)
{
echo "Username already taken !";
}
else
{
$SQ = "SELECT * FROM user WHERE email='$email'";
//echo $SQ;
$res=mysqli_query($link,$SQ);
if(mysqli_num_rows($res)>0)
{
echo "Email already taken !";
}
else
{
$SQL = "INSERT INTO user(username,email,password) VALUES('$uname','$email','$pass_hash')";
//echo $SQL;
$result = mysqli_query($link,$SQL);
if(!$result)
{
echo "Registration failed !";
}
else
{
echo"register done";
}
}
}
}
下面是表结构
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(20) NOT NULL,
`password` varchar(100) NOT NULL,
`email` varchar(20) NOT NULL,
`status` int(11) default '0',
`sdate` date NOT NULL,
`s_type` varchar(2) NOT NULL,
`amount` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
有谁知道问题是什么?
什么'echo mysqli_error($ link)'print? – andrewsi
除了明显的SQL注入漏洞成为问题之外,查询的实际结果是什么?数据库中是否有错误?如果我只是基于提供的查询来进行猜测,那么我可能会建议将'user'包装在back-ticks中,因为它可能是MySQL中的保留字。 (以同样的方式包装其他对象标识符通常是最安全的。) – David
@andrewsi它显示一个空白页 – gss