PHP网站安装程序的原理及代码

原文: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>

 

执行完安装文件(自动修改文件名):

数据库导入成功!

 

时间: 2024-07-30 12:13:42

PHP网站安装程序的原理及代码的相关文章

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

1.制作PHP安装程序的原理 其实PHP程序的安装原理无非就是将数据库结构和内容导入到相应的数据库中,从这个过程中重新配置连接数据库的参数和文件,为了保证不被别人恶意使用安装文件,当安装完成后需要修改安装文件. 2. 制作PHP安装程序的步骤 step1 检查目录或文件的权限 step2 修改或填加配置文件 step3 检查配置文件正确性 step4 导入数据库 step5 锁定或删除安装文件 3.制作安装用到的PHP函数 检查文件是否可写,返回布尔值:is_writable("data/con

PHP实现Mysql网站安装程序制作

其实PHP程序的安装原理无非就是将数据库结构和内容导入到相应的数据库中,从这个过程中重新配置连接数据库的参数和文件,为了保证不被别人恶意使用安装文件,当安装完成后需要修改安装文件.1.制作PHP安装程序的原理  其实PHP程序的安装原理无非就是将数据库结构和内容导入到相应的数据库中,从这个过程中重新配置连接数据库的参数和文件,为了保证不被别人恶意使用安装文件,当安装完成后需要修改安装文件. 2. 制作PHP安装程序的步骤  step1 检查目录或文件的权限  step2 修改或填加配置文件  s

怎么在安装程序中判断用户机器上安装的是sqlserver2000,还是sqlserver2005,2008

问题描述 要在安装程序中判断用户机器上安装的是sqlserver2000,还是sqlserver2005,2008这三种数据库之中的哪一种还是哪几种,要求无论安装了几种数据库都要判断出来,然后再进行不同的操作,请问怎么判断?是查注册表判断吗?那sqlserver2000,2005,2008他们对应的注册表键值都是什么,应该怎么查,在安装程序里代码应该怎么写,恳请各位高手帮助. 解决方案 解决方案二:select@@VERSIONSELECTSERVERPROPERTY('ProductVersi

制作C#安装程序,数据库打包,下面是安装时附加数据库代码,为何不行?

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Configuration.Install;usingSystem.Data;usingSystem.Data.SqlClient;namespaceInstallDB{[RunInstaller(true)]publicpartialclassInstallerDB:Installer{publicInstallerDB

网站源文件被注入了iframe代码—ARP欺骗的木马病毒攻击

我就很纳闷,运行了4年的网站一直都好好的最近怎么出现病毒提示呢.职业习惯原因打开了网站的源代码查看,原来在网页源代码的头部被加入了iframe嵌套框架网页,该网页执行木马程序-- 按照常理我心中一寒:估计是服务器被人攻陷了,所有文件代码被加了此行代码,于是FTP上去,下载文件下来查看却没有该代码. 于是询问服务器管理员含笑,他一听就说:"是中ARP欺骗的病毒攻击了". 那么什么是"ARP欺骗"呢? 首先,ARP的意思是Address Resolution Proto

网站优化之如何选择网站的程序

今天武汉SEO给大家带来的是网站优化最后一个重要的因素,如何选择网站的程序,我在前面的文章中已经分享了<网站优化之域名篇-如何选择域名>和<网站优化之空间篇-空间的重要性>,本来这个网站优化之程序篇是不打算写的,自己在程序上面还是一个菜鸟级别,没有资格和大家分享这个的,但是自从做SEO以来,还是发现很多朋友对这个网站的程序如何选择还是不大清楚,所以我结合自己做SEO优化的理解和高手们的分享,今天来和大家谈谈网站的程序该如何选择. 一 个人博客站点推荐Z-BLOG和WORDPRESS

使用Python实现跨平台的安装程序

引言 我们在使用类 Unix 系统时,经常会用到一些以".bin"或者".run"结尾的安装程序 (Installer).(为描述方便,这里我们使用"Bin 安装程序"来泛指这种安装程序.)Bin 安装程序不依赖于系统发行版自己的包 (package) 管理器来实现应用程序的安装和卸载,而是完全自己控制安装的整个过程,程序卸载的时候需要用户执行应用程序安装目录下的卸载脚本来完成. Bin 安装程序最大的好处就是可以运行在多种类 Unix 平台,以

ASP.NET程序中常用编程代码

ASP.NET程序中常用编程代码 1.为按钮添加确认对话框 Button1.Attributes.Add("onclick","return confirm('确认?')");button.attributes.add("onclick","if(confirm('are you sure...?')){return true;}else{return false;}") 2.删除表格选定记录 //获得DataGrid主键in

网站安装打包 新建网站[四][文件解压] 上

在新建网站之前,就是要把打包好的项目拷贝一份到IIS指定的路径上,同时,还要为个别目录设置相应的访问权限! 于是就产生了两件事: 1.拷贝->[这里我是采用RAR打包,然后解压] 2.设置权限 如果是用拷贝方式,关于文件夹Copy,可以参考我的这篇文章: 文件夹复制操作(非递归循环遍历文件夹) http://www.cnblogs.com/cyq1162/archive/2007/05/28/762294.html     为什么我没采用拷贝的方法,前提有两个,就是项目的文件夹有太多,在制作应用