導航:首頁 > 編程語言 > phpselect函數

phpselect函數

發布時間:2025-05-29 08:38:26

php防sql注入漏洞可以用什麼函數

1.函數的構建
function inject_check($sql_str) {
return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 進行過濾
}
function verify_id($id=null) {
if (!$id) { exit('沒有提交參數!'); } // 是否為空判斷
elseif (inject_check($id)) { exit('提交的參數非法!'); } // 注射判斷
elseif (!is_numeric($id)) { exit('提交的參數非法!'); } // 數字判斷
$id = intval($id); // 整型化
return $id;
}?
function str_check( $str ) {
if (!get_magic_quotes_gpc()) { // 判斷magic_quotes_gpc是否打開
$str = addslashes($str); // 進行過濾
}
$str = str_replace("_", "\_", $str); // 把 '_'過濾掉
$str = str_replace("%", "\%", $str); // 把 '%'過濾掉
return $str;
}
function post_check($post) {
if (!get_magic_quotes_gpc()) { // 判斷magic_quotes_gpc是否為打開
$post = addslashes($post); // 進行magic_quotes_gpc沒有打開的情況對提交數據的過濾
}
$post = str_replace("_", "\_", $post); // 把 '_'過濾掉
$post = str_replace("%", "\%", $post); // 把 '%'過濾掉
$post = nl2br($post); // 回車轉換
$post = htmlspecialchars($post); // html標記轉換
return $post;
}
2.函數的使用實例
<?php
if (inject_check($_GET['id']))
{
exit('你提交的數據非法,請檢查後重新提交!');
}
else
{
$id = $_GET['id'];
//處理數據………………
}
?>

⑵ PHP怎麼取得MYSQL欄位(值)的總和!

$query="selectsum(line)fromdx_member";
$result=mysql_query($query)ordie('SQL語句有誤:'.mysql_error());

⑶ PHP中的mysqlassoc函數及其應用mysqlassoc

PHP中的mysql_assoc函數及其應用
在PHP編程語言中,mysql_assoc函數是一個強大且廣泛使用的函數。它可以使得關系資料庫的管理和操作變得容易和普遍,MySQL資料庫中的數據類型可以使用該函數進行轉換,並且能夠將數據結構使用這個函數進行組裝,形成一個基於關聯數組的數據結果。本文將會介紹mysql_assoc函數的使用方法和特點。
一、mysql_assoc函數簡介
mysql_assoc函數是一個在PHP中常用的函數,它用於將資料庫中的查詢結果轉換成關聯數組(Associative Array)的形式,以便於在PHP中更方便地處理、操作、存儲數據。
mysql_assoc函數的語法格式如下:
mysql_assoc(resource $result)
其中,$result參數指向包含查詢結果的資源標識符的變數。當使用該函數時,必須預先在MySQL資料庫中執行查詢,並將查詢的結果保存在$result變數中。
mysql_assoc函數實際上是mysql_fetch_assoc函數的別名,這是由於PHP 5.0.0版本以後,從原來的MySQL擴展庫中移除。因此,該函數可以在PHP 5.0.0版本以前的所有版本中使用,但在新版本的php中需要使用mysqli庫。
二、mysql_assoc函數的應用
1.將查詢結果轉換為關聯數組
mysql_assoc函數的主要用途是將查詢結果轉換為關聯數組。通常,查詢操作會返回一個由一系列欄位構成的記錄集,其中每個欄位都具有一個唯一的名稱,例如下面的示例:
$selectQuery = “SELECT id,username,eml FROM users”;
$result = mysql_query($selectQuery);
在上面的代碼中,我們查詢了一個名為users的表,並且檢索了表中的id、username和eml欄位,該語句將返回一個記錄集,該記錄集包含多個行,每個行都由id、username和eml欄位組成。
為了處理這個記錄集,我們可以使用mysql_fetch_array或mysql_fetch_assoc函數來遍歷所有行,並返回一個數字或關聯索引的數組,如下面的示例所示:
while($row = mysql_fetch_assoc($result)){
echo “ID: “.$row[‘id’].” – Name: “.$row[‘username’] . ” – Eml: ” .$row[’eml’].”
“;
}
在上面的代碼中,我們循環遍歷結果集,並使用mysql_fetch_assoc函數將每行轉換為一個關聯數組。然後,可以使用關聯數組的鍵訪問每個欄位的值,以便在PHP中使用和操作數據。
2.返回查詢結果的第一行
mysql_assoc函數還可以直接返回查詢結果集中的第一行。通過這個方式,我們可以直接訪問查詢結果集並獲取其第一行,而無需通過循環遍歷數組來獲得。示例如下:
$selectQuery = “SELECT id,username,eml FROM users”;
$result = mysql_query($selectQuery);
$row = mysql_assoc($result);
echo “ID: “.$row[‘id’].” – Name: “.$row[‘username’] . ” – Eml: ” .$row[’eml’].”
“;
在上面的代碼中,我們首先執行一個查詢,然後使用mysql_assoc函數直接獲取結果集的第一行。在關聯數組中,我們可以直接通過鍵來訪問每個欄位的值。
三、mysql_assoc函數的特點
1.關聯數組
mysql_assoc函數返回的是一個關聯數組,其中每個欄位都有自己的鍵。這種方法比使用mysql_fetch_array方法返回的數字數組更方便和可讀,在處理資料庫查詢時十分常用。
2.可讀性
mysql_assoc函數返回的結果為一個關聯數組,這意味著每個欄位都有一個自己的標簽,使得每個鍵可以清晰地指示每個欄位的意義。這使得瀏覽代碼和將數據存儲到內存中變得容易且直觀。
3.簡潔性
mysql_assoc函數是一種簡潔的PHP語法,可以幫助程序員編寫更容易理解和維護的代碼。在處理資料庫查詢結果時,它可以更快地生成關聯數組。
四、總結
mysql_assoc函數是PHP編程語言中一個強大的函數,可以將資料庫中的查詢結果轉換成易於操作、讀取和存儲的關聯數組形式。在相對於mysql_fetch_array和mysql_fetch_row之外,它的使用可以提高PHP程序的速度和可讀性。每個欄位都有一個自己的鍵,這使得數據集更加清晰和直觀,程序員可以更快地理解和處理數據內容。但是,由於mysql_ASSOC函數基於將記錄集轉換為關聯數組的機制,要求開發人員小心設計程序代碼,避免意外錯誤的出現。

