Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: PHP

縮短網址 vs. Hash

Posted on 2009 年 8 月 8 日2021 年 3 月 12 日 By 日落 在〈縮短網址 vs. Hash〉中有 3 則留言

一直到剛剛才想通為什麼大多數的縮短網址會使用 Hash 產生 key,果然不先死過一次不知道為什麼要這樣作。

先從 key 開始起吧,為了讓 key 更短通常會使用更多的文字或符號,從數字、英文大小寫甚至特殊符號。假設使用數字和英文大小寫作組合,每一位數都有 62 種組合 (10 + 26 + 26),用四個位數的話可以儲存約一千五百萬比資料,這對我這種小網站應該很夠用了。

還沒想通資料量和 hash 有何關係?那就來看看新增時到底要作哪些事情:

  1. 查詢資料是否已經存在
  2. 產生網址與 key 的對應
  3. 儲存結果

問題很明顯出在第一步驟,一千萬筆資料 query 一次到底要花多久的時間?有作索引也要花超過十秒,沒作索引花個半小時可能也算快。

如果將步驟改成這樣:

  1. 將網址作 Hash
  2. 使用 Hash 的結果查詢資料是否存在
  3. 檢查是否發生碰撞
  4. 儲存結果

在第一步先產生 hash 結果就可以減少搜尋的範圍,範圍縮小就可以減少第二步驟查詢所需要的時間。

現在開始後悔沒有好好學演算法了,我要怎麼自己寫一個 hash 函式出來啊???

Tags:PHP, 生活雜記, 資訊學習

Disable PHP register_globals

Posted on 2008 年 8 月 14 日2021 年 3 月 12 日 By 日落 在〈Disable PHP register_globals〉中尚無留言

Code for disable PHP register_globals in PHPWind forum:

if(ini_get('register_globals')){
   foreach($GLOBALS as $key=>$val){
      if(!in_array($key,array('GLOBALS','_POST','_GET','_COOKIE','_SERVER','_FILES','wind_in'))){
         ${$key}='';
      }
   }
}
Tags:PHP, 程式設計, 資訊學習

SQL Injection Note

Posted on 2008 年 8 月 14 日2021 年 3 月 12 日 By 日落 在〈SQL Injection Note〉中尚無留言

Code from PHPWind forum in global.php:

set_magic_quotes_runtime(0);

if(!get_magic_quotes_gpc()){
	Add_S($_POST);
	Add_S($_GET);
	Add_S($_COOKIE);
}
Add_S($_FILES);

function Add_S(&$array){
	foreach($array as $key=>$value){
		if(!is_array($value)){
			$array[$key]=addslashes($value);
		}else{
			Add_S($array[$key]);
		}
	}
}
Tags:PHP, 程式設計, 資訊學習

關閉 PHP register_globals

Posted on 2008 年 8 月 13 日2021 年 3 月 12 日 By 日落 在〈關閉 PHP register_globals〉中尚無留言

.htaccess:

php_value register_globals off
Tags:PHP, 程式設計, 網路架站

PHP header 在 IE 變成亂碼

Posted on 2008 年 7 月 8 日2021 年 3 月 12 日 By 日落 在〈PHP header 在 IE 變成亂碼〉中有 3 則留言

用 PHP header 方式讓瀏覽器下載檔案,結果下載時檔名變成亂碼,原因是因為 FireFox 和其他瀏覽器換辨識 header content-type 的文字編碼,但是 IE 卻不會,所以必須自己將編碼從 UTF-8 轉成 Big5。

$file_name = iconv('utf-8','big5',$file_name);
Tags:PHP, 程式設計

文章分頁

上一頁 1 ... 21 22 23 ... 26 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.