免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 935 | 回复: 0
打印 上一主题 下一主题

简单的自动安装程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-17 15:45 |只看该作者 |倒序浏览

?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;

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


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/33579/showart_260542.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP