Hướng dẫn php addslashes sql injection - php addlashes sql injection

- Hàm addslashes() dùng để thêm một dấu gạch chéo ngược (\) phía trước các ký tự là dấu nháy kép, dấu nháy đơn và dấu gạch chéo ngược trong chuỗi.addslashes() dùng để thêm một dấu gạch chéo ngược (\) phía trước các ký tự là dấu nháy kép, dấu nháy đơn và dấu gạch chéo ngược trong chuỗi.

- Lưu ý: Hàm này sẽ trả về một chuỗi mới chứ không làm thay đổi giá trị của chuỗi ban đầu.

- Để sử dụng hàm addslashes() thì ta dùng cú pháp như sau:addslashes() thì ta dùng cú pháp như sau:

addcslashes(string)

Xem ví dụ


Xem ví dụ

- Hàm addslashes() dùng để thêm một dấu gạch chéo ngược (\) phía trước các ký tự là dấu nháy kép, dấu nháy đơn và dấu gạch chéo ngược trong chuỗi.addslashes() dùng để thêm một dấu gạch chéo ngược (\) phía trước các ký tự là dấu nháy kép, dấu nháy đơn và dấu gạch chéo ngược trong chuỗi.

- Lưu ý: Hàm này sẽ trả về một chuỗi mới chứ không làm thay đổi giá trị của chuỗi ban đầu.

- Để sử dụng hàm addslashes() thì ta dùng cú pháp như sau:addslashes() thì ta dùng cú pháp như sau:

addcslashes(string)

Xem ví dụ


Xem ví dụ

Hàm addslashes() trong PHP để chèn vào chuỗi khi trong chuỗi dấu nháy kép " mà có dấu nháy đơn ' hay trong chuỗi dấu nháy đơn ' có dấu nháy kép "

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.freetuts.net, không được copy dưới mọi hình thức.

Ví dụ:

echo addslashes('Các bạn đang đọc bài tại "freetuts", chúc các bạn học PHP tốt');

Kết quả: Các bạn đang đọc bài tại \"freetuts\", chúc các bạn học PHP tốtCác bạn đang đọc bài tại \"freetuts\", chúc các bạn học PHP tốt

Bài viết này được đăng tại [free tuts .net]

Hoặc:

echo addslashes("Các bạn đang đọc bài tại 'freetuts', chúc các bạn học PHP tốt");

Kết quả: Các bạn đang đọc bài tại \'freetuts\', chúc các bạn học PHP tốtCác bạn đang đọc bài tại \'freetuts\', chúc các bạn học PHP tốt

Khi viết code PHP bạn sẽ cần dùng tới hàm addslashes trong PHP để sử dụng để trả về một chuỗi trích dẫn có dấu gạch chéo. Nó hoạt động với một số ký tự:

  • Dấu ngoặc kép (‘)
  • Dấu ngoặc kép (“)
  • Blackslash (|)
  • NUL (byte NUL)

Chẳng hạn để in một chuỗi ra màn hình trong PHP bạn sẽ viết như sau:

Như với trường hợp bạn muốn in dòng chữ I’m Blogger thì sao nhỉ?I’m Blogger thì sao nhỉ?

Nếu viết như bên dưới sẽ xảy ra lỗi

Cách viết chuỗi (String) với hàm addslashes trong PHP

0

Kết quả:

1

Hàm addslashes sẽ được sử dụng để chuẩn bị một chuỗi để lưu trữ trong cơ sở dữ liệu và các truy vấn cơ sở dữ liệu.

Đây là một hàm có độ phổ biến rộng rãi khi học lập trình PHP. Chính vì thế bạn cần ghi nhớ và thực hành về nó.

- Hàm addslashes() dùng để thêm một dấu gạch chéo ngược (\) phía trước các ký tự là dấu nháy kép, dấu nháy đơn và dấu gạch chéo ngược trong chuỗi.addslashes() dùng để thêm một dấu gạch chéo ngược (\) phía trước các ký tự là dấu nháy kép, dấu nháy đơn và dấu gạch chéo ngược trong chuỗi.