⑷ PHP流(Stream)的概述與使用詳解

在現代 PHP 特性中,流或許是最出色但使用率最低的。雖然 PHP 4.3 就引入了流,但是很多開發者並不知道流的存在,因為人們很少提及流,而且流的文檔也很匱乏。PHP 官方文檔對流的解釋如下:

可能看完這段解釋後還是雲里霧里,我們簡化一下,流的作用是在出發地和目的地之間傳輸數據。出發地和目的地可以是文件、命令行進程、網路連接、ZIP 或 TAR 壓縮文件、臨時內存、標准輸入或輸出,或者是通過 PHP 流封裝協議實現的任何其他資源。

如果你讀寫過文件,就用過流;如果你從 php://stdin 讀取過數據,或者把輸入寫入 php://stdout ,也用過流。流為 PHP 的很多 IO 函數提供了底層實現,如 file_get_contents、fopn、fread 和 fwrite 等。PHP 的流函數提供了不同資源的統一介面。

我們可以把流比作管道,把水(資源數據)從一個地方引到另一個地方。在水從出發地到目的地的過程中,我們可以過濾水,可以改變水質,可以添加水,也可以排出水。

流式數據的種類各異,每種類型需要獨特的協議,以便讀寫數據,我們稱這些協議為 流封裝協議 。例如,我們可以讀寫文件系統,可以通過 HTTP、HTTPS 或 SSH 與遠程 Web 伺服器通信,還可以打開並讀寫 ZIP、RAR 或 PHAR 壓縮文件。這些通信方式都包含下述相同的過程:

1.開始通信
2.讀取數據
3.寫入數據
4.結束通信

雖然過程是一樣的,但是讀寫文件系統中文件的方式與收發 HTTP 消息的方式有所不同,流封裝協議的作用是使用通用的介面封裝這種差異。

每個流都有一個協議和一個目標。指定協議和目標的方法是使用流標識符:<scheme>://<target>,其中 <scheme> 是流的封裝協議,<target> 是流的數據源。

http://流封裝協議

下面使用 HTTP 流封裝協議創建了一個與 Flicker API 通信的 PHP 流:

不要以為這是普通的網頁 URL,file_get_contents() 函數的字元串參數其實是一個流標識符。http 協議會讓 PHP 使用 HTTP 流封裝協議,在這個參數中,http 之後是流的目標。

我們通常使用 file_get_contents()、fopen()、fwrite() 和 fclose() 等函數讀寫文件系統,因為 PHP 默認使用的流封裝協議是 file://,所以我們很少認為這些函數使用的是 PHP 流。下面的示例演示了使用 file:// 流封裝協議創建一個讀寫 /etc/hosts 文件的流:

我們通常會省略掉 file:// 協議,因為這是 PHP 使用的默認值。

php://流封裝協議

編寫命令行腳本的 PHP 開發者會感激 php:// 流封裝協議,這個流封裝協議的作用是與 PHP 腳本的標准輸入、標准輸出和標准錯誤文件描述符通信。我們可以使用 PHP 提供的文件系統函數打開、讀取或寫入下面四個流:

