2016-03-26 20 views
0

POST isteğiyle gönderilen kullanıcı girdisini veritabanıma umutsuzca kaydetmeye çalışıyorum ancak "ä, ü ..." gibi "Umlaute" ifadeleri tanınmıyor. Bunu nasıl düzeltebilirim? Ben zaten UTF-8 kullanıyorum.Umlaut'u Almanca dilinde veritabanına kaydetme

DatabaseFunctions.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, 
], 

kullanıcı bilgisi

$userData["firstName"] = e($bodyContent["firstName"]); 
$userData["lastName"] = e($bodyContent["lastName"]); 



MFUser::create(array(
     'first_name' => $userData["firstName"], 
     'last_name' => $userData["lastName"] 
    )); 

İşleme Göç

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(); 
     }); 
    } 

Bu t "Möller" veritabanında çıkışı M & uuml; Müller"

+0

Sütun ve veritabanının UTF8 olduğundan emin olmanız gerekir. Ayrıca komut dosyasının UTF8 olduğundan emin olun. –

+0

Bunu nasıl yaparım? – sesc360

+0

Belki de eklemeden önce değerlerin tamam olup olmadığını kontrol etmek için var_dump $ bodyContent ["firstName"] ve $ userData ["firstName"] olabilir. Belki sorun veritabanında –

cevap

0

e() fonksiyonu htmlentities() için bir laravel yardımcı fonksiyonudur. Ancak, SQL enjeksiyonunu engellemek için htmlentites() kullanılmamalıdır. İhtiyacı olan her şeyden kaçmaz ve bu onun amacı değildir; XSS saldırılarına karşı korunmak için HTML'nizi çıktılarken kullanılır. Veritabanınıza koymadan önce verilerinizde htmlentites()'u çalıştırmak istemezsiniz. Verileriniz üzerinde çektikten sonra bunu göstermek istediğinizde ve bunu göstermek üzereyseniz (hangi bıçakların çift bıyık ({{ }}) zaten) yapar.

Laravel'in Eloquent'i SQL enjeksiyonunu önlemek için PDO ve parametreli sorguları kullanır. Bu zaten sizin için hazırlandı, bu yüzden hiçbir şey için raw işlevlerini kullanmıyorsanız endişelenmeniz gereken bir şey yok.

Aramayı e() numaralı telefondan kaldırın ve iyi gitmeniz gerekiyor.