- Lưu ý: Hàm này sẽ trả về một chuỗi mới chứ không làm thay đổi giá trị của chuỗi ban đầu.

- Để sử dụng hàm addslashes() thì ta dùng cú pháp như sau:addslashes() thì ta dùng cú pháp như sau:

addcslashes(string)

Xem ví dụ


Xem ví dụ

Hàm addslashes() trong PHP để chèn vào chuỗi khi trong chuỗi dấu nháy kép " mà có dấu nháy đơn ' hay trong chuỗi dấu nháy đơn ' có dấu nháy kép "

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.Quote string with slashes

Ví dụ:

Kết quả: Các bạn đang đọc bài tại \"freetuts\", chúc các bạn học PHP tốt(string $string): string

  • Bài viết này được đăng tại [free tuts .net]
  • Hoặc:
  • Kết quả: Các bạn đang đọc bài tại \'freetuts\', chúc các bạn học PHP tốt
  • Khi viết code PHP bạn sẽ cần dùng tới hàm addslashes trong PHP để sử dụng để trả về một chuỗi trích dẫn có dấu gạch chéo. Nó hoạt động với một số ký tự:

Dấu ngoặc kép (‘)addslashes() is escaping the aforementioned characters in a string that is to be evaluated by PHP:

Dấu ngoặc kép (“)
$str 
"O'Reilly?";
eval(
"echo '" addslashes($str) . "';");
?>

Blackslash (|)addslashes() is sometimes incorrectly used to try to prevent SQL Injection. Instead, database-specific escaping functions and/or prepared statements should be used.

NUL (byte NUL)

Chẳng hạn để in một chuỗi ra màn hình trong PHP bạn sẽ viết như sau:

Như với trường hợp bạn muốn in dòng chữ I’m Blogger thì sao nhỉ?

Nếu viết như bên dưới sẽ xảy ra lỗi

Cách viết chuỗi (String) với hàm addslashes trong PHP

0

Kết quả:addslashes() example

Dấu ngoặc kép (“)
$str 
"Is your name O'Reilly?";// Outputs: Is your name O\'Reilly?
echo addslashes($str);
?>

Blackslash (|)

  • NUL (byte NUL)
  • Chẳng hạn để in một chuỗi ra màn hình trong PHP bạn sẽ viết như sau:
  • Như với trường hợp bạn muốn in dòng chữ I’m Blogger thì sao nhỉ?
  • Nếu viết như bên dưới sẽ xảy ra lỗi
  • Cách viết chuỗi (String) với hàm addslashes trong PHP
  • 0

Kết quả:

Hàm addslashes sẽ được sử dụng để chuẩn bị một chuỗi để lưu trữ trong cơ sở dữ liệu và các truy vấn cơ sở dữ liệu.

Đây là một hàm có độ phổ biến rộng rãi khi học lập trình PHP. Chính vì thế bạn cần ghi nhớ và thực hành về nó.

(PHP 4, PHP 5, PHP 7, PHP 8)

addslashes — Quote string with slashes

Description

addslashes(string $string): string

