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网站在线人数统计
Apr 09 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
mac下Apache + MySql + PHP搭建网站开发环境
Jun 02 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Jul 11 PHP
PHP类的反射用法实例
Nov 03 PHP
PHP中的Streams详细介绍
Nov 12 PHP
php对象在内存中的存在形式分析
Feb 03 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
PHP实现简单爬虫的方法
Jul 29 PHP
基于PHP实现等比压缩图片大小
Mar 04 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 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下MAIL的另一解决方案
2006/10/09 PHP
php你的验证码安全码?
2007/01/02 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
jQuery chili图片远处放大插件
2009/11/30 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
Vue脚手架编写试卷页面功能
2020/03/17 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
python中sys.argv参数用法实例分析
2015/05/20 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
资深财务管理人员自我评价
2013/09/22 职场文书
政治思想表现评语
2014/05/04 职场文书
公司合作协议范文
2014/10/01 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python