PHP网站安装程序制作的原理、步骤、注意事项和示例代码


Posted in PHP onAugust 01, 2010

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>
PHP 相关文章推荐
php简单提示框alert封装函数
Aug 08 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
Nov 11 PHP
php使用百度翻译api示例分享
Jan 31 PHP
preg_match_all使用心得分享
Jan 31 PHP
php5.2以下版本无json_decode函数的解决方法
May 25 PHP
php树型类实例
Dec 05 PHP
PHP+MySQL删除操作实例
Jan 21 PHP
Symfony生成二维码的方法
Feb 04 PHP
php的闭包(Closure)匿名函数初探
Feb 14 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
Feb 04 PHP
php提取微信账单的有效信息
Oct 01 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
PHP Stream_*系列函数
Aug 01 #PHP
php下目前为目最全的CURL中文说明
Aug 01 #PHP
php feof用来识别文件末尾字符的方法
Aug 01 #PHP
apache+php+mysql安装配置方法小结
Aug 01 #PHP
PHP 作用域解析运算符(::)
Jul 27 #PHP
PHP中的integer类型使用分析
Jul 27 #PHP
PHP中的float类型使用说明
Jul 27 #PHP
You might like
php强大的时间转换函数strtotime
2016/02/18 PHP
php四种定界符详解
2017/02/16 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
JavaScript将字符串转换成字符编码列表的方法
2015/03/19 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
Python深入学习之装饰器
2014/08/31 Python
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
对Python中plt的画图函数详解
2018/11/07 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
python安装scipy的方法步骤
2019/06/26 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
工程地质勘察专业大学生求职信
2013/10/13 职场文书
成人继续教育实施方案
2014/03/01 职场文书
给校长的建议书100字
2014/05/16 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
三八节祝酒词
2015/08/11 职场文书
车间班组长竞聘书
2015/09/15 职场文书
粗暴解决CUDA out of memory的问题
2021/05/22 Python