single quote (')

double quote (")

Dấu ngoặc kép (“)
$string
="O'Reilly";
$ser=serialize($string);    # safe -- won't count the slash
$result=addslashes($ser);
?>

...and not this...

Blackslash (|)
$string
="O'Reilly";
$add=addslashes($string);   # RISKY!  -- will count the slash
$result=serialize($add);
?>

In both cases, a backslash will be added after the apostrophe in "O'Reilly"; only in the second case will the backslash be included in the string length as recorded by serialize().

NUL (byte NUL)

Chẳng hạn để in một chuỗi ra màn hình trong PHP bạn sẽ viết như sau:

Như với trường hợp bạn muốn in dòng chữ I’m Blogger thì sao nhỉ?

Nếu viết như bên dưới sẽ xảy ra lỗi

$ var

= "Anh ấy nói \" Xin chào O'Reilly \ "& biến mất. đã nói \ "Xin chào O'Reilly \" & biến mất. \ NNEXT LINE ... ");

Geekcom ¶"He said \"Hello O'Reilly\" & disappeared.\nNext line...";
echo
"alert(".json_encode($var).");\n";?>

Output:
alert("He said \"Hello O'Reilly\" & disappeared.\nNext line...") ;

3 năm trước

Cho Php 7.3.* Sử dụng Filter_Sanitize_ADD_SLASHES.

lai tại n0spam dot pearlmagik dot com ¶

$ var
$str
= "Is your name O'Reilly?";
$strWithSlashes = filter_var($str, FILTER_SANITIZE_ADD_SLASHES);// Outputs: Is your name O\'Reilly?
echo $strWithSlashes;?>

21 năm trước

Hãy nhớ chém nhấn mạnh (_) và phần trăm các dấu hiệu (%), nếu bạn sẽ sử dụng toán tử tương tự trên biến hoặc bạn sẽ nhận được một số kết quả bất ngờ.

không có ¶

17 năm trước

AddSlashes không làm cho đầu vào của bạn an toàn để sử dụng trong truy vấn cơ sở dữ liệu! Nó chỉ thoát theo những gì PHP định nghĩa, không phải những gì trình điều khiển cơ sở dữ liệu của bạn định nghĩa. Bất kỳ việc sử dụng chức năng này để thoát khỏi các chuỗi để sử dụng trong cơ sở dữ liệu có thể là một lỗi - MySQL_REAL_ESCAPE_STRING, PG_ESCAPE_STRING, v.v., nên được sử dụng tùy thuộc vào cơ sở dữ liệu cơ bản của bạn vì mỗi cơ sở dữ liệu có các yêu cầu thoát ra khác nhau. Cụ thể, MySQL muốn \ n, \ r và \ x1a thoát ra mà Addslashes không làm. Do đó, dựa vào AddSlashes hoàn toàn không phải là một ý tưởng tốt và có thể khiến mã của bạn dễ bị rủi ro bảo mật. Tôi thực sự không thấy chức năng này phải làm gì.

thần thánh76 tại gmail dot com ¶

5 tháng trước

AddSlashes là * không bao giờ * Câu trả lời đúng, việc sử dụng (AB) có thể dẫn đến khai thác bảo mật!

Nếu bạn cần thoát HTML, thật không may) nếu bạn cần trích dẫn các đối số shell, nếu bạn cần phải trích dẫn chuỗi SQL đó là realreal_escape_string ($ str). "'";?> Orquote ($ str);?> Nếu bạn cần trích dẫn chuỗi JavaScript/JSON của nó

