我想不出在我的php网站上拒绝相同用户帐户的方法,而且我也很难使用其他生成的代码。我尝试在phpmyadmin中使用unique,但是它在拒绝它之后给了我一个错误。下面是代码:
<?php
include '../layout/header.php';
if(isset($_POST['submit'])) {
$email = $_POST['email'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
if($pass1 == $pass2){
$uname = $_POST['uname'];
$email = $email;
$pass1 = $pass1;
$pass2 = $pass2;
include '../DB/DB.php';
$db = new DB;
$db->__set('username','root');
$db->__set('password','');
$db->__set('dsn','mysql:host=localhost;dbname=login;');
$db->conn();
$aData = array();
$aData[0]['users'] = $uname;
$aData[0]['email'] = $email;
$aData[0]['pass'] = $pass1;
$db->dbInsert('vartotojai', $aData);
Echo "<a href='../index.php'>Atgal</a><br>";
}else{
die("sorry, your passwords dont match. <br />");
}
}else{
$form = '
<form action="register.php" method="POST">
Username: <input type="text" name="uname" /><br />
Email: <input type="text" name="email" /><br />
Password: <input type="password" name="pass1" /><br />
Confirm password: <input type="password" name="pass2" /><br />
<input type="submit" value="Registruotis" name="submit" />
</form>';
echo $form;
}
Echo "<a href='../index.php'>Atgal</a><br>";
?>发布于 2015-05-30 08:04:36
您只需要查看表中是否已经有使用相同用户名的记录。
使用如下查询:
SELECT [row] FROM [table] WHERE users=[username];带有相应值的...replacing行、表、用户名。进行SELECT查询的方式将取决于您为$db使用的库
然后,您需要检查结果集中是否返回了任何记录。
if (!isset($resultSet)) { //therefore username is unique
//insert user to database
} else {
//prompt 'user already exists'
}编辑: PDO示例
$db = new Db();
$db->bind("uname",$uname);
$query = $db->query("SELECT uname FROM [table] WHERE users = :uname");
if (!isset($query[0]['users'])) { //therefore username is unique
//insert user to database
} else {
//prompt 'user already exists'
}发布于 2015-05-30 07:47:45
要做到这一点,最好和最快的方法是在数据库模式唯一的范围内定义一个约束,正如您已经提到的尝试。
另一种方法是简单地选择数据库中的任何记录,无论您想要的字段是“唯一的”,如果它返回任何记录,它显然不是唯一的,您的脚本应该失败,否则,继续您正在做的任何事情。
SQL查询可以如下所示:
SELECT COUNT(id) FROM sakila.actor WHERE [parameter] LIKE '[WHAT YOU'RE TESTING]';如果这个查询返回0,那么很好,如果它返回1,那么就有一个人已经有了这个参数,如果它返回大于一个,那么您已经有了重复的值。
发布于 2015-05-30 08:28:12
首先,使用唯一的auto_increment创建一个类似id的字段名,并检查以下代码
从tbname选择* uname='name‘和password="password“
如果这个查询返回空数组--这不是一个有效的用户--否则它可能有数组值--它是您站点的用户,这个过程对于将新用户插入到db也是一样的
https://stackoverflow.com/questions/30543544
复制相似问题