js和php里面都有一個(gè)函數(shù)eval();其作用是將參數(shù)里面的字符串當(dāng)做代碼執(zhí)行,用這個(gè)函數(shù)可以創(chuàng)建自定義的回調(diào)函數(shù)
php回調(diào)函數(shù):
/**** @param* @return**/
function a($str){echo $str;}
/**** @param* @return**/
function s($callBack){eval($callBack);}
s("a('linshaoqiang');");
exit;
js回調(diào)函數(shù):
function a(str){
alert(str);
}
function s(callBack){ with ( window )eval(callBack);
}
s("a('linshaoqiang')");
用xheditor上傳文件時(shí),出現(xiàn)一點(diǎn)上傳就卡死沒反應(yīng)的問題,在后臺(tái)處理上傳的php文件里打印$_FILES時(shí)發(fā)現(xiàn)為空數(shù)組,出現(xiàn)這個(gè)問題的原因主要有兩個(gè):表單原因或者php設(shè)置原因:
1,表單類型:
上傳文件的表單編碼類型必須設(shè)置成 enctype="multipart/form-data",因?yàn)橐獋鞔髷?shù)據(jù),一般提交方式用POST
2,php設(shè)置問題:
php默認(rèn)的post_max_size 為2M.如果 POST 數(shù)據(jù)尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便會(huì)為空. 解決的方法是:
1. 一般的文件上傳,除非文件很小.就像一個(gè)5M的文件,很可能要超過一分鐘才能上傳完. 但在php中,默認(rèn)的該頁最久執(zhí)行時(shí)間為 30 秒.就是說超過30秒,該腳本就停止執(zhí)行. 這就導(dǎo)致出現(xiàn) 無法打開網(wǎng)頁的情況.這時(shí)我們可以修改 max_execution_time 在php.ini里查找 max_execution_time 默認(rèn)是30秒.改為 max_execution_time = 0(可修改范圍為PHP_INI_ALL) 0表示沒有限制
或者在php文件頭設(shè)置ini_set('max_execution_time',0);
2. 修改 post_max_size 設(shè)定 POST 數(shù)據(jù)所允許的最大大小。此設(shè)定也影響到文件上傳。 查找 post_max_size .改為 post_max_size = 150M(可修改范圍為PHP_INI_PHP_INI_PERDIR)
3. 很多人都會(huì)改了第二步.但上傳文件時(shí)最大仍然為 8M. 為什么呢.我們還要改一個(gè)參數(shù)upload_max_filesize 表示所上傳的文件的最大大小。 查找upload_max_filesize,默認(rèn)為8M改為 upload_max_filesize = 100M(可修改范圍為PHP_INI_PHP_INI_PERDIR)
另外要說明的是,post_max_size 大于 upload_max_filesize 為佳.
PHP_INI_* 常量的定義
常量 |
值 |
含義 |
PHP_INI_USER |
1 |
配置選項(xiàng)可在用戶的 PHP 腳本或 Windows 注冊表中設(shè)置 |
PHP_INI_PERDIR |
2 |
配置選項(xiàng)可在 php.ini, .htaccess 或 httpd.conf 中設(shè)置 |
PHP_INI_SYSTEM |
4 |
配置選項(xiàng)可在 php.ini or httpd.conf 中設(shè)置 |
PHP_INI_ALL |
7 |
配置選項(xiàng)可在各處設(shè)置 |
Jquery異步加載一個(gè)頁面是如此簡單:
$.ajax({ url: "/testl/index.html", cache: false, success: function(html){
$("#test").append(html);
}
});
或者更簡單的:$("#test").load("/test/index.html");
以 POST 形式發(fā)送附加參數(shù)并在成功時(shí)顯示信息。
jQuery 代碼:
$("#feeds").load("feeds.php", {limit: 25}, function(){ alert("The last 25 entries in the feed have been loaded"); });
載入并執(zhí)行一個(gè) JavaScript 文件:加載并執(zhí)行 test.js ,成功后顯示信息。jQuery 代碼: $.getScript("test.js", function(){ alert("Script loaded and executed.");});
利用Mysql中的 的聚合函數(shù) count(*) 可以實(shí)現(xiàn)這個(gè)功能,例如需要查詢data表中name出現(xiàn)次數(shù)最多的記錄,可以先按照group by name分組,用count算出分組里的條數(shù),再按照count排序:
select name,count(*) from data group by name order by count(*) DESC limit 1
不加limit限制將返回按照name重復(fù)次數(shù)排列的數(shù)據(jù)
在使用聚合函數(shù)之前,我們可以通過where對(duì)查詢加限制條件,那么如果在group by之后我們要對(duì)分組里面的數(shù)據(jù)再加限制條件怎么辦呢?答案是having。
HAVING子句可以讓我們篩選成組后的各組數(shù)據(jù).
WHERE子句在聚合前先篩選記錄.也就是說作用在GROUP BY 子句和HAVING子句前.
而 HAVING子句在聚合后對(duì)組記錄進(jìn)行篩選。
having子句出現(xiàn)的數(shù)據(jù)必須在group by 之后,order by 之后
例如在上一篇中對(duì)name按照出現(xiàn)次數(shù)排序之后,我們還想只查出名字里面含有l(wèi)in的數(shù)據(jù),可以這樣寫:
select name ,count(*) from data group by name having name like '%lin%' order by couny(*) DESC
用class關(guān)鍵字創(chuàng)建兩個(gè)類,Son類繼承Parents類:
class Parents{
}
class Son extends Parents {
}
如果子類沒定義構(gòu)造函數(shù),初始化子類時(shí)會(huì)自動(dòng)調(diào)用父類的構(gòu)造函數(shù),并且函數(shù)里面可以調(diào)用子類的公共屬性,但是如果調(diào)用子類的private私有屬性則不可以,另外由 protected 所定義的類成員則可以被其所在類的子類和父類訪問
class Parents{
function __construct(){echo $this->name;}
}
class Son extends Parents {
var name = 'lin';
}
$Son = new Son();
如果子類定義了構(gòu)造函數(shù)或者其他與父類同名的函數(shù),會(huì)把父類函數(shù)覆蓋,想調(diào)用父類該函數(shù)可以用parent:::func()來調(diào)用。如果父類函數(shù)用了final關(guān)鍵字,子類重定義該函數(shù)時(shí)就會(huì)報(bào)錯(cuò)。
有時(shí)候input框的內(nèi)容我們只是希望顯示出來,不希望用戶修改,那么可以在ipnut里面加上屬性:readonly = "readonly",這樣內(nèi)容就被固定住了
有時(shí)我們不希望用戶快速使用之前提交過的數(shù)據(jù)來完成重復(fù)提交,即禁用表單的自動(dòng)完成功能,可以在表單<form>里面加入autocomplete="off"關(guān)閉。
使用模版分離技術(shù)制造網(wǎng)站時(shí),在制作模版頁面時(shí)總要用到一些自定義的標(biāo)簽,有{# #} [# #]等等,但是我覺得用html的注釋標(biāo)簽<!-- -->是比較好的,因?yàn)檫@樣標(biāo)簽的內(nèi)容在可視化頁面不可見,不會(huì)破壞頁面的布局和美感,而真正需要用到html的注釋的時(shí)候就只能用<!--// -->這樣的形式了。
而重復(fù)打<!-- -->這個(gè)標(biāo)簽還是挺煩人的,可以使用DW的自定義快捷鍵來完成,在編輯->快捷鍵里,為了保護(hù)原有的快捷鍵不被破壞,DW是不允許直接在系統(tǒng)默認(rèn)的快捷方式被修改的,需要點(diǎn)擊下方那個(gè)按鈕新建一份拷貝
然后找到下方的插入,找到注釋,在下方的按鍵輸入框里直接按你喜歡的按鍵,比如我的是crtl+Q就可以了