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 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
php split汉字
Jun 05 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
Apr 25 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
php中的filesystem文件系统函数介绍及使用示例
Feb 13 PHP
一个php短网址的生成代码(仿微博短网址)
May 07 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
php ajax数据传输和响应方法
Aug 21 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 遍历XP文件夹下所有文件
2008/11/27 PHP
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
PHP类继承 extends使用介绍
2014/01/14 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
xtree.js 代码
2007/03/13 Javascript
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
python实现简单井字棋小游戏
2020/03/05 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
店长岗位的工作内容
2013/11/12 职场文书
优质服务演讲稿
2014/05/14 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
python 实现体质指数BMI计算
2021/05/26 Python