PHP-String, der verwandte Funktionen maskiert

怪我咯
Freigeben: 2023-03-13 07:16:01
Original
1846 Leute haben es durchsucht

Zusammenfassung der Funktionen im Zusammenhang mit der PHP-Zeichen-Escape-Funktion.

Bitte weisen Sie darauf hin ~

Die Konfigurationen und Funktionen im Zusammenhang mit PHP-String-Escape sind wie folgt:
1.magic_quotes_runtime
2.magic_quotes_gpc
3.addslashes() und striplashes()
4.mysql_escape_string()
5.addcslashes() und stripcslashes()
6.htmlentities() und html_entity_decode()
7.htmlspecialchars() und htmlspecialchars_decode()

Wenn magic_quotes_runtime aktiviert ist, fügen die meisten Funktionen von PHP automatisch Backslashes zu Überlaufzeichen in von außen importierten Daten hinzu (einschließlich Datenbanken oder Dateien).
Sie können set_magic_quotes_runtime() und get_magic_quotes_runtime()‍ verwenden, um seinen Status festzulegen und zu erkennen.
Hinweis: Diese beiden Funktionen sind in PHP 5.3.0 oder höher veraltet, was bedeutet, dass diese Option in PHP 5.3.0 oder höher deaktiviert ist.

Die Einstellung von magic_quotes_gpc legt fest, ob bestimmte Zeichen in den von GPC übertragenen Daten (GET, POST, COOKIE) automatisch maskiert werden sollen.
Sie können get_magic_quotes_gpc() verwenden, um die Einstellung zu erkennen . .
Wenn diese Einstellung nicht aktiviert ist, können Sie die Funktion addslashes() verwenden, um die Zeichenfolge hinzuzufügen und zu maskieren.

addslashes()‍ Fügen Sie einen Backslash vor dem angegebenen vordefinierten Zeichen hinzu.
Zu den vordefinierten Zeichen gehören einfache Anführungszeichen ('), doppelte Anführungszeichen ("), Backslash () und NUL (NULL-Zeichen).
Das Obige ist die Erklärung von W3SCHOOL.COM.CN. Das denke ich immer ist nicht sehr genau
Weil es einfache Anführungszeichen (') in doppelte Anführungszeichen (") umwandelt, wenn magic_quotes_sybase=on ist, und einfache Anführungszeichen (') in (') umwandelt, wenn magic_quotes_sybase=off
Stripslashes()-Funktion Seine Funktion ist genau das Gegenteil von addslashes(). Seine Funktion besteht darin, den Escape-Effekt zu entfernen.

mysql_escape_string() maskiert Sonderzeichen in Zeichenfolgen, die in SQL-Anweisungen verwendet werden. ‍
Zu den besonderen gehören hier (x00), (n), (r), (), ( '), ("), (x1a)

addcslashes()‍Verwenden Sie die Umkehrung im C-Sprachstil Schrägstriche maskieren Zeichen in einer Zeichenfolge. Diese Funktion wird selten verwendet. Es ist jedoch zu beachten, dass die Zeichen 0, a, b, f, n, r, t und v in sie umgewandelt werden

if(!get_magic_quotes_gpc()) { 
$_GET = daddslashes($_GET); 
$_POST = daddslashes($_POST); 
$_COOKIE = daddslashes($_COOKIE); 
$_FILES = daddslashes($_FILES); 
} 
function daddslashes($string, $force = 1) { 
if(is_array($string)) { 
foreach($string as $key => $val) { 
unset($string[$key]); 
$string[addslashes($key)] = daddslashes($val, $force); 
} 
} else { 
$string = addslashes($string); 
} 
return $string; 
}
Nach dem Login kopieren

‍>> 利用在用户输入或输出时候转义HTML实体以防止XSS漏洞的产生!

今天碰到一个处理文件特殊字符的事情,再次注意到这个问题,在php中:

* 以单引号为定界符的php字符串,支持两个转义\'和\\
* 以双引号为定界符的php字符串,支持下列转义:
\n 换行(LF 或 ASCII 字符 0x0A(10))
\r 回车(CR 或 ASCII 字符 0x0D(13))
\t 水平制表符(HT 或 ASCII 字符 0x09(9))
\\ 反斜线
\$ 美元符号
\" 双引号
\[0-7]{1,3} 此正则表达式序列匹配一个用八进制符号表示的字符
\x[0-9A-Fa-f]{1,2} 此正则表达式序列匹配一个用十六进制符号表示的字符

举几个例子:

一个包含\0特殊字符的例子:

$str = "ffff\0ffff"; 
echo(strlen($str)); 
echo("\n"); 
for($i=0;$i<strlen($str);$i++)echo("\t".ord($str{$i})); 
echo("\n");
Nach dem Login kopieren

输出结果:
----------------------

9
102 102 102 102 0 102 102 102 102

替换特殊字符的例子

$str = "ffff\0ffff"; 
$str = str_replace("\x0", "", $str);   
//或者用$str = str_replace("\0", "", $str);  
//或者用$str = str_replace(chr(0), "", $str);  
echo(strlen($str)); 
echo("\n"); 
for($i=0;$i<strlen($str);$i++)echo("\t".ord($str{$i})); 
echo("\n"); 
输出结果:
Nach dem Login kopieren

----------------------
8
102 102 102 102 102 102 102 102

八进制ascii码例子:

//注意,符合正则\[0-7]{1,3}的字符串,表示一个八进制的ascii码。 
$str = "\0\01\02\3\7\10\011\08\8";  //这里的\8不符合要求,被修正为"\\8" (ascii为92和56) 
echo(strlen($str)); 
echo("\n"); 
for($i=0;$i<strlen($str);$i++)echo("\t".ord($str{$i})); 
echo("\n");
Nach dem Login kopieren

输出结果:
----------------------
11
0 1 2 3 7 8 9 0 56 92 56

十六进制ascii码例子:

$str = "\x0\x1\x2\x3\x7\x8\x9\x10\x11\xff"; 
echo(strlen($str)); 
echo("\n"); 
for($i=0;$i<strlen($str);$i++)echo("\t".ord($str{$i})); 
echo("\n");
Nach dem Login kopieren

输出结果:
----------------------
10
        0       1       2       3       7       8       9       16      17      255

Das obige ist der detaillierte Inhalt vonPHP-String, der verwandte Funktionen maskiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!