1. php://stdin :這是個只讀 PHP 流,其中的數據來自標准輸入。PHP 腳本可以使用這個流接收命令行傳入腳本的信息;
2. php://stdout :把數據寫入當前的輸出緩沖區,這個流只能寫,無法讀或定址;
3. php://memory :從系統內存中讀取數據,或者把數據寫入系統內存。缺點是系統內存有限,所有使用 php://temp 更安全;
4. php://temp :和 php://memory 類似,不過,沒有可用內存時,PHP 會把數據寫入這個臨時文件。

其他流封裝協議

PHP 和 PHP 擴展還提供了很多其他流封裝協議,例如,與 ZIP 和 TAR 壓縮文件、FTP 伺服器、數據壓縮庫、Amazon API、Dropbox API 等通信的流封裝協議。需要注意的是,PHP 中的 fopen()、fgets()、fputs()、feof() 以及 fclose() 等函數不僅可以用來處理文件系統中的文件,還可以在所有支持這些函數的流封裝協議中使用。

自定義流封裝協議

我們還可以自己編寫 PHP 流封裝協議。PHP 提供了一個示例 StreamWrapper 類,演示如何編寫自定義的流封裝協議,支持部分或全部 PHP 文件系統函數。關於如何編寫,具體請參考以下文檔:

http://php.net/manual/zh/class.streamwrapper.php
http://php.net/manual/zh/stream.streamwrapper.example-1.php

有些 PHP 流能夠接受一系列可選的參數,這些參數叫流上下文,用於定製流的行為。不同的流封裝協議使用的流上下文有所不同,流上下文使用 stream_context_create() 函數創建,這個函數返回的上下文對象可以傳入大多數文件系統函數。

例如,你知道可以使用 file_get_contents() 發送 HTTP POST 請求嗎?使用一個流上下文對象即可實現:

流過濾器
目前為止我們討論了如何打開流,讀取流中的數據,以及把數據寫入流。不過,PHP 流真正強大的地方在於過濾、轉換、添加或刪除流中傳輸的數據,例如,我們可以打開一個流處理 Markdown 文件,在把文件內容讀入內存的過程中自動將其轉化為 HTML。

運行該腳本,輸出的都是大寫字母:

我們還可以使用 php://filter 流封裝協議把過濾器附加到流上,不過,使用這種方式之前必須先打開 PHP 流:

這個方式實現效果和 stream_filter_append() 函數一樣,但是相比之下更為繁瑣。不過,PHP 的某些文件系統函數在調用後無法附加過濾器,例如 file() 和 fpassthru(),使用這些函數時只能使用 php://filter 流封裝協議附加流過濾器。

