PHP mysqli новый пользователь не принимает специальные символы - PullRequest
0 голосов
/ 21 сентября 2018

Я написал систему входа в PHP, используя mysqli.Но он почему-то не хочет входить в учетные записи с именами пользователей, которые используют специальные символы, такие как: '! Username!',Как только я удаляю символы «!», Например «имя пользователя», логин снова работает идеально.Как я могу разрешить специальные символы для входа в систему, как!, @ ,.и т.д.?

Вот мой скрипт

config.php

<?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'); 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...