php的addslashes,PHP的addslashes函數的作用

本文目錄一覽:

php stripslashes和addslashes的區別

就函數名稱來說他們的區別:stripslashes(剝離斜線)addslashes(添加斜線)

stripslashes(string $str)簡單說就是剝離或轉化$str字串中的斜線,官方的話說就是反引用一個引用字串。一個簡單的例子:echo stripslashes(“Is your name O\’reilly?”);//Is your name O’reilly?

addslashes(string $str)相反,就是添加斜線,官方的說法就是使用反斜線引用字符串。一個簡單的例子:echo addslashes(“Is your name O’reilly?”);//Is your name O\’reilly?

使用場景:其實這兩個函數主要使用在一些需要轉化特殊字符的數據處理中,比如數據庫操作,在寫入數據庫的時候,我們需要把單引號這樣的特殊字符轉義之後保存,而在讀取的時候,我們又需要把數據庫中的這些被轉義的特殊字符反轉義回來。

他們具體的用法及注意的地方可以參看PHP文檔

addslashes用途與php怎樣防止mysql注入

php中addslashes函數與sql防注入。具體分析如下:

addslashes可會自動給單引號,雙引號增加\\\\\\,這樣我們就可以安全的把數據存入數據庫中而不黑客利用,參數’a..z’界定所有大小寫字母均被轉義,代碼如下:

複製代碼 代碼如下:

echo addcslashes(‘foo[ ]’,’a..z’); //輸出:foo[ ]

$str=”is your name o’reilly?”; //定義字符串,其中包括需要轉義的字符

echo addslashes($str); //輸出經過轉義的字符串

定義和用法:addslashes() 函數在指定的預定義字符前添加反斜杠.

這些預定義字符是:單引號 (‘),雙引號 (“),反斜杠 (),null

語法:addslashes(string),當然這個函數更安全,實例代碼如下:

複製代碼 代碼如下:

$str=”a href=’test’test/a”; //定義包含特殊字符的字符串

$new=htmlspecialchars($str,ent_quotes); //進行轉換操作

echo $new; //輸出轉換結果

//不過輸出時要用到

$str=”jane ‘tarzan'”; //定義html字符串

echo html_entity_decode($str); //輸出轉換後的內容

echo “br/”;

echo html_entity_decode($str,ent_quotes); //有可選參數輸出的內容

解析php addslashes與addclashes函數的區別和比較

PHP addcslashes() 函數

定義和用法

addcslashes() 函數在指定的字符前添加反斜杠。

語法

addcslashes(string,characters)參數 描述

string 必需。規定要檢查的字符串。

characters 可選。規定受 addcslashes() 影響的字符或字符範圍。

提示和注釋

注釋:在對 0,r,n 和 t 應用 addcslashes() 時要小心。在 PHP 中,\0,\r,\n 和 \t 是預定義的轉義序列。

實例

例子 1

在本例中,我們要向字符串中的特定字符添加反斜杠:

?php

$str = “Hello, my name is John Adams.”;

echo $str;

echo addcslashes($str,’m’);

echo addcslashes($str,’J’);

?

/*

   輸出:

    Hello, my name is John Adams.

    Hello, \my na\me is John Ada\ms.

    Hello, my name is \John Adams.

*/

PHP addslashes() 函數

定義和用法

addslashes() 函數在指定的預定義字符前添加反斜杠。

這些預定義字符是:

•單引號 (‘)

•雙引號 (“)

•反斜杠 (\)

•NULL

語法

addslashes(string)參數 描述

string 必需。規定要檢查的字符串。

提示和注釋

提示:該函數可用於為存儲在數據庫中的字符串以及數據庫查詢語句準備合適的字符串。

注釋:默認情況下,PHP 指令 magic_quotes_gpc 為 on,對所有的 GET、POST 和 COOKIE 數據自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。

例子

在本例中,我們要向字符串中的預定義字符添加反斜杠:

?php

$str = “Who’s John Adams?”;

echo $str . ” This is not safe in a database query.br /”;

echo addslashes($str) . ” This is safe in a database query.”;

?

/*

輸出:

Who’s John Adams? This is not safe in a database query.

Who\’s John Adams? This is safe in a database query.他們都有對應的去除他們添加的反斜杠的方法,分別是:stripcslashes()和stripslashes()。

*/

php addslashes 後怎麼還原

php 語言里,對於反斜杠的處理有 addslashes() 和 stripslashes(),兩者的作用正好相反:

addslashes():對輸入字符串中的某些預定義字符前添加反斜杠,這樣處理是為了數據庫查詢語句等的需要。這些預定義字符是:單引號 (‘) ,雙引號 (“) ,反斜杠 (\) ,NULL。

stripslashes():刪除由 addslashes() 函數添加的反斜杠。該函數用於清理從數據庫或 HTML 表單中取回的數據。(若是連續二個反斜杠,則去掉一個,保留一個;若只有一個反斜杠,就直接去掉。)

php中addslashes()函數的用途

addslashes

使用反斜線引用字符串

string

addslashes

(

string

str

)

返回字符串,該字符串為了數據庫查詢語句等的需要在某些字符前加上了反斜線。這些字符是單引號(’)、雙引號(”)、反斜線(\)與

NUL(NULL

字符)。

一個使用

addslashes()

的例子是當你要往數據庫中輸入數據時。例如,將名字

O’reilly

插入到數據庫中,這就需要對其進行轉義。大多數據庫使用

\

作為轉義符:O\’reilly。這樣可以將數據放入數據庫中,而不會插入額外的

\。當

PHP

指令

magic_quotes_sybase

被設置成

on

時,意味着插入

時將使用

進行轉義。

默認情況下,PHP

指令

magic_quotes_gpc

on,它主要是對所有的

GET、POST

COOKIE

數據自動運行

addslashes()。不要對已經被

magic_quotes_gpc

轉義過的字符串使用

addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數

get_magic_quotes_gpc()

進行檢測。

PHP中使用addslashes函數轉義的安全性原理分析

本文實例講述了PHP中使用addslashes函數轉義的安全性原理分析。分享給大家供大家參考。具體分析如下:

先來看一下ECshop中addslashes_deep的原型

複製代碼

代碼如下:function

addslashes_deep($value)

{

if

(empty($value))

{

return

$value;

//如為空,直接返回;

}

else

{

return

is_array($value)

?

array_map(‘addslashes_deep’,

$value):

addslashes($value);

}

//遞歸處理數組,直至遍歷所有數組元素;

}

addslashes_deep函數本身沒有問題,但使用時得注意一點

恰好今天也是在網上看到了有人發了關於使用這個函數使用的BUG注入漏洞

這個函數在引用回調函數addslashes時,只對數據的值進行轉義,所以如果使用者在此過程中引用數組的鍵進行特定處理時,存在$key注入風險,此時可更改addslashes_deep函數,使其同時對鍵值進行轉義,或者使用時明確不引用鍵內容。

希望本文所述對大家的PHP程序設計有所幫助。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/156828.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 01:58
下一篇 2024-11-18 01:58

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29

發表回復

登錄後才能評論