PHP網(wǎng)站安裝程序制作的原理、步驟、注意事項(xiàng)和示例代碼
1.制作PHP安裝程序的原理
其實(shí)PHP程序的安裝原理無非就是將數(shù)據(jù)庫(kù)結(jié)構(gòu)和內(nèi)容導(dǎo)入到相應(yīng)的數(shù)據(jù)庫(kù)中,從這個(gè)過程中重新配置連接數(shù)據(jù)庫(kù)的參數(shù)和文件,為了保證不被別人惡意使用安裝文件,當(dāng)安裝完成后需要修改安裝文件。
2. 制作PHP安裝程序的步驟
step1 檢查目錄或文件的權(quán)限
step2 修改或填加配置文件
step3 檢查配置文件正確性
step4 導(dǎo)入數(shù)據(jù)庫(kù)
step5 鎖定或刪除安裝文件
3.制作安裝用到的PHP函數(shù)
檢查文件是否可寫,返回布爾值:is_writable("data/config.php");
檢查文件是否可讀,返回布爾值:is_readable("data/config.php");
fopen() 文件操作函數(shù),打開一個(gè)文件或新建
fwrite() 文件操作函數(shù),寫入內(nèi)容到文件
rename() 文件操作函數(shù),給文件改名
4.注意事項(xiàng)
(1).對(duì)文件和相關(guān)文件夾權(quán)限進(jìn)行檢查,如緩存,生成文件,配置文件
(2).安裝文件盡可能獨(dú)立,可刪除,可改名。
(3).數(shù)據(jù)庫(kù)導(dǎo)入時(shí),需檢查:
a.檢查是否有建立數(shù)據(jù)庫(kù)的權(quán)限
b.是否同名數(shù)據(jù)庫(kù)的存在
c.考慮到數(shù)據(jù)庫(kù)導(dǎo)入的大小是否分段處理
(4).檢查配置環(huán)境,各種模塊的支持情況,如:gd2, pdo,rewirte等
5.示例代碼如下
<?php
$files="data/config.php";
if(!is_writable($files)){
echo "<font color=red>不可寫?。?!</font>";
}else{
echo "<font color=green>可寫</font>";
}
if(isset($_POST[install])){
$config_str = "<?php";
$config_str .= "\n";
$config_str .= '$mysql_host = "' . $_POST[db_host] . '";';
$config_str .= "\n";
$config_str .= '$mysql_user = "' . $_POST[db_user] . '";';
$config_str .= "\n";
$config_str .= '$mysql_pass = "' . $_POST[db_pass] . '";';
$config_str .= "\n";
$config_str .= '$mysql_dbname = "' . $_POST[db_dbname] . '";';
$config_str .= "\n";
$config_str .= '$mysql_tag = "' . $_POST[db_tag] . '";';
$config_str .= "\n";
$config_str .= '?>';
$ff = fopen($files, "w+");
fwrite($ff, $config_str);
//=====================
include_once ("data/config.php"); //嵌入配置文件
if (!@$link = mysql_connect($mysql_host, $mysql_user, $mysql_pass)) { //檢查數(shù)據(jù)庫(kù)連接情況
echo "數(shù)據(jù)庫(kù)連接失敗! 請(qǐng)返回上一頁(yè)檢查連接參數(shù) <a href=install.php>返回修改</a>";
} else {
mysql_query("CREATE DATABASE `$mysql_dbname`");
mysql_select_db($mysql_dbname);
$sql_query[] = "CREATE TABLE `" . $mysql_tag . "admin_log1` (
`id` int(8) unsigned NOT NULL auto_increment,
`username` varchar(40) NOT NULL COMMENT '操作用戶名稱',
`types` varchar(60) NOT NULL,
PRIMARY KEY (`id`)
) ;";
$sql_query[] = "CREATE TABLE `" . $mysql_tag . "admin_log2` (
`id` int(8) unsigned NOT NULL auto_increment,
`username` varchar(40) NOT NULL COMMENT '操作用戶名稱',
`types` varchar(60) NOT NULL,
PRIMARY KEY (`id`)
) ;";
$sql_query[] = "CREATE TABLE `" . $mysql_tag . "admin_log3` (
`id` int(8) unsigned NOT NULL auto_increment,
`username` varchar(40) NOT NULL COMMENT '操作用戶名稱',
`types` varchar(60) NOT NULL,
PRIMARY KEY (`id`)
) ;";
foreach($sql_query as $val){
mysql_query($val);
}
echo "<script>alert('安裝成功!');location.href='index.php'</script>";
rename("install.php","install.lock");
}
}
?>
<hr size=1>
<form action="" method="POST">
填寫主機(jī):<input type="text" name="db_host" value=""/><br>
用 戶 名:<input type="text" name="db_user" value="root"/><br>
密 碼:<input type="text" name="db_pass" value=""/><br>
數(shù)據(jù)庫(kù)名:<input type="text" name="db_dbname" value="php100_db"/><br>
數(shù)據(jù)前綴:<input type="text" name="db_tag" value="p_"/><br>
<button type=submit name=install>下一步</button>
</form>
相關(guān)文章
windows平臺(tái)中配置nginx+php環(huán)境
相對(duì)于linux來說,windows配置web環(huán)境不管是一鍵安裝包還是獨(dú)立配置簡(jiǎn)單多了,這次是講以NGINX作為web的本地的測(cè)試環(huán)境。2015-12-12WordPress中注冊(cè)菜單與調(diào)用菜單的方法詳解
這篇文章主要介紹了WordPress中注冊(cè)菜單與調(diào)用菜單的方法詳解,分別依靠register_nav_menus()函數(shù)與wp_nav_menu()函數(shù)的使用,需要的朋友可以參考下2015-12-12深入Memcache的Session數(shù)據(jù)的多服務(wù)器共享詳解
本篇文章是對(duì)Memcache的Session數(shù)據(jù)的多服務(wù)器共享進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php checkdate、getdate等日期時(shí)間函數(shù)操作詳解
PHP的日期時(shí)間函數(shù)date()中介紹了PHP日期時(shí)間函數(shù)的簡(jiǎn)單用法,這類將介紹更多的函數(shù)來豐富我們的應(yīng)用。2010-03-03原生PHP實(shí)現(xiàn)導(dǎo)出csv格式Excel文件的方法示例【附源碼下載】
這篇文章主要介紹了原生PHP實(shí)現(xiàn)導(dǎo)出csv格式Excel文件的方法,結(jié)合實(shí)例形式分析了基于原生php實(shí)現(xiàn)的Excel文件操作類進(jìn)行Excel文件的導(dǎo)出操作相關(guān)實(shí)現(xiàn)技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2019-03-03