这里我有要创建用户的代码,他们必须输入管理员给出的一个访问代码。该访问码受到某些用户的限制,例如 10
或 20
。之后它会显示错误,例如您的访问代码受到限制
。所以到目前为止,它运行良好。
现在,如果用户尝试输入管理员未提供的访问代码,则必须显示错误消息,例如您的访问代码错误
。
这是我的代码:
<?php
require('../config.php');
require_once($CFG->dirroot . '/user/editlib.php');
$errorMessage = '';
$successMessage = '';
if(isset($_SESSION['successMessage'])) {
$successMessage = $_SESSION['successMessage'];
unset($_SESSION['successMessage']);
}
if (isset($_POST['register'])) {
$errors = array();
$data = array();
$chk_sql = "SELECT * FROM {user} u where username = ?";
if (!empty($chk_sql) ) {
$errorMessage = 'Username already taken';
}
if(!$chk_username = $DB->get_record_sql($chk_sql, array($_POST['username']))) {
$secret = $_POST['secret'];
$access_code_sql = "SELECT * FROM {accesscode} WHERE random_no= ? and `number` > `used` and status=1";
if($chk_secret = $DB->get_record_sql($access_code_sql, array($secret))) {
$cadminid = $chk_secret->cadmin_id;
$clientid = $chk_secret->clientid;
$DB->execute("UPDATE {accesscode} SET used = used+1 WHERE random_no = '$secret'");
$insert_record = new stdClass();
$insert_record->firstname = $_POST['firstname'];
$insert_record->lastname = $_POST['lastname'];
$insert_record->username = $_POST['username'];
$insert_record->secret = $secret;
$insert_record->password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$insert_record->timecreated = time();
$insert_record->maildigest = $cadminid;
$insert_record->maildisplay = $clientid;
$insert_record->idnumber = 1;
$insert_record->mnethostid = 1;
$insert_record->confirmed = 1;
$insert_record->email = $_POST['email'];
if ($result = $DB->insert_record('user', $insert_record)) {
$_SESSION['successMessage'] = "record created successfully";
header('Location: register.php');
} else
$errorMessage = "error! can you please try again";
} else
$errorMessage = "your access code limit completed";
}
}
?>
最佳答案
您能给我们提供有关您的问题的更多信息吗?什么不起作用?在你的循环中尝试一些“var_dump()”来知道你是否通过了,这样你就可以告诉我们问题出在哪里!
但我首先看到的是这里:
if(! $chk_username = $DB->get_record_sql($chk_sql, array($_POST['username'])) )
这里:
if($result = $DB->insert_record('user', $insert_record))
您应该使用“==”或“===”,因为使用“=”意味着您为“$chk_username”和“result”分配一个值。
如果你想显示 flash 消息,那么这里有一些库可以使用,这仅供你引用: https://github.com/plasticbrain/PhpFlashMessages
如果你想用 JS 来做,你可以使用:https://github.com/CodeSeven/toastr
希望对你有帮助!
关于php - 如果该特定内容不在数据库中,则显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46399151/