ホームページ  >  記事  >  バックエンド開発  >  DZXフィルター機能 カプセル化抽出共有

DZXフィルター機能 カプセル化抽出共有

WBOY
WBOYオリジナル
2016-07-25 09:01:271040ブラウズ
dzxを新規インストールしたのですが、ふとサーバーがphp5.4.10であることを思い出しました。 *_magic_quotes_* 関数は無効になっており、サポートされていません。 dzxがどうやってやるか見てみたい。コードを調べてみました。アッドスラッシュが見つかりません。次に、dzxのフィルター機能を抽出しました。共有する。それは役に立たない。見てみることができます。


すべての関数定義は /source/class/discuz/discuz_database.php にあります

DBクラスは/source/class/class_core.phpの一番下に定義されています
  1. function quote($str, $noarray = false) {
  2. if (is_string($str))
  3. return ''' . addcslashes($str, "nr\'"
  4. function quote_field($field) {
  5. if (is_array($field)) {
  6. foreach ($field as $k => $v) {
  7. $field[$k] = self::quote_field($ v);
  8. }
  9. } else {
  10. if (strpos($field, '`') !== false)
  11. $field = str_replace(''', '', $field);
  12. $field = '`' . $field . '`';
  13. }
  14. $field;
  15. }
  16. コードをコピーします
function format($sql, $arg) {
$count = substr_count($sql, '%');
if (!$count) {
return $sql;
    } elseif ($count > count ($arg)) {
  1. throw new DbException('SQL 文字列形式エラー! この SQL には、置換するための "' . $count . '" vars が必要です。', 0, $sql);
  2. }
  3. $len = strlen( $sql);
  4. $i = $find = 0;
  5. $ret = '';
  6. while ($i if ($sql{$i} == '%') {
  7. $next = $sql{$i + 1};
  8. if ($next == 't') {
  9. $ret .= self::table($arg[$find]);
  10. } elseif ($next == 's') {
$ret .= self::quote(is_array($arg[$find]) ? Serialize($arg[$find]) : (文字列) $arg[$find] );
} elseif ($next == 'f') { $ret .= sprintf('%F', $arg[$find]); } elseif ($next == 'd') {
$ ret .= dintval($arg[$find]);
} elseif ($next == 'i') {
$ret .= $arg[$find];
    } elseif ($next == 'n') {
  1. if (!empty($arg[$find])) {
  2. $ret .= is_array($arg[$find]) implode(',', self::quote($arg[$find])) : self::quote($arg[$find]);
  3. } else {
  4. $ret .= '0';
  5. }
  6. } else {
  7. $ret .= self::quote($arg[$find]) ;
  8. }
  9. $i++;
  10. $find++;
  11. } else {
  12. $ret .= $sql{$i};
  13. }
  14. $i++;
  15. }
  16. if ($i < $len) {
  17. $ret . = substr($sql, $i);
  18. }
  19. return $ret;
  20. }
  21. }
  22. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。