我拼命尝试将通过POST请求发送的用户输入保存到我的数据库,但是“Umlaute”如“ä,ü...”无法识别。我怎样才能解决这个问题?我已经使用UTF-8了。
database.php中
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
处理用户信息
$userData["firstName"] = e($bodyContent["firstName"]);
$userData["lastName"] = e($bodyContent["lastName"]);
MFUser::create(array(
'first_name' => $userData["firstName"],
'last_name' => $userData["lastName"]
));
移植
public function up()
{
Schema::create('mfusers', function (Blueprint $table) {
$table->increments('id');
$table->string('user_reference')->unique();
$table->string('first_name');
$table->string('last_name');
$table->integer('user_type_id')->unsigned();
$table->foreign('user_type_id')->references('id')->on('user_types');
$table->binary('salt', 16);
$table->string('email')->unique();
$table->string('password', 60);
$table->timestamps();
});
}
但“Möller”数据库中的输出是:M& uuml;米勒“
答案 0 :(得分:0)
e()
函数只是htmlentities()
的Laravel辅助函数。但是,不应使用htmlentites()
来尝试阻止SQL注入。它并没有逃脱它所需要的一切,这不是它的目的;它在输出HTML时用于防范XSS攻击。在将数据放入数据库之前,您不希望在数据上运行htmlentites()
,您希望在将数据拉出并即将显示之后运行数据(这是什么刀片双胡子({{ }}
)已经做了。
Laravel的Eloquent使用PDO和参数化查询来防止SQL注入。这已经为您完成了,所以除非您将raw
函数用于任何事情,否则您无需担心任何事情。
取消对e()
的电话,你应该好好去。