Friday, 20 May 2016

Deprecated: mysql_real_escape_string

mysql_real_escape_string di PHP7 di buang, sebagai gantinya kita dapat menggunakan mysqli_real_escape_string, tetapi untuk menggunakan fungsi mysql_real_escape_string kita harus membuka konoeksi ke database.

Agar tetap menjaga agar tidak terjadi BC break, kita dapat mengganti mysql_real_escape_string dengan cara berikut [1] :

if (function_exists('mysql_real_escape_string')) {
return mysql_real_escape_string($text);
} elseif (function_exists('mysql_escape_string')) {
return mysql_escape_string($text);
} else {
return addslashes($text);
}

Tetapi jika kita dapat membuka koneksi ke database, sebaiknya kita menggunakan mysqli_real_escape_string

Pertanyaannya adalah : seaman apakah penggunaan addslashes jika dibandingkan dengan mysqli_real_escape_string dalam mencegaj SQL injection  ?

Referensi


  1. Ticket #10061 (closed defect: invalid), http://trac.symfony-project.org/ticket/10061

Thursday, 19 May 2016

Deprecated: preg_replace()

Contoh 1 :

Dari lib/vendor/symfony/lib/controller/sfRouting.class.php (symfony 1.4)

....
$real_url = preg_replace('/\:([^\/]+)/e', 'urlencode($params["\\1"])', $url);
....

Menjadi :

private function callbackurl($matches) {
  urlencode($matches[1]);
}

....
$real_url = preg_replace_callback('/\:([^\/]+)/', array($this,'callbackurl'), $url);
....

Contoh 2 :


Dari lib/vendor/symfony/lib/response/sfWebResponse.class.php (symfony 1.4)

....
return preg_replace('/\-(.)/e', "'-'.strtoupper('\\1')", strtr(ucfirst(strtolower($name)), '_', '-'));
....

Menjadi  :

protected function callbacknormalizeHeaderName($matches) {
  return '-'.strtoupper($matches[1]);
}

.....
return preg_replace_callback('/\-(.)/', array($this,'callbacknormalizeHeaderName'), strtr(ucfirst(strtolower($name)), '_', '-'));
....
Contoh   :

Dari lib/vendor/symfony/lib/addon/propel/builder/SfMapBuilderBuilder.php (symfony 1.0)

.....
$script = preg_replace("/\\\$tMap\->addColumn\('([^']+)', '([^']+)', '([^']+)', CreoleTypes\:\:VARCHAR, (false|true)\)/e", '"\\\$tMap->addColumn(\'$1\', \'$2\', \'$3\', CreoleTypes::VARCHAR, $4, {$sizes[\'$2\']})"', $script);
....

Menjadi :

..

Referensi


  1. fixes #679 change using preg_replace e modifier to preg_replace_callb..., https://github.com/asmisha/SonataDoctrineORMAdminBundle/commit/9fd60a4641f6b8bfc2f89e29b8ab84c47aa62f7e

Berkenalan dengan PHP7

Status : Draft

Referensi

  1. What is the difference between PHP7 and PHP5? [closed], http://stackoverflow.com/questions/34760219/what-is-the-difference-between-php7-and-php5
  2. HP RFC: Remove deprecated functionality in PHP 7, https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7
  3. Migrating from PHP 5.6.x to PHP 7.0.x, http://php.net/manual/en/migration70.php