Programming/php
查表法 , PHP 把 array 存進 file
好處是, 下次直接把檔讀進 array 立即可查詢, 如果資料不常改變, 查詢頻率普通時用
my encode sample
[code language=php]
// my_encode( )
$secret = ‘11111’;
function my_encode($data) {
$data = serialize($data);
$hash = md5($GLOBALS[‘secret’] . $data);
return array($data, $hash);
}
// my_decode( )
function my_decode($data, $hash) {
if (!empty($data) && !empty($hash)) {
if (md5($GLOBALS[‘secret’] . $data) == $hash) {
return unserialize($data);
} else {
error_log(“Validation Error: Data has been modified”);
return false;
}
}
return false;
}
TEST: $secret = ‘11111’;
// Load in and validate old dataif (! $data = my_decode($_GET[‘data’], $_GET[‘hash’])) {// crack attempt}// Process form (new form data is in $_GET)// Update $data$data[‘username’] = $_GET[‘username’];$data[‘stage’]++;unset($data[‘password’]);// Encode resultslist ($data, $hash) = pc_encode($data);// Store data and hash inside the form?> ” method=”get”>
…
value=””>
value=””>
[/code]
PHP: cachelite program sample
emerge dev-php/PEAR-Cache_Lite
require_once "Cache/Lite.php"; define('ENABLE_CACHE_LITE',1); function _fn_get_data_from_cache($key) { $options = array( 'cacheDir' => '/tmp/', 'lifeTime' => 10, 'pearErrorMode' => CACHE_LITE_ERROR_DIE ); if (ENABLE_CACHE_LITE) { $cache=new Cache_Lite($options); if ($data=$cache->get($key)) { // got data from cache_lite then return return $data; } } // not found! then do the process // sample $data=time(); if (ENABLE_CACHE_LITE) { $cache->save($data); } return $data; } // ====== $key='abc'; echo _fn_get_data_from_cache($key);