文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>简单的自动安装程序

简单的自动安装程序

时间:2007-03-17  来源:niohe


?php
define('FRAME',true);
header('Content-Type: text/html; charset=utf-8');
echo EOT1
!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>SPMS安装程序/title>
style type="text/css">
!--
body,td,th {
    font-size: 12px;
    color: #000000;
}
#errorinfo {
    color: #ff0000;
}
-->
/style>
/head>
body>
EOT1;
$switch=$_GET['switch'];
if (!$switch){
    echo EOT2
form id="form1" name="form1" method="post" action="?switch=step1">
  table width="350" border="0" align="center" cellpadding="2" cellspacing="1">
    tr>
      th height="25" colspan="2">strong>SPMS安装程序/strong>/th>
    /tr>
    tr>
      td width="126" height="25" align="right">数据库地址:/td>
      td width="224" align="left">input name="dbhost" type="text" id="dbhost" value="localhost" />/td>
    /tr>
    tr>
      td height="25" align="right">数据库用户:/td>
      td align="left">input name="dbuser" type="text" id="dbuser" value="root" />/td>
    /tr>
    tr>
      td height="25" align="right">用户密码:/td>
      td align="left">input name="dbpass" type="password" id="dbpass" value="ybnews" />/td>
    /tr>
    tr>
      td height="25" align="right">数据库名称:/td>
      td align="left">input name="dbname" type="text" id="dbname" value="spms" />/td>
    /tr>
    tr>
      td height="25" align="right">数据表前缀:/td>
      td align="left">input name="prefix" type="text" id="prefix" value="spms_" />/td>
    /tr>
    tr>
      td height="25" align="right">网站名称:/td>
      td align="left">input name="title" type="text" id="title" value="spms" />/td>
    /tr>
    tr>
      td height="25" colspan="2" align="center">input type="submit" name="Submit" value="开始安装" />/td>
    /tr>
  /table>
/form>
EOT2;
}else {
    $dbhost=$_POST['dbhost'];
    $dbuser=$_POST['dbuser'];
    $dbpass=$_POST['dbpass'];
    $dbname=$_POST['dbname'];
    $title=$_POST['title'];
    $prefix=$_POST['prefix'];
    $filename='../config.inc.php';
            function readover($filename,$method="rb"){
     if($handle=@fopen($filename,$method)){
         flock($handle,LOCK_SH);
         $filedata=@fread($handle,filesize($filename));
         fclose($handle);
     }
     return $filedata;
     }
     function creat_table($content) {
     //global $db,$installinfo,$PW,$lang,$charset;
     global $db,$prefix,$installinfo;
   
     $sql=explode("\n",$content);
     $query='';
     foreach($sql as $key => $value){
         $value=trim($value);
         if(!$value || $value[0]=='#') continue;
         if(eregi("\;$",$value)){
             $query.=$value;
             if(eregi("^CREATE",$query)){
                 $name=substr($query,13,strpos($query,'(')-13);
                 $c_name=str_replace('PREFIX_',$prefix,$name);
                 $installinfo.='创建表格'.$c_name.' ... 成功
';
                 $extra = substr(strrchr($query,')'),1);
                 $tabtype = substr(strchr($extra,'='),1);
                 $tabtype = substr($tabtype, 0, strpos($tabtype,strpos($extra,' ') ? ' ' : ';'));
                 $query = str_replace($extra,'',$query);
                 $query = str_replace('PREFIX_',$prefix,$query);
                     $extra = "ENGINE=$tabtype DEFAULT CHARSET=utf8;";
                 $query .= $extra;
             }
             $db->query($query);
             $query='';
         } else{
             $query.=$value;
         }
     }
        }
    try {
        @ $fp=fopen($filename,'w');
        if (!$fp){
            $msg='打开文件失败!请检查权限!';
            $code='001';
            throw new Exception($msg,$code);
        }
        $content=";
        $content.="defined('FRAME') or die(header(\"HTTP/1.1 403 Not Forbidden\"));\n";
        $content.="define('DOCUMENT_ROOT',__FILE__ ? getdirname(__FILE__).'/' : './');\n";
        $content.="define('DB_HOST', '".$dbhost."');\n";
        $content.="define('DB_USER', '".$dbuser."');\n";
        $content.="define('DB_PASS','".$dbpass."');\n";
        $content.="define('DB_NAME','".$dbname."');\n";
        $content.="\$title='".$title."';\n";
        $content.="\$skindir='default';\n";
        $content.="\$prefix='".$prefix."';\n";
        if (!fwrite($fp,$content)){
            $msg='写入文件失败!请检查权限!';
            $code='002';
            throw new Exception($msg,$code);
        }else {
            echo "写入配置信息成功!
";
            //echo "创建数据库成功!";
        }
        fclose($fp);
        //require_once('../includes/db_mysql.php');
        //$db=new Db($dbhost,$dbuser,$dbpass,'');
        @mysql_connect($dbhost,$dbuser,$dbpass);
        if (!@mysql_select_db($dbname)){
            echo "指定数据库不存在,程序将尝试创建此数据库!
";
            if (@mysql_query("CREATE DATABASE $dbname DEFAULT CHARACTER SET UTF8")){
                echo "创建数据库成功!
";
            }else {
                $msg='创建数据库失败!请手动创建!';
             $code='003';
             throw new Exception($msg,$code);
            }
        }
        require_once('../includes/db_mysql.php');
        $db=new Db($dbhost,$dbuser,$dbpass,$dbname);
        $installinfo="开始创建数据表
";
        $content=readover("spms.sql");
        creat_table($content);
        echo $installinfo;
/*        if(@mysql_query($sql)){
            echo '创建数据表成功!
';
        }else {
            $msg='创建数据表失败!';
            $code='004';
            throw new Exception($msg,$code);
        }*/
    }catch (Exception $e){
        echo "\n";
        echo '错误代码:'.$e->getCode().'
错误描述:'.$e->getMessage()."\n";
        echo "\n";
    }
    //print_r($_POST);
}
echo EOT3
/body>
/html>
EOT3;

用了异常处理,还没有完善,只是抛砖引玉!


相关阅读 更多 +
排行榜 更多 +
开心动动脑安卓版 v1.0 手机版

开心动动脑安卓版 v1.0 手机版

休闲益智 下载
不良人破局手游下载

不良人破局手游下载

角色扮演 下载
云海之下手游下载

云海之下手游下载

角色扮演 下载