//
我們經(jīng)常在一些php開發(fā)的開源軟件產(chǎn)品上看到,使用之前必須要安裝,說白了就是要連接數(shù)據(jù)庫,生成數(shù)據(jù)表。下面我們來介紹安裝程序是如何實(shí)現(xiàn)的。
安裝第一步:檢測(cè)系統(tǒng)是否已經(jīng)安裝過,并且顯示用戶的安裝協(xié)議
<?Php
//安裝第一步到達(dá)首頁,檢測(cè)該系統(tǒng)是否已經(jīng)安裝過,檢測(cè) install 文件。
//file_exists這個(gè)函數(shù)是檢測(cè)文件是否存在,如果存在返回true,如果不正在返回false
//路徑確定的話是已當(dāng)前訪問文件的路徑為準(zhǔn),以服務(wù)器端路徑為路徑來去定
if(file_exists('install.lock')){
exit('你已經(jīng)安裝過了本系統(tǒng),請(qǐng)不再再重新安裝,如果確定要重新安裝,請(qǐng)刪除install.lock文件');
}
?>
<a href="step1.php">同意協(xié)議</a>
安裝第二步:檢測(cè)文件的可讀性與可寫性
<?php
//檢測(cè)文件是否可寫
//把需要檢測(cè)的文件和目錄放入到一個(gè)數(shù)組里面來,循環(huán)這個(gè)數(shù)組即可 foreach
//通過 filewriteable readable 這樣一些函數(shù)來檢測(cè)是否有權(quán)限
$arr=array('index.php','step1.php','step2.php','step3.php');
//標(biāo)志位變量,如果這個(gè)變量為真,就可以執(zhí)行下一步,如果為假就不能夠顯示下一步
$flag=true;
foreach($arr as $value){
echo $value;
if(is_writeable($value)){
echo '該文件可寫';
}else{
$flag=false;
echo '該文件不可寫';
}
if(is_readable($value)){
echo '該文件可讀';
}else{
$flag=false;
echo '該文件不可讀';
}
}
if($flag){
//如果通過檢測(cè)可以進(jìn)行下一步
echo '<a href="step3.php">下一步</a>';
}else{
//如果$flag 不通過 則為假 ,輸出警告
echo '文件有些無權(quán)限,請(qǐng)修改權(quán)限后再來安裝';
}
?>
第三步:輸出當(dāng)前數(shù)據(jù)庫的連接信息,提供讓用戶修改的表單
<?php
//將當(dāng)前的數(shù)據(jù)庫連接信息,顯示出來,通過一個(gè)表單來修改即可
//這個(gè)config.php也可以放到include/config.php
include 'config.php';
?>
<form action="step4.php" method="post">
數(shù)據(jù)庫主機(jī):<input type="text" name="DB_HOST" value="<?php echo DB_HOST?>" /><br>
數(shù)據(jù)庫用戶名:<input type="text" name="DB_USER" value="<?php echo DB_USER?>" /><br>
數(shù)據(jù)庫密碼:<input type="text" name="DB_PWD" value="<?php echo DB_PWD?>" /><br>
數(shù)據(jù)庫前綴:<input type="text" name="DB_PREFIX" value="<?php echo DB_PREFIX?>" /><br>
數(shù)據(jù)庫庫名:<input type="text" name="DB_NAME" value="<?php echo DB_NAME?>" /><br>
<input type="submit" value="修改數(shù)據(jù)配置文件" />
</form>
第四步:獲得用戶提交過來的表單的所有的信息,使用正則表達(dá)式來匹配替換文件 <?php
//打開文件,將內(nèi)容全部獲得為字符串
$string=file_get_contents('config.php');
//循環(huán)遍歷表單接收的內(nèi)容
foreach($_POST as $key=>$value){
//正則
$zz="/define\('".$key."','(.*?)'\);/";
//替換
$th="define('$key','$value');";
$string=preg_replace($zz,$th,$string);
}
file_put_contents('config.php',$string);
?>
<a href="step5.php">下一步</a>
第五步:導(dǎo)入表數(shù)據(jù) <?php
include 'config.php';
$conn=mysql_connect(DB_HOST,DB_USER,DB_PWD);
if(mysql_errno()){
exit(mysql_error());
}
mysql_select_db(DB_NAME);
mysql_set_charset('utf8');
$file=file_get_contents('runchance.sql'); //獲得sql 導(dǎo)入表中的所有的信息,使用正則替換
//替換函數(shù)
$file=str_replace('run_',DB_PREFIX,$file);
$arr=explode(';',$file); //用;分割所有的sql 語句,然后循環(huán)執(zhí)行
foreach($arr as $value){
mysql_query($value);
echo '表導(dǎo)入成功<br>';
}
file_put_contents('install.lock',' '); //安裝完成后輸出一個(gè)文件鎖防止用戶再次安裝
echo '恭喜你安裝完成,請(qǐng)使用管理員admin 密碼admin123456登陸本網(wǎng)站';
?>
然成科技是獲得云南省科技廳、省財(cái)政廳、省稅務(wù)局等機(jī)構(gòu)認(rèn)定的高新技術(shù)企業(yè)。公司定位于高端網(wǎng)站設(shè)計(jì)、系統(tǒng)開發(fā)、APP開發(fā)、微信公眾號(hào)、微信小程序開發(fā)。擁有多個(gè)軟著權(quán)!