在一個(gè)服務(wù)器上一般來(lái)講都不止一個(gè)站點(diǎn),更不止一個(gè)MySQL(和PHP搭配之最佳組合)數(shù)據(jù)庫(kù)。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),長(zhǎng)樂(lè)企業(yè)網(wǎng)站建設(shè),長(zhǎng)樂(lè)品牌網(wǎng)站建設(shè),網(wǎng)站定制,長(zhǎng)樂(lè)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,長(zhǎng)樂(lè)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
為了防止安全隱患,我們一般針對(duì)每個(gè)數(shù)據(jù)庫(kù)都設(shè)置了獨(dú)立的數(shù)據(jù)庫(kù)訪問(wèn)帳號(hào),該帳號(hào)僅有訪問(wèn)該數(shù)據(jù)庫(kù)的權(quán)限。下面就讓我們來(lái)具體演示一下:
1、首先我們要登陸php(做為現(xiàn)在的主流開(kāi)發(fā)語(yǔ)言)MyAdmin,不做演示。
2、創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),如下圖,在php(做為現(xiàn)在的主流開(kāi)發(fā)語(yǔ)言)MyAdmin右邊窗口中,填寫(xiě)數(shù)據(jù)庫(kù)名稱,點(diǎn)創(chuàng)建即可。
例如我們這里創(chuàng)建一個(gè)名字為:cncmstest 的數(shù)據(jù)庫(kù)
創(chuàng)建成功會(huì)有如下提示:
3、點(diǎn)擊左上角的主頁(yè)按鈕,返回php(做為現(xiàn)在的主流開(kāi)發(fā)語(yǔ)言)MyAdmin主界面:
4、在主界面的右邊點(diǎn)擊“權(quán)限”來(lái)創(chuàng)建數(shù)據(jù)庫(kù)帳號(hào)。
5、在權(quán)限頁(yè)面中,我們點(diǎn)擊“添加新用戶”
6、在該頁(yè)面中,我們填寫(xiě)要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)用戶名,該用戶的訪問(wèn)范圍,及密碼。
如上圖,我們填寫(xiě)了用戶名為:cncmsuser,該數(shù)據(jù)庫(kù)用戶只允許本機(jī)訪問(wèn),主機(jī)一項(xiàng)選擇本地;密碼我們使用自動(dòng)生成的,點(diǎn)下面的“Generate”會(huì)生成一個(gè)隨機(jī)密碼,然后點(diǎn)“Copy”會(huì)自動(dòng)填寫(xiě)到密碼框中。
下面的框都不選,直接拉到頁(yè)面最下面點(diǎn)執(zhí)行即可創(chuàng)建一個(gè)新用戶。
數(shù)據(jù)庫(kù)用戶創(chuàng)建成功,會(huì)返回如下頁(yè)面:
7、最重要的一步,設(shè)置該用戶的數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限
在數(shù)據(jù)庫(kù)用戶添加成功返回的頁(yè)面中可以直接設(shè)置權(quán)限。這里我們選擇按數(shù)據(jù)庫(kù)指定權(quán)限:
如上圖,在數(shù)據(jù)庫(kù)列表中選擇我們剛剛創(chuàng)建的cncmstest,即會(huì)自動(dòng)進(jìn)入該數(shù)據(jù)庫(kù)的權(quán)限設(shè)置頁(yè)面。
在上圖的權(quán)限設(shè)置中,我們把“數(shù)據(jù)”、“結(jié)構(gòu)”兩列的權(quán)限全部選中,管理權(quán)限都不要選。點(diǎn)執(zhí)行即可。
到這里,我們已經(jīng)全部設(shè)置完畢了,創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù):cncmstest,并創(chuàng)建了數(shù)據(jù)庫(kù)用戶cncmsuser,特別指定了該用戶只對(duì)cncmstest的訪問(wèn)權(quán)限。如此,便達(dá)到了我們一開(kāi)始所講的目的:為每一個(gè)數(shù)據(jù)庫(kù)指定獨(dú)立的用戶訪問(wèn)權(quán)限。
求一PHP算法,字典生成。時(shí)間一到再加100分。如:字符:0-9,長(zhǎng)度:1,
那就生成0,1,2,3,4,5,6,7,8,9
長(zhǎng)度:2,就會(huì)生成00-99
現(xiàn)在要求字符可以包括a-z,或者其他特殊符號(hào),求一高效的生成算法。
參考答案一
function get_string($strlen){
$source='0123456789'; //任意字符
$len = strlen($source); //長(zhǎng)度
$return = array();
for($i = 0 ;$i $len;$i++){
for($j = 0;$j $strlen;$j++){
$return[$i] .= $i;
}
}
return implode(',', $return);
}
如果輸入長(zhǎng)度2: 輸出結(jié)果就是:
00,11,22,33,44,55,66,77,88,99
參考答案二
優(yōu)化了進(jìn)位算法:
PHP code =0;$no--){ $word=$source{$series[$no]}.$word; $series[$no]+=$tonext_value; if($no0){ if($series[$no]==$len){ $series[$no]=0; $tonext_value=1; }else{ $tonext_value=0; } } } echo "$word "; } } gene_dic(2); ?
簡(jiǎn)單的說(shuō),我會(huì)把這個(gè)理解為0-9(十進(jìn)制)下十個(gè)數(shù)字生成兩位數(shù)字、可重復(fù)的排列問(wèn)題。
排列算法我自己建立過(guò)的就是簡(jiǎn)單的N進(jìn)制下的+1算法,保證可以遍歷。
即:
初始化到0,
1. +1
2. 是否超過(guò)要生成的位數(shù)?否,則回到1;
3. 輸出
參考答案三
PHP code =0;$no--){//循環(huán)遍歷數(shù)組每次從源字串中取一個(gè)字符,為便于進(jìn)位運(yùn)算,取字符是從后往前取 $word=$source{$series[$no]}.$word;//先取出一個(gè)字符 //取出一個(gè)字符后就要判斷當(dāng)前數(shù)組元素如何如果改變值,為下一次“大循環(huán)”做準(zhǔn)備 if($no==$n-1){//末位的判斷,它比較特殊,每次大循環(huán)都要增值 if($series[$no]==$len-1){ $series[$no]=0; $tonext_value=1;//歸零時(shí)就進(jìn)位 }else{ $series[$no]+=1; $tonext_value=0;//未歸零就增值,不進(jìn)位 } }elseif($no$n-1){//中間位的進(jìn)位判斷 $series[$no]+=$tonext_value;//先取得上一位的進(jìn)位值 if($series[$no]==$len){ $series[$no]=0; $tonext_value=1;//歸零了就繼續(xù)進(jìn)位 }else{ $tonext_value=0;//不歸零就不進(jìn)位 } }else{ $series[$no]+=$tonext_value;//大循環(huán)次數(shù)決定了“老大”是只進(jìn)不出的。 } } echo "$word ";//輸入單詞 } } gene_dic(2);//測(cè)試,結(jié)果OK。
參考答案四
PHP code =0;$no--){//循環(huán)遍歷數(shù)組每次從源字串中取一個(gè)字符,為便于進(jìn)位運(yùn)算,取字符是從后往前取 $word=$source{$series[$no]}.$word;//先取出一個(gè)字符 //取出一個(gè)字符后就要判斷當(dāng)前數(shù)組元素如何如果改變值,為下一次“大循環(huán)”做準(zhǔn)備 if($no==$n-1){//末位的判斷,它比較特殊,每次大循環(huán)都要增值 if($series[$no]==$len-1){ $series[$no]=0; $tonext_value=1;//歸零時(shí)就進(jìn)位 }else{ $series[$no]+=1; $tonext_value=0;//未歸零就增值,不進(jìn)位 } }elseif($no$n-1){//中間位的進(jìn)位判斷 $series[$no]+=$tonext_value;//先取得上一位的進(jìn)位值 if($series[$no]==$len){ $series[$no]=0; $tonext_value=1;//歸零了就繼續(xù)進(jìn)位 }else{ $tonext_value=0;//不歸零就不進(jìn)位 } }else{ $series[$no]+=$tonext_value;//大循環(huán)次數(shù)決定了“老大”是只進(jìn)不出的。 } } echo "$word ";//輸入單詞 } } gene_dic(2);//測(cè)試,結(jié)果OK。
參考答案五
應(yīng)該是:
function get_string($strlen){
$source='0123456789';
$len = strlen($source);
$return = array();
for($i = 0 ;$i $len;$i++){
for($j = 1;$j = $strlen;$j++){
$return[$i] .= substr($source,$i,1);
}
}
return implode(',', $return);
}
【拓展閱讀】如何開(kāi)始一門(mén)語(yǔ)言的學(xué)習(xí)
一門(mén)語(yǔ)言從發(fā)明到演進(jìn)必有原因。
現(xiàn)在還有很多人推薦學(xué)習(xí)不同的語(yǔ)言。通過(guò)比較,了解它的發(fā)展史,
創(chuàng)始人的初心等因素都需要留意。多個(gè)思考,這個(gè)語(yǔ)言在5年,在10年后還是否保持活力?
當(dāng)有幾個(gè)類(lèi)似的語(yǔ)言被選擇時(shí),我們不妨對(duì)它們做一個(gè)Swat分析。
列出這些語(yǔ)言的共同點(diǎn),還有它們之間的規(guī)則差異。
了解語(yǔ)言的發(fā)展史
開(kāi)發(fā)語(yǔ)言從匯編開(kāi)始,如最早的計(jì)算機(jī)ENIAC,使用的就是它來(lái)編程。
再到Fortarin,再到C語(yǔ)言,Cobol,Basic。每一個(gè)語(yǔ)言都與當(dāng)時(shí)發(fā)展的階段有點(diǎn)密切關(guān)聯(lián)。
人類(lèi)的每個(gè)發(fā)明都與懶惰有關(guān),語(yǔ)言也是為便捷性而生。有的語(yǔ)言
C是除匯編外最重視效率的語(yǔ)言,擴(kuò)展的C++也繼承了此特性。Perl是做文本處理效率最佳的語(yǔ)言,雖然它的發(fā)展有點(diǎn)慢。PHP做Web開(kāi)發(fā),是“世界上最好的.語(yǔ)言”,Python的閱讀性和大數(shù)據(jù)處理都做得樣樣俱佳。
當(dāng)了解語(yǔ)言的歷史沿革后,會(huì)讓我們對(duì)其創(chuàng)始人有很強(qiáng)烈的興趣,成為忠實(shí)的腦殘粉,學(xué)習(xí)該語(yǔ)言的興趣會(huì)更濃烈。
人們常常說(shuō)某個(gè)語(yǔ)言比哪個(gè)好,這其實(shí)沒(méi)有必要。不必要為其它人的語(yǔ)言所惑,需要你自己做出選擇。
語(yǔ)言的共通點(diǎn)
這個(gè)星球的人都是一個(gè)鼻子兩雙只水汪汪的大眼睛,與人們的模樣一般,編程語(yǔ)言也有一個(gè)大致相同的長(zhǎng)相。
語(yǔ)法:這是開(kāi)發(fā)此語(yǔ)言定義的規(guī)則“套路”:
運(yùn)算符順序,變量常量定義/作用域,表達(dá)式定義,字符串定義,行尾結(jié)束符等。
流程控制:循環(huán)控制
這些語(yǔ)法都是成對(duì)的,如if,for,while,foreach,有的語(yǔ)言還提供goto這樣類(lèi)似匯編語(yǔ)言的語(yǔ)法。
函數(shù)與方法
一些能夠復(fù)用的高質(zhì)量代碼組合。函數(shù)執(zhí)行后有返回,有遞歸,有嵌套,還有干完活就完事的簡(jiǎn)單任務(wù)。有靜態(tài)函數(shù)和動(dòng)態(tài)函數(shù)區(qū)分。
容器
數(shù)組,哈希表(也叫散列),字典等用來(lái)保存數(shù)據(jù)的容器。
錯(cuò)誤/例外處理
現(xiàn)代編程語(yǔ)言基本都支持出錯(cuò)的拋出,除了C語(yǔ)言之外。
比如硬盤(pán)不足,網(wǎng)絡(luò)出錯(cuò),黑客攻擊等情形。就像購(gòu)物中心里出現(xiàn)煤氣泄露時(shí),監(jiān)測(cè)設(shè)備,物聯(lián)網(wǎng)設(shè)備能夠及時(shí)記錄與傳遞給指揮中心。
沒(méi)有錯(cuò)誤拋出的語(yǔ)言,需要自己考慮盡可能出錯(cuò)的場(chǎng)景并處理,比如:
if(is_overfllow)
//處理
if(network_error)
//處理
可以還有不少需要關(guān)注的維度,這會(huì)讓代碼變得艱澀難懂,也難以維護(hù)。
我們可以用這樣的方式,讓其更簡(jiǎn)潔:
on error goto ERROR
ERROR:
..//
但這總是會(huì)需要我們照顧很多情形。于是C++推出了一個(gè)語(yǔ)法:
try{
//可能會(huì)出錯(cuò)的代碼
//可能會(huì)出錯(cuò)的代碼
}catch{
//處理出錯(cuò)的邏輯
//處理出錯(cuò)的邏輯
}finally{
//出不出錯(cuò)都要執(zhí)行的代碼
}
最后一句是微軟公司給業(yè)界提供貢獻(xiàn)的finally代碼塊。
以上這些成為語(yǔ)言處理異常機(jī)制的基礎(chǔ)。
容器
容器是很重要的一節(jié),所以我們單獨(dú)再提出來(lái)。很多邏輯處理,使用容器保存數(shù)據(jù),該語(yǔ)言會(huì)提供便捷的方法來(lái)提供存取。
比如C、Perl、PHP、Ruby中均提供的數(shù)組和關(guān)聯(lián)數(shù)組,LISP提供的列表,Java、Python提供的元組、鏈表等。
雖然名字相同,但是實(shí)現(xiàn)方式卻是完全不同,使用方法當(dāng)然也不一樣。
沒(méi)有萬(wàn)能的容器,只有最合適的??梢詮墓?jié)省內(nèi)存,節(jié)約時(shí)間還是編碼效率等綜合考慮。
字符串與字符編碼
是否支持unicode編碼。從摩斯碼到ASCII到統(tǒng)一的Unicode編碼支持。
并發(fā)處理
有的語(yǔ)言在設(shè)計(jì)時(shí)并無(wú)此方面的考慮,或者天生設(shè)計(jì)存在缺陷。
即多線程,多進(jìn)程的概念。包括共享,鎖,事備等特性。
面向?qū)ο?/p>
支持類(lèi),繼承,模塊,包,命名空間,閉包等。有這些特性才會(huì)讓人們的工作變得更便利、更有效率。
小結(jié)
學(xué)習(xí)一門(mén)語(yǔ)言的關(guān)鍵,需要我們?cè)谄届o地心緒下,帶著濃厚的興趣去學(xué)習(xí),在比較中學(xué)習(xí),在歷史中學(xué)習(xí)。
有時(shí)候感覺(jué)還是不夠通暢,先做知識(shí)的搬運(yùn)工也是不錯(cuò)。另外,不斷的實(shí)踐會(huì)讓我們的信心更足。
1,html?+?css?知識(shí),用來(lái)改模板。
2,Javascript?知識(shí),?有一些頁(yè)面事件,特效
3,php?+?mysql?知識(shí),用于修改程序邏輯和數(shù)據(jù)處理
4,操作系統(tǒng)知識(shí):網(wǎng)站架構(gòu)與調(diào)優(yōu)
多去官網(wǎng),參考手冊(cè),二次開(kāi)發(fā)入門(mén)、常量與變量、數(shù)據(jù)字典