Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-只允许对页面进行一次管理员注册_Php_Html_Database - Fatal编程技术网

PHP-只允许对页面进行一次管理员注册

PHP-只允许对页面进行一次管理员注册,php,html,database,Php,Html,Database,我正在尝试创建一个管理员注册表单。代码工作正常,但多个管理员可以注册此页面。我怎样才能做到只有一个管理员可以注册 将用户数据输入表单时添加检查。检查是否有任何行的字段admin设置为1(或您使用的任何设置) 示例代码 $result = mysql_query("SELECT firstname FROM mytable WHERE admin=1"); if(mysql_num_rows($result)== 0) { //check if the post variables

我正在尝试创建一个管理员注册表单。代码工作正常,但多个管理员可以注册此页面。我怎样才能做到只有一个管理员可以注册



将用户数据输入表单时添加检查。检查是否有任何行的字段admin设置为1(或您使用的任何设置)
示例代码

$result = mysql_query("SELECT firstname FROM mytable WHERE admin=1");
if(mysql_num_rows($result)== 0) {
     //check if the post variables are set and input the values to the table
} else {
     // Admin already exist      
}

如评论中所述,您应该停止使用
mysql\uucode>,而使用
mysqli\ucode>或PDO来处理准备好的语句,下面给出了一个示例。请记住,不能混合使用API,因此必须将整个代码从一个API转换为另一个API

$mysqli = new mysqli("host", "user", "password", "database");

$result = $mysqli->query("SELECT firstname FROM mytable WHERE admin=1");
if ($result->num_rows == 0) 
     //check if the post variables are set and input the values to the table
} else {
     // Admin already exist      
}
参考文献

  • (准备好的报表)

在添加管理员之前,您没有检查数据库中是否有管理员。顺便提一下不要使用不推荐使用的
mysql\uquot*
函数,您的查询对SQL注入是完全开放的。检查是否存在
admin=1
的记录。对该.Btw使用
SELECT
语句。为什么你要用PHP打印表单而不是用HTML标记呢?我忘了。。。使用
md5()
进行密码哈希是非常不安全的。你应该使用像sha256这样的软件加上适当的盐(不要使用你自己的。如果你使用的是PHP5.5+,请使用
password\u hash()
,如果你不是PHP5.5+,请使用其他一些“官方”软件包)你真的不应该使用像
mysql.*
@MagnusEriksson这样不推荐的函数,谢谢你指出这一点。请使用mysqliYour不能混用API,因此如果OP使用的是
mysql\u
,他就不能使用
mysqli\u
——这是其中之一。其次,
mysqli\u query
中的查询需要两个参数,第一个是连接。感谢您指出这一点,您能用它更新我的答案吗,或者发布一个新的答案。