php - 如果该特定内容不在数据库中,则显示错误消息

标签 php mysql

这里我有要创建用户的代码,他们必须输入管理员给出的一个访问代码。该访问码受到某些用户的限制,例如 1020。之后它会显示错误,例如您的访问代码受到限制。所以到目前为止,它运行良好。

现在,如果用户尝试输入管理员未提供的访问代码,则必须显示错误消息,例如您的访问代码错误

这是我的代码:

<?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/

相关文章:

php - 显示多行(WHILE)图标

php - 如何调试与 WordPress 建立数据库连接的错误

php - 使用Jquery实现翻转效果

php - 在 Symfony2 中从 javascript 访问 php 变量

php - 按日期订购特定 ID - 只取出一个(队列系统)

外键约束中的mysql循环依赖

mysql - GCP SQL Cloud - 空 MySQL 数据库占用 1.2GB 存储空间

mysql - mysql 5.7 json 特性的一些问题

php - 针对特定用户角色显示含税或不含税的 WooCommerce 产品价格

javascript - 如何使用javascript中的post方法将输入类型文件发送到图像上传文件