PHP网站安装程序的原理及代码
原理:
其实PHP程序的安装原理无非就是将数据库结构和内容导入到相应的数据库中,从这个过程中重新配置连接数据库的参数和文件,为了保证不被别人恶意使用安装文件,当安装完成后需要修改安装文件。
步骤:
1、检查目录或文件的权限
2、修改或填加配置文件
3、检查配置文件正确性
4、导入数据库
5、锁定或删除安装文件
具体代码:
文件:由于只是展示原理,尽量让其简单化故用小Demo形式演示
install.html 为表单填写文件
doAction.php 为处理表单文件
dbconfig.php 数据库配置文件
index.php 执行成功跳转页面


install.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>安装程序</title>
</head>
<body>
<center>
<h2>PHP在线安装程序</h2>
<hr/>
<form action="doAction.php" method="post">
<table>
<tr>
<td>主机地址:</td>
<td><input type="text" name="host"/></td>
</tr>
<tr>
<td>数据库账号:</td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td>数据库密码:</td>
<td><input type="password" name="password"/></td>
</tr>
<td>数据库名:</td>
<td><input type="text" name="dbname"/></td>
</tr>
<tr>
<td>数据库表前缀:</td>
<td><input type="text" name="flag"/></td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<input type="submit" value="安装"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table> </form>
</center>
</body>
</html>
doAction.php
<?php
$filename="dbconfig.php";
//配置文件内容
$config='<?php';
$config.="\n";
$config.='$host="'.$_POST["host"].'";';
$config.="\n";
$config.='$user="'.$_POST["username"].'";';
$config.="\n";
$config.='$pass="'.$_POST["password"].'";';
$config.="\n";
$config.='$dbname="'.$_POST["dbname"].'";';
$config.="\n";
$config.='$flag="'.$_POST["flag"].'";';
$config.="\n";
$config.="?>";
if(is_writable($filename)){//检测是否有权限可写
$handle=fopen($filename, "w+");
fwrite($handle, $config);
//连接数据库
include_once($filename);
if(!@$link=mysql_connect($host,$user,$pass)){
echo "数据库连接失败,<a href='install.php'>返回设置</a>";
}else{
mysql_query("create database if not exists `$dbname`");
mysql_select_db($dbname,$link);
//建表语句
$sql[]="CREATE TABLE IF NOT EXISTS `".$flag."access` (
`role_id` smallint(6) unsigned NOT NULL,
`node_id` smallint(6) unsigned NOT NULL,
`level` tinyint(1) NOT NULL,
`module` varchar(50) DEFAULT NULL,
KEY `groupId` (`role_id`),
KEY `nodeId` (`node_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
$sql[]="CREATE TABLE IF NOT EXISTS `".$flag."node` (
`id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`title` varchar(50) DEFAULT NULL,
`status` tinyint(1) DEFAULT '0',
`remark` varchar(255) DEFAULT NULL,
`sort` smallint(6) unsigned DEFAULT NULL,
`pid` smallint(6) unsigned NOT NULL,
`level` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `level` (`level`),
KEY `pid` (`pid`),
KEY `status` (`status`),
KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
$sql[]="CREATE TABLE IF NOT EXISTS `".$flag."role` (
`id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`pid` smallint(6) DEFAULT NULL,
`status` tinyint(1) unsigned DEFAULT NULL,
`remark` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `pid` (`pid`),
KEY `status` (`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
$sql[]="CREATE TABLE IF NOT EXISTS `".$flag."role_user` (
`role_id` mediumint(9) unsigned DEFAULT NULL,
`user_id` char(32) DEFAULT NULL,
KEY `group_id` (`role_id`),
KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
foreach ($sql as $value) {//由于mysql_query不支持一次性执行多条语句,所以用for循环遍历
mysql_query($value);
}
echo "<script>window.location='index.php';</script>";
rename("install.html", "install.lock");
}
}else{
echo "您没有权限操作。";
}
?>
dbconfig.php
<?php
$host="localhost";
$user="root";
$pass="";
$dbname="demo";
$flag="lcw_";
?>
index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>首页</title>
</head>
<body>
<h2>^_^ 数据导入成功。</h2>
</body>
</html>
执行完安装文件(自动修改文件名):

数据库导入成功!

PHP网站安装程序的原理及代码的更多相关文章
- 制作PHP安装程序的原理和步骤56
制作PHP安装程序的原理和步骤56 1.制作PHP安装程序的原理和步骤检查目录或文件的权限----修改或填加配置文件---检查配置文件正 确性---导入数据库----锁定或删除安装文件 原理: 其实P ...
- VS2010制作网站自定义安装程序 转
最近在把一个网站打包成安装程序,这方面的文章网上有很多,也看了不少,但因为开发环境的不同,遇到了一些问题,便写下这篇文章记下整个流程(有很多资源都来自互联网,由于条目颇多,所以无法说明其来处,敬请谅解 ...
- php安装程序
php安装程序 制作原理和步骤 检查目录或文件权限 修改或者添加配置文件 检查配置文件的正确性 导入数据库 锁定或删除安装文件 用到函数 iswritable("data/config.ph ...
- php 如何写一个自己项目的安装程序
版权声明:此篇文章只是用作笔记,如果版权冲突,请邮件通知一下(15201155501@163.com) https://blog.csdn.net/shenpengchao/article/detai ...
- android应用程序的安装方式与原理
android应用程序的安装方式与原理 四种安装方式: 1.系统应用安装――开机时完成,没有安装界面 2.网络下载应用安装――通过market应用完成,没有安装界面 3.ADB工具安装――没有安装界面 ...
- C# winform 安装程序打包(自定义操作)
(一),安装程序 以前用vs制作过安装程序,现在把步骤写出来,有帮助的大家一定要顶哦 第一步:建立工程1.打开vs,新建项目->其他项目类型->安装和部署(這個子项下面有安装项目和Web安 ...
- 一键发布ASP.NET Web安装程序
转载自:http://www.cnblogs.com/nangong/p/Web.html 前言:最近公司有个Web要发布,但是以前都是由实施到甲方去发布,配置,这几天有点闲,同事让我搞 ...
- 【转】C# winform 安装程序打包(自定义操作)
(一),安装程序 以前用vs制作过安装程序,现在把步骤写出来,有帮助的大家一定要顶哦 第一步:建立工程1.打开vs,新建项目->其他项目类型->安装和部署(這個子项下面有安装项目和Web安 ...
- 使用LabVIEW如何生成应用程序(exe)和安装程序(installer)
主要软件: LabVIEW Development Systems>>LabVIEW Professional Development System主要软件版本: 2012主要软件 ...
随机推荐
- VS2008 Project : error PRJ0019: 某个工具从以下位置返回了错误代码: "正在执行生成后事件..."解决方案
右键工程属性 -> 配置属性 -> 生成事件 ->生成后事件,命令行中的路径加上双引号,如 copy $(ProjectDir)\export\win32\Debug\$(Proje ...
- OPENSSL库的使用-DES篇
一.单DES算法ECB模式加解密 1.使用函数DES_set_key_unchecked设置密钥 2.使用函数DES_ecb_encrypt来进行数据加解密 void DES_ecb_encrypt( ...
- [置顶] think in java interview-高级开发人员面试宝典(八)
面经出了7套,收到许多读者的Email,有许多人说了,这些基础知识是不是为了后面进一步的”通向架构师的道路“做准备的? 对的,你们没有猜错,就是这样的,我一直在酝酿后面的”通向架构师的道路“如何开章. ...
- Android ListView 常见问题与使用总结
一.机制 ListView机制 - 先运行getCount.然后运行getView. 假设getCount返回0,不运行getView Gallery convertView不会复用.每次都返回NUL ...
- PHP - 目录与文件
第6章 目录与文件 学习要点: 1.目录操作 2.磁盘.目录和文件计算 3.文件处理 将相关的数据组织为文件和目录等实体,这一直是计算环境的核心概念.出于这个原因,程序员需要有一种方法来获得关于文件和 ...
- 【HTTP】Fiddler(二) - 使用Fiddler做抓包分析
上文( http://blog.csdn.net/ohmygirl/article/details/17846199 )中已经介绍了Fiddler的原理和软件界面.本文主要针对Fiddler的抓包处理 ...
- 基于visual Studio2013解决面试题之1207堆排序
题目
- UPC 2959: Caoshen like math 这就是个水题
http://acm.upc.edu.cn/problem.php?id=2959 这就是个水题,之所以要写这个题是感觉很有纪念意义 用力看就是盲……23333333333333333 这个题就是最小 ...
- 每周日与周四《红酒屋》探戈舞会"Wine Bar" Milonga_原生态拉丁_新浪博客
每周日与周四<红酒屋>探戈舞会"Wine Bar" Milonga_原生态拉丁_新浪博客 每周日与周四<红酒屋>探戈舞会"Wine Bar ...
- 熟练掌握doc命令下的文件操作
这里以介绍操作php脚本为例