Я написал систему входа в 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');
?>