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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 PHP
PHP stripos()函数及注意事项的分析
Jun 08 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
thinkphp特殊标签用法概述
Nov 24 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
Yii框架的布局文件实例分析
Sep 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
PR值查询 | PageRank 查询
2006/12/20 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
vue跨域解决方法
2017/10/15 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
跟老齐学Python之关于类的初步认识
2014/10/11 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
Python实现字典的key和values的交换
2015/08/04 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
python如何删除文件、目录
2020/06/23 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
文秘专业大学生求职信
2013/11/10 职场文书
班级年度安全计划书
2014/05/01 职场文书
公司年终奖分配方案
2014/06/16 职场文书
就业协议书样本
2014/08/20 职场文书
督导岗位职责范本
2015/04/10 职场文书