首页 > 解决方案 > PHP mysqli 新用户不接受特殊字符

问题描述

我使用 mysqli 在 PHP 中编写了一个登录系统。但它不知何故不想使用使用特殊字符的用户名帐户,例如:'!用户名!' . 一旦我删除!'s,如“用户名”,登录再次完美。我怎样才能允许特殊字符登录,如!,@,。ETC。?

这是我的脚本

配置文件

<?php
ob_start();
session_start();

//set timezone
date_default_timezone_set('Europe/London');

//database credentials
define('DBHOST','XXXX');
define('DBUSER','XXXX');
define('DBPASS','XXXX');
define('DBNAME','XXXX');

//application address
define('DIR','XXXX');
define('SITEEMAIL','XXXX');

try {

    //create PDO connection
    $db = new PDO("mysql:host=".DBHOST.";charset=utf8mb4;dbname=".DBNAME, DBUSER, DBPASS);
    //$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);//Suggested to uncomment on production websites
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//Suggested to comment on production websites
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

} catch(PDOException $e) {
    //show error
    echo '<p class="bg-danger">'.$e->getMessage().'</p>';
    exit;
}

//include the user class, pass in the database connection
include('classes/user.php');
include('classes/phpmailer/mail.php');
$user = new User($db);
?>

实际登录脚本:

    <?php
    //include config
    require_once('includes/config.php');

    //check if already logged in move to home page
    if( $user->is_logged_in() ){ header('Location: index.php'); exit(); }

    //process login form if submitted
    if(isset($_POST['submit'])){

        if (!isset($_POST['username'])) $error[] = "Please fill out all fields";
        if (!isset($_POST['password'])) $error[] = "Please fill out all fields";

        $username = $_POST['username'];

            if (!isset($_POST['password'])){
                $error[] = 'A password must be entered';
            }
            $password = $_POST['password'];

            if($user->login($username,$password)){
                $_SESSION['username'] = $username;
                header('Location: memberpage.php');
                exit;

            } else {
                $error[] = 'Wrong username or password or your account has not been activated.';
            }
        }



$title = 'Login';
require('layout/header.php'); 
?>

标签: phpmysqlmysqli

解决方案


推荐阅读