Nếu bạn cần trích dẫn một chuỗi trong xpath thì nó thật ('/catalog/item/item [title ='. xpath_quote ($ var). ']');? , 'Utf-16be', 'utf-8'); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ ord = hexdec (bin2hex ($ chr)); & nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; & nbsp; trả về Sprintf ('\\%x', $ ord); & nbsp; & nbsp; }; & nbsp; & nbsp; $ gốc (mb_detect_encoding ($ String); & nbsp; & nbsp; if ($ gốc incoding === false) {& nbsp; & nbsp; & nbsp; & nbsp; $ gốc incodeCoding = 'utf-8'; & nbsp; & nbsp; } & nbsp; & nbsp; ; & nbsp; & nbsp; $ String = mb_convert_encoding ($ String, 'UTF-8', $ gốc); // $ this-> toutf8 ($ String); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; // ném ngoại lệ mới ('mb_convert_encoding (\' '. $ String.' \ ', \' utf-8 \ ', \' '. $ gốc & nbsp; if ($ String === '' || ctype_digit ($ chuỗi)) {& nbsp; & nbsp; & nbsp; & nbsp; trả về chuỗi $; & nbsp; & nbsp; } & nbsp; & nbsp; $ result = preg_replace_callback ('/[^a-z0-9]/isu',/*$ this->*/$ cssmatcher, $ String); & nbsp; & nbsp; // var_dump ($ result); & nbsp; & nbsp; trả về mb_convert_encoding ($ result, $ gốc, 'UTF-8'); // $ this-> fromutf8 ($ result);}?>- nhưng không bao giờ bổ sung.
echo htmlentities($html, ENT_QUOTES|ENT_SUBSTITUTE|ENT_DISALLOWED);
?>
if you need to quote shell arguments, it's
$cmd.= " --file=" . escapeshellarg($arg);
?>
if you need to quote SQL strings it's
$sql.= "WHERE col = '".$mysqli->real_escape_string($str)."'";
?>
or
$sql.= "WHERE col = " . $pdo->quote($str);
?>
if you need to quote javascript/json strings its
let str = json_encode($str, JSON_THROW_ON_ERROR);?>;
?>

David Spector ¶
//based on https://stackoverflow.com/a/1352556/1067003
function xpath_quote(string $value):string{
    if(
false===strpos($value,'"')){
        return
'"'.$value.'"';
    }
    if(
false===strpos($value,'\'')){
        return
'\''.$value.'\'';
    }
   
// if the value contains both single and double quotes, construct an
    // expression that concatenates all non-double-quote substrings with
    // the quotes, e.g.:
    //
    //    concat("'foo'", '"', "bar")
   
$sb='concat(';
   
$substrings=explode('"',$value);
    for(
$i=0;$i<count($substrings);++$i){
       
$needComma=($i>0);
        if(
$substrings[$i]!==''){
            if(
$i>0){
               
$sb.=', ';
            }
           
$sb.='"'.$substrings[$i].'"';
           
$needComma=true;
        }
        if(
$i < (count($substrings) -1)){
            if(
$needComma){
               
$sb.=', ';
            }
           
$sb.="'\"'";
        }
    }
   
$sb.=')';
    return
$sb;
}
$xp->query('/catalog/items/item[title='.xpath_quote($var).']');
?>
if you need to quote strings in CSS its
// CSS escape code ripped from Zend Framework ( https://github.com/zendframework/zf2/blob/master/library/Zend/Escaper/Escaper.php )
function css_escape_string($string)
{
   
$cssMatcher = function ($matches) {
       
$chr = $matches[0];
        if (
strlen($chr) == 1) {
           
$ord = ord($chr);
        } else {
           
$chr = mb_convert_encoding($chr, 'UTF-16BE', 'UTF-8'); // $this->convertEncoding($chr, 'UTF-16BE', 'UTF-8');
           
$ord = hexdec(bin2hex($chr));
        }
        return
sprintf('\\%X ', $ord);
    };
   
$originalEncoding = mb_detect_encoding($string);
    if (
$originalEncoding === false) {
       
$originalEncoding = 'UTF-8';
    }
    ;
   
$string = mb_convert_encoding($string, 'UTF-8', $originalEncoding); // $this->toUtf8($string);
                                                                        // throw new Exception('mb_convert_encoding(\''.$string.'\',\'UTF-8\',\''.$originalEncoding.'\');');
   
if ($string === '' || ctype_digit($string)) {
        return
$string;
    }
   
$result = preg_replace_callback('/[^a-z0-9]/iSu', /*$this->*/$cssMatcher, $string);
   
// var_dump($result);
   
return mb_convert_encoding($result, $originalEncoding, 'UTF-8'); // $this->fromUtf8($result);
}?>

- but never addslashes.

8 năm trước

Nếu tất cả những gì bạn muốn làm là trích dẫn một chuỗi như bạn thường làm trong PHP (ví dụ: khi trả về kết quả AJAX, bên trong giá trị chuỗi JSON hoặc khi xây dựng URL với ARGS), không sử dụng AddSlashes (bạn không 'không muốn cả "và' thoát ra cùng một lúc). Thay vào đó, chỉ cần sử dụng chức năng này:

Sửa đổi điều này một cách dễ dàng để có được một chức năng trình chạy đơn.

Stuart tại Horuskol Dot Co Dot Uk ¶
function Quote($Str) // Double-quoting only
   
{
   
$Str=str_replace('"','\"',$Str);
    return
'"'.$Str.'"';
    }
// Quote
?>

Modify this easily to get a single-quoting function.

13 năm trước

Hãy cẩn thận về việc bạn sử dụng các trích dẫn kép hay đơn khi tạo chuỗi để thoát ra:

$ test = 'Đây là một dòng \ r \ nand Đây là một dòng khác \ r \ nand dòng này có \ ta tab';

echo $ test; echo "\ r \ n \ r \ n"; echo addslashes ($ test);

$ test = "Đây là một dòng \ r \ nand Đây là một dòng khác \ r \ nand dòng này có \ ta tab";
echo "\r\n\r\n";
echo addslashes($test);

Nate từ Ruggf Family.com

$ test = "Đây là một dòng \ r \ nand Đây là một dòng khác \ r \ nand dòng này có \ ta tab";
echo "\r\n\r\n";
echo addslashes($test);

Nate từ Ruggf Family.com

15 năm trước

Nếu bạn muốn thêm dấu gạch chéo vào các ký hiệu đặc biệt sẽ can thiệp vào biểu thức thông thường (tức là,. \ + *? [ ^] $ () {} =! <> | :), bạn nên sử dụng hàm preg_quote ().

Adrian C ¶

15 năm trước

Nếu bạn muốn thêm dấu gạch chéo vào các ký hiệu đặc biệt sẽ can thiệp vào biểu thức thông thường (tức là,. \ + *? [ ^] $ () {} =! <> | :), bạn nên sử dụng hàm preg_quote ().

Adrian C ¶
    if(strpos(str_replace("\'",""," $str"),"'")!=false)
        return addslashes($str);
    else
        return $str;
}

