php安装程序制作记录

来源:互联网 发布:linux snmp trap 编辑:程序博客网 时间:2024/05/17 08:57

php安装程序原理:
   其实PHP程序的安装原理无非就是将数据库结构和内容导入到相应的数据库中,从这个过程中重新配置连接数据库的参数和文件,为了保证不被别人恶意使用安装文件,当安装完成后需要修改安装文件。

 

步骤:
检查目录或文件的权限
修改或填加配置文件
检查配置文件正确性
导入数据库
锁定或删除安装文件

 

检查文件权限
is_writable("config.php");
is_writable() 检查文件是否可写,用来判断文件权限,
同类函数还有is_readable() 检查文件是否可读,返回布尔值
其他函数
fopen () 文件操作函数,打开一个文件或新建
fwrite () 文件操作函数,写入内容到文件
rename() 文件操作函数,给文件改名


制作安装的注意事项

1、对文件权限进行检查和相关文件夹,如缓存,生成文件,配置文件

2、安装文件尽可能独立,可删除,可改名。

3、数据库导入时,需检查:
    a、检查是否有建立数据库的权限
    b、是否同名数据库的存在
    c、考虑到数据库导入的大小是否分段处理

4、检查配置环境,各种模块的支持情况,如:gd2, pdo,rewirte等


最后做出来的一个实例,不断完善中

 

install.php //安装文件

 

<?php
$config_files = "./config.php";
if (is_writable($config_files)) {
 echo "<font color=green>可写</font><br/>";
} else {
 echo "<font color=red>$config_files不可写</font>";
 exit;
}
if ($_POST["install"]) {
 $db_host = $_POST["db_host"];
 $db_user = $_POST["db_user"];
 $db_pass = $_POST["db_pass"];
 $db_dbname = $_POST["db_dbname"];
 $db_prefix = $_POST["db_prefix"];

 $config_str = '<?php';
 $config_str .= "/n";
 $config_str .= '$mysql_host     = "' . $db_host . '";';
 $config_str .= "/n";
 $config_str .= '$mysql_user     = "' . $db_user . '";';
 $config_str .= "/n";
 $config_str .= '$mysql_pass     = "' . $db_pass . '";';
 $config_str .= "/n";
 $config_str .= '$mysql_dbname     = "' . $db_dbname . '";';
 $config_str .= "/n";
 $config_str .= '$mysql_prefix   = "' . $db_prefix . '";';
 $config_str .= "/n";
 $config_str .= '?>';

 $f = fopen($config_files, "w+");
 fwrite($f, $config_str);

 include_once ("./config.php");
 if (!@ $link = mysql_connect($mysql_host, $mysql_user, $mysql_pass)) {
  echo '数据库链接失败!返回检查连接参数<a href="javascript:history.back();">返回修改</a>';
  exit;
 } else {
  echo '数据库连接成功<br />';
  mysql_query("CREATE DATABASE `$mysql_dbname`");
  echo $mysql_dbname . '数据库创建成功<br/>';
  mysql_select_db($mysql_dbname, $link);
  include_once ("./sql.php");
  foreach ($sql_query_array as $key => $value) {
   mysql_query($value);
   echo '创建表' . $mysql_prefix . $key . '<br/>';
  }

  rename("install.php","install.lock");

  echo $mysql_dbname.'数据库创建完成<br/>';
  exit;
 }
}
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php安装程序</title>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <form action="" method="post">
    <tr>
      <td>填写主机:
        <input type="text" name="db_host" id="db_host" /></td>
    </tr>
    <tr>
      <td>用 户 名:
        <input type="text" name="db_user" id="db_host" /></td>
    </tr>
    <tr>
      <td>密  码:
        <input type="text" name="db_pass" id="db_host" /></td>
    </tr>
    <tr>
      <td>数据库名:
        <input type="text" name="db_dbname" id="db_host" /></td>
    </tr>
    <tr>
      <td>前  缀:
        <input type="text" name="db_prefix" id="db_host" /></td>
    </tr>
    <tr>
      <td><input type="submit" name="install" id="install" value="提交" /></td>
    </tr>
  </form>
</table>
</body>
</html>

 

sql.php //生成对应表的sql语句数组

 

<?php
$sql_query_array["news"] = "CREATE TABLE `" . $mysql_prefix . "news` (
                      `id` INTEGER(11) NOT NULL AUTO_INCREMENT,
                      `title` VARCHAR(50) COLLATE utf8_bin NOT NULL DEFAULT '',
                      `content` TEXT COLLATE utf8_bin NOT NULL,
                      PRIMARY KEY (`id`)
                     ) ENGINE=InnoDB
                       CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'";
?>