2017-07-02 5 views
0

so zum Beispiel Benutzer ip in db zu speichern:Laravel wie man inet_aton Insertion richtig esacpe?

$ip = Request::getClientIp(); 
... 
$post->user_ip = DB::raw("inet_aton('$ip')"); 
$post->save() 

Ich weiß wirklich nicht, wie dieser Code, wie man richtig die $ ip Variable zu entkommen?

Edit: ich nach einem Weg suchen, die Variable statt direkt mit ihm binden wie:

DB::insert('insert into users (ip) values (?)', [$ip]); 

von SQL-Injection zu schützen

+0

Was Sie nicht diesen Code mögen, was wollen Sie ändern? –

+0

@RossWilson Ich habe die Frage bearbeitet –

Antwort

1

Von Laravel docs:

Sie können auch auf die rohe, zugrunde liegende PDO-Instanz zugreifen, indem Sie die Methode getPdo für eine Verbindungsinstanz verwenden:

$pdo = DB::connection()->getPdo(); 

also in Ihrem Fall:

$ip = Request::getClientIp(); 
$ip = DB::connection()->getPdo()->quote($ip); // the escaping part 

$post->user_ip = DB::raw("inet_aton($ip)"); 
$post->save(); 
+0

Danke funktioniert Ich hoffe, es ist der richtige Weg, ein kleines Problem mit Ihrem Code ist ich ändert DB :: Raw ("inet_aton ('$ ip')"); zu DB :: raw ("inet_aton ($ ip)"); –