Điều gì xảy ra khi bạn thêm AddSlashes (AddSlashes ($ str))? Đây không phải là một điều tốt và nó có thể được sửa chữa:
checkaddslashes("aa\'bb"); => aa\'bb
checkaddslashes("\'"); => \'
checkaddslashes("'");  => \'

Chức năng checkaddslashes ($ str) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; if (strpos (str_replace ("\ '", "", "$ str"), "'")! = false) & nbsp; & nbsp; & nbsp; & nbsp; trả về addslashes ($ str); & nbsp; & nbsp; khác & nbsp; & nbsp; & nbsp; & nbsp; trả về $ str;}

CheckAddSlashes ("aa'bb"); & nbsp; => aa \ 'bbcheckaddslashes ("aa \' bb"); => aa \ 'bbcheckaddslashes ("\'"); => \ 'CheckAddSlashes ("'"); & nbsp; => \ '

Hy vọng điều này sẽ giúp bạn

Kén chọn, khó tính ¶

http://www.newsforge.com/article.pl?sid=06/05/23/2141246

Ngoài ra, điều đáng nói là PostgreSQL sẽ sớm bắt đầu chặn các truy vấn liên quan đến các trích dẫn đã thoát ra bằng cách sử dụng \ làm ký tự thoát, đối với một số trường hợp, phụ thuộc vào mã hóa của chuỗi. & NBSP; Cách tiêu chuẩn để thoát khỏi trích dẫn trong SQL (không phải tất cả các cơ sở dữ liệu SQL, nhớ bạn) là bằng cách thay đổi trích dẫn đơn thành hai trích dẫn đơn (ví dụ: '' 'trở thành' '' 'cho các truy vấn).

Bạn nên xem xét các cách khác để thoát khỏi các chuỗi, chẳng hạn như "mysql_real_escape_string" (xem nhận xét bên dưới) và các chức năng thoát cụ thể của cơ sở dữ liệu khác.

PHP tại slamb dot org ¶

19 năm trước

Spamdunk tại nhà dot com, cách của bạn rất nguy hiểm trên postgresql (và có lẽ là mysql). Bạn hoàn toàn đúng khi ANSI SQL chỉ định bằng cách sử dụng 'để thoát, nhưng các cơ sở dữ liệu đó cũng hỗ trợ \ để thoát (vi phạm tiêu chuẩn, tôi nghĩ vậy). Điều đó có nghĩa là nếu chúng vượt qua trong một chuỗi bao gồm "\ '", bạn sẽ mở rộng nó thành "\' ''" (một trích dẫn thoát ra sau đó là một trích dẫn không được trục xuất. , tự làm quản trị viên, bất cứ điều gì họ muốn.)

Cách tốt nhất để an toàn và chính xác là:

- Không sử dụng trích dẫn ma thuật; Cách tiếp cận này là xấu. Đối với người mới bắt đầu, đó là giả định rằng bạn sẽ sử dụng đầu vào của mình trong truy vấn cơ sở dữ liệu, tùy ý. (Tại sao không thoát khỏi tất cả "

- Khi chèn vào cơ sở dữ liệu, hãy sử dụng các câu lệnh được chuẩn bị với các trình giữ chỗ. Ví dụ: khi sử dụng Pear DB:

Chuẩn bị ('Cập nhật MB_USERS Đặt mật khẩu =? WHERE Username =?'); & nbsp; & nbsp; $ dbh-> exec ($ stmt, mảng ('12345', 'bob')); ?> Lưu ý rằng không có trích dẫn xung quanh? S. Nó xử lý điều đó cho bạn tự động. Nó được đảm bảo là an toàn cho cơ sở dữ liệu của bạn. (Chỉ cần 'trên oracle, \ và' trên postgresql, nhưng bạn thậm chí không cần phải nghĩ về nó.)
    $stmt
= $dbh->prepare('update mb_users set password = ? where username = ?');
   
$dbh->execute($stmt, array('12345', 'bob'));
?>

Notice that there are no quotes around the ?s. It handles that for you automatically. It's guaranteed to be safe for your database. (Just ' on oracle, \ and ' on PostgreSQL, but you don't even have to think about it.)

Ngoài ra, nếu cơ sở dữ liệu hỗ trợ các câu lệnh đã chuẩn bị (PostgreSQL 7.3, Oracle, v.v.), một số thực thi trên cùng một chế phẩm có thể nhanh hơn, vì nó có thể sử dụng lại kế hoạch truy vấn tương tự. Nếu nó không (MySQL, v.v.), cách này rơi trở lại trích dẫn mã được viết cụ thể cho cơ sở dữ liệu của bạn, tránh vấn đề tôi đã đề cập ở trên.

.

Luciano tại Vittoretti dot com dot br ¶

16 năm trước

Lưu ý, chức năng này sẽ không hoạt động với các truy vấn MSSQL hoặc truy cập. Sử dụng chức năng ở trên (cũng hoạt động với các mảng).
Use the function above (work with arrays too).

hàm addslashes_mssql ($ str) {& nbsp; & nbsp; if (is_array ($ str)) {& nbsp; & nbsp; & nbsp; & nbsp; foreach ($ str như $ id => $ value) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ str [$ id] = addslashes_mssql ($ value); & nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; } khác {& nbsp; & nbsp; & nbsp; & nbsp; $ str = str_replace ("'", "' '", $ str); & nbsp; & nbsp; & nbsp; & nbsp; }
    if (is_array($str)) {
        foreach($str AS $id => $value) {
            $str[$id] = addslashes_mssql($value);
        }
    } else {
        $str = str_replace("'", "''", $str);   
    }

& nbsp; & nbsp; & nbsp; & nbsp; trả về $ str;}
}

