<分区>
社交网站是否应允许在用户名和密码中使用 UTF-8?我真的是 PHP 的新手,我想知道这些事情。我现在正在创建一个小测试项目,并将排序规则设置为 utf8_general_ci
和 SET NAMES utf8
。 Everthing 被插入并正确显示像“ÅÄÖ”这样的字符。但是,如果用户名或密码包含这些字符,您将无法登录。为什么?
<?php
if(isset($_POST['loginBtn'])){
//variables
$username = mb_strtolower(strip_tags(addslashes($_POST['username'])));
$password = strip_tags(addslashes($_POST['password']));
if(empty($username) || empty($password)){
$statusM = "Var god och fyll i båda fälten!";
}else{
//$password = hash("sha512", $password);
include("db.php");
//the db.php contains the character set and collation set
$sql = 'SELECT username, password FROM users WHERE username=:username AND password=:password';
$stmt = $db->prepare($sql);
$stmt->bindParam(":username", $username);
$stmt->bindParam(":password", $password);
$stmt->execute();
if(!$stmt->rowCount() > 0){
$statusM = "Antingen fel lösenord eller användarnamn!";
}else{
$sql = 'SELECT * FROM users WHERE username=:username AND password=:password';
$stmt = $db->prepare($sql);
$stmt->bindParam(":username", $username);
$stmt->bindParam(":password", $password);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$row = $stmt->fetch();
session_start();
$_SESSION['school'] = $row['school'];
$_SESSION['firstname'] = $row['firstname'];
$_SESSION['lastname'] = $row['lastname'];
$_SESSION['username'] = $row['username'];
$_SESSION['password'] = $row['password'];
$_SESSION['email'] = $row['email'];
header("Location: member_home.php");
exit();
}
}
}
?>
注意,这是我当前的代码,还没有完成,而且网站是瑞典语的。