自定義流過濾器
我們還可以編寫自定義的流過濾器。其實,大多數情況下都要使用自定義的流過濾器,自定義的流過濾器是個 PHP 類,繼承內置的 php_user_filter 類( http://php.net/manual/zh/class.php-user-filter.php ),且必須實現 filter()、onCreate() 和 onClose() 方法,最後,必須使用 stream_filter_register() 函數注冊自定義的流過濾器。

然後,我們必須使用 stream_filter_register() 函數注冊這個自定義的 DirtyWordsFilter 流過濾器:

第一個參數用於標識這個自定義過濾器的過濾器名,第二個參數是這個自定義過濾器的類名。接下來就可以使用這個自定義的流過濾器了:

修改 test.txt 內容如下:

運行上面的自定義過濾器腳本,結果如下:

stream_bucket_append函數:為隊列添加數據
stream_bucket_make_writeable函數:從操作的隊列中返回一個數據對象
stream_bucket_new函數:為當前隊列創建一個新的數據
stream_bucket_prepend函數:預備數據到隊列
stream_context_create函數:創建數據流上下文
stream_context_get_default函數:獲取默認的數據流上下文
stream_context_get_options函數:獲取數據流的設置
stream_context_set_option函數:對數據流、數據包或者上下文進行設置
stream_context_set_params函數:為數據流、數據包或者上下文設置參數
stream__to_stream函數:在數據流之間進行復制操作
stream_filter_append函數:為數據流添加過濾器
stream_filter_prepend函數:為數據流預備添加過濾器
stream_filter_register函數:注冊一個數據流的過濾器並作為PHP類執行
stream_filter_remove函數:從一個數據流中移除過濾器
stream_get_contents函數:讀取數據流中的剩餘數據到字元串
stream_get_filters函數:返回已經注冊的數據流過濾器列表
stream_get_line函數:按照給定的定界符從數據流資源中獲取行
stream_get_meta_data函數:從封裝協議文件指針中獲取報頭/元數據
stream_get_transports函數:返回注冊的Socket傳輸列表
stream_get_wrappers函數:返回注冊的數據流列表
stream_register_wrapper函數:注冊一個用PHP類實現的URL封裝協議
stream_select函數:接收數據流數組並等待它們狀態的改變
stream_set_blocking函數:將一個數據流設置為堵塞或者非堵塞狀態
stream_set_timeout函數:對數據流進行超時設置
stream_set_write_buffer函數:為數據流設置緩沖區
stream_socket_accept函數:接受由函數stream_ socket_server()創建的Socket連接
stream_socket_client函數:打開網路或者UNIX主機的Socket連接
stream_socket_enable_crypto函數:為一個已經連接的Socket打開或者關閉數據加密
stream_socket_get_name函數:獲取本地或者網路Socket的名稱
stream_socket_pair函數:創建兩個無區別的Socket數據流連接
stream_socket_recvfrom函數:從Socket獲取數據,不管其連接與否
stream_socket_sendto函數:向Socket發送數據,不管其連接與否
stream_socket_server函數:創建一個網路或者UNIX Socket服務端
stream_wrapper_restore函數:恢復一個事先注銷的數據包
stream_wrapper_unregister函數:注銷一個URL地址包

整合資料
本文整合於以下兩篇文章

https://blog.csdn.net/qq756684177/article/details/81518647

https://xueyuanjun.com/post/7459.html

⑸ php怎麼將指定日期轉換為時間戳

在MySQL中完成

下面介紹兩種php將指定日期轉換為時間戳的方法:
第一種:在MySQL中完成
這種方式在MySQL查詢語句中轉換,優點是不佔用PHP解析器的解析時間,速度快,缺點是只能用在資料庫查詢中,有局限性。
UNIX時間戳轉換為日期用函數:
FROM_UNIXTIME()
一般形式:select
FROM_UNIXTIME(1156219870);
日期轉換為UNIX時間戳用函數:
UNIX_TIMESTAMP()
一般形式:Select
UNIX_TIMESTAMP('2006-11-04
12:23:00′);
舉例:mysql查詢當天的記錄數:
$sql=」select
*
from
message
Where
DATE_FORMAT(FROM_UNIXTIME(chattime),'%Y-%m-%d')
=
DATE_FORMAT(NOW(),'%Y-%m-%d')
order
by
id
desc」;
當然大家也可以選擇在PHP中進行轉換,下面說說在PHP中轉換。
第二種:在PHP中完成 這種方式在PHP程序中完成轉換,優點是無論是不是資料庫中查詢獲得的數據都能轉換,轉換范圍不受限制,缺點是佔用PHP解析器的解析時間,速度相對慢。
UNIX時間戳轉換為日期用函數:
date() 一般形式:date('Y-m-d
H:i:s',
1156219870);
日期轉換為UNIX時間戳用函數:strtotime() 一般形式:strtotime('2010-03-24
08:15:42')
php中時間轉換函數strtotime(date())
date("Y-m-d H:i",$unixtime)
php中獲得今天零點的時間戳
要獲得零點的unix時間戳,可以使用$todaytime=strtotime(「today」),然後再使用date("Y-m-d H:i",$todaytime)轉換為日期。
時間戳轉換函數:date("Y-m-d
H:i:s",time()),"Y-m-d
H:i:s"是轉換後的日期格式,time()是獲得當前時間的時間戳。如果是date("Y-m-d H:i:s",time()),則小時分秒一起顯示;如果是date("Y-m-d ", time()),只顯示年月日。例如:date("Y-m-d H:i:s",time())轉換後為:2010-07-18 18:42:48
date("Y-m-d",time())。

閱讀全文

與phpselect函數相關的資料

熱點內容
寶可夢做解壓視頻 瀏覽:594
威綸通觸摸屏編譯時內存不足 瀏覽:607
單片機採集電壓比較 瀏覽:947
程序員三年前工資多少 瀏覽:704
pc端c語言編譯工具 瀏覽:22
護理知識app怎麼做 瀏覽:29
我的世界伺服器如何跨版本 瀏覽:912
益盟正版主力識別公式源碼 瀏覽:491
溫州程序員兼職網站 瀏覽:717
csgo控制台命令大全指令表 瀏覽:730
小米盒子連接伺服器地址 瀏覽:365
文檔怎麼壓縮進一個文件夾 瀏覽:84
cnn新聞app從哪裡下載 瀏覽:70
殺戮命令精通 瀏覽:894
如何查魔獸世界角色在哪個伺服器 瀏覽:42
壓縮氣罐免責說明 瀏覽:912
為什麼sim連接不了伺服器 瀏覽:31
如何注冊豆瓣app 瀏覽:558
屏膜找圖演算法 瀏覽:537
我的世界伺服器怎麼給別人游戲幣 瀏覽:940