chức năng stripslashes_mssql ($ str) {& nbsp; & nbsp; if (is_array ($ str)) {& nbsp; & nbsp; & nbsp; & nbsp; foreach ($ str như $ id => $ value) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ str [$ id] = stripslashes_mssql ($ value); & nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; } khác {& nbsp; & nbsp; & nbsp; & nbsp; $ str = str_replace ("''", "'", $ str); & nbsp; & nbsp; & nbsp; & nbsp; }
    if (is_array($str)) {
        foreach($str AS $id => $value) {
            $str[$id] = stripslashes_mssql($value);
        }
    } else {
        $str = str_replace("''", "'", $str);   
    }

& nbsp; & nbsp; trả về $ str;}
}

Lars ¶

10 năm trước

Ngay cả đối với mã hóa Backslash chuỗi JSON đơn giản, không sử dụng chức năng này. Một số xét nghiệm có thể hoạt động tốt, nhưng trong JSON, một trích dẫn duy nhất (') không được thoát ra.

Joechrz tại Gmail Dot Com ¶

16 năm trước

Lưu ý, chức năng này sẽ không hoạt động với các truy vấn MSSQL hoặc truy cập. Sử dụng chức năng ở trên (cũng hoạt động với các mảng).

hàm addslashes_mssql ($ str) {& nbsp; & nbsp; if (is_array ($ str)) {& nbsp; & nbsp; & nbsp; & nbsp; foreach ($ str như $ id => $ value) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ str [$ id] = addslashes_mssql ($ value); & nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; } khác {& nbsp; & nbsp; & nbsp; & nbsp; $ str = str_replace ("'", "' '", $ str); & nbsp; & nbsp; & nbsp; & nbsp; }
function escape_quotes($receive) {
    if (!
is_array($receive))
       
$thearray = array($receive);
    else
       
$thearray = $receive;

& nbsp; & nbsp; & nbsp; & nbsp; trả về $ str;}

chức năng stripslashes_mssql ($ str) {& nbsp; & nbsp; if (is_array ($ str)) {& nbsp; & nbsp; & nbsp; & nbsp; foreach ($ str như $ id => $ value) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ str [$ id] = stripslashes_mssql ($ value); & nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; } khác {& nbsp; & nbsp; & nbsp; & nbsp; $ str = str_replace ("''", "'", $ str); & nbsp; & nbsp; & nbsp; & nbsp; }($thearray) as $string) {
       
$thearray[$string] = addslashes($thearray[$string]);
       
$thearray[$string] = preg_replace("/[\\/]+/","/",$thearray[$string]);
    }

& nbsp; & nbsp; trả về $ str;}

is_array($receive))
        return
