1.製作PHP安裝程式的原理
其實PHP程式的安裝原理無非就是將資料庫結構和內容匯入到相應的資料庫中,從這個過程中重新設定串連資料庫的參數和檔案,為了保證不被別人惡意使用安裝檔案,當安裝完成後需要修改安裝檔案。
2. 製作PHP安裝程式的步驟
step1 檢查目錄或檔案的許可權
step2 修改或填加設定檔
step3 檢查設定檔正確性
step4 匯入資料庫
step5 鎖定或刪除安裝檔案
3.製作安裝用到的PHP函數
檢查檔案是否可寫,返回布爾值:is_writable("data/config.php");
檢查檔案是否可讀,返回布爾值:is_readable("data/config.php");
fopen() 檔案操作函數,開啟一個檔案或建立
fwrite() 檔案操作函數,寫入內容到檔案
rename() 檔案操作函數,給檔案改名
4.注意事項
(1).對檔案和相關檔案夾許可權進行檢查,如緩衝,組建檔案,設定檔
(2).安裝檔案儘可能獨立,可刪除,可改名。
(3).資料庫匯入時,需檢查:
a.檢查是否有建立資料庫的許可權
b.是否同名資料庫的存在
c.考慮到資料庫匯入的大小是否分段處理
(4).檢查配置環境,各種模組的支援情況,如: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)) { //檢查資料庫連接情況
echo "資料庫連接失敗! 請返回上一頁檢查串連參數 <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">
填寫主機:<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>
資料庫名:<input type="text" name="db_dbname" value="php100_db"/><br>
資料首碼:<input type="text" name="db_tag" value="p_"/><br>
<button type=submit name=install>下一步</button>
</form>