$thearray[0];
    else
        return
$thearray;
}
?>

Lars ¶

10 năm trước

Ngay cả đối với mã hóa Backslash chuỗi JSON đơn giản, không sử dụng chức năng này. Một số xét nghiệm có thể hoạt động tốt, nhưng trong JSON, một trích dẫn duy nhất (') không được thoát ra.
Danijel Pticar
05-Aug-2009 05:22
I recommend this extended version, to replace addslashes altogether(works for both strings and arrays):
function addslashesextended(&$arr_r)
{
    if(
is_array($arr_r))
    {
        foreach (
$arr_r as &$val)
           
is_array($val) ? addslashesextended($val):$val=addslashes($val);
        unset(
$val);
    }
    else
       
$arr_r=addslashes($arr_r);
}
?>

Joechrz tại Gmail Dot Com ¶

Dưới đây là một ví dụ về một chức năng ngăn chặn quá trình trích dẫn kép, tôi ngạc nhiên là không có thứ gì đó như thế này ... (cũng hoạt động trên mảng)

escape '$'  using backslash '\$'

hàm addslashes_mssql ($ str) {& nbsp; & nbsp; if (is_array ($ str)) {& nbsp; & nbsp; & nbsp; & nbsp; foreach ($ str như $ id => $ value) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ str [$ id] = addslashes_mssql ($ value); & nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; } khác {& nbsp; & nbsp; & nbsp; & nbsp; $ str = str_replace ("'", "' '", $ str); & nbsp; & nbsp; & nbsp; & nbsp; }

& nbsp; & nbsp; & nbsp; & nbsp; trả về $ str;}

= "5 + 3";
 
$sum = 0
 
$evalStr = " \$sum = ". $evalStr.";"
  eval(
$evalStr);
  print (
"sum ".$sum);?>