继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

php安装程序的原理

哔哔one
关注TA
已关注
手记 340
粉丝 93
获赞 543

        当我们写了一个网站程序想分享给别人一起使用时,通常我们都会把数据库表的结构、表的初始化数据导出来,以方便他人导入数据库。但为何我们不写个安装程序,只要填写了主机,连接数据库的用户名跟密码、要创建的数据库名,程序就会帮我们创建数据库、表、初始化表的数据。所以写安装程序主要出于两个目的:第一个是方便自己移植自己的网站,第二个就是方便别人使用你的程序。下面就简单介绍一下php安装程序的基本原理。


简单步骤如下:
1、写一个form表单供用户填写主机名$host,连接数据库的用户名$user跟密码$password,要创建的数据库名$dbname。
2、将获得表单的数据写入一个配置文件config.php,以方便其它文件来调用数据库的信息。
3、调用配置文件include_once("config.php"),写程序进行数据库的连接,创建数据库、创建表、初始化表的数据。



ok,首先开始第一步

 


[xhtml] view plaincopyprint?

  1. <form action="install.php" method="post">  

  2. 填写主机:<input type="text" name="host">本地主机为localhost<br />  

  3. 连接数据库的用户名:<input type="text" name="user"><br />  

  4. 连接数据库的密码:<input type="text" name="password"><br />  

  5. 要创建的数据库名:<input type="text" name="dbname"><br />  

  6. <input type="submit" name="install" value="安装">  

  7. </form>  

<form action="install.php" method="post">填写主机:<input type="text" name="host">本地主机为localhost<br />连接数据库的用户名:<input type="text" name="user"><br />连接数据库的密码:<input type="text" name="password"><br />要创建的数据库名:<input type="text" name="dbname"><br /><input type="submit" name="install" value="安装"></form>


 

2、将获得表单的数据写入一个配置文件config.php,以方便其它文件来调用数据库的信息。

 


[php] view plaincopyprint?

  1. <?php  

  2. header("Content-type:text/html;charset=gb2312"//看你用的是什么编码,要保持一致。  

  3. $files="config.php"//要写入的配置文件。  

  4. if(!is_writable($files)){    //判断是否有可写的权限,linux操作系统要注意这一点,windows不必注意。  

  5.     echo "<font color=red>文件不可写</font>";  

  6.       exit();  

  7. }  

  8. if($_POST['install']){  //获取用户提交的数据。  

  9. $host=$_POST['host'];  

  10. $user=$_POST['user'];  

  11. $password=$_POST['password'];  

  12. $dbname=$_POST['dbname'];  

  13.    

  14. $config="<?php ";        //$config的内容就是要写入配置文件的内容。  

  15. $config.="/n";            //   /n是用来换行的。  

  16. $config.="/$host='".$host."';";  

  17. $config.="/n";    

  18. $config.="/$user='".$user."';";  

  19. $config.="/n";    

  20. $config.="/$password='".$password."';";  

  21. $config.="/n";    

  22. $config.="/$dbname='".$dbname."';";  

  23. $config.="/n";    

  24. $config.="?>";  

  25.    

  26. $file = fopen($files"w");   //以写入的方式打开config.php这个文件。  

  27. fwrite($file,$config);  //将配置信息写入config.php文件。  

  28. fclose($file);  

  29. }  

  30. ?>  

<?phpheader("Content-type:text/html;charset=gb2312") //看你用的是什么编码,要保持一致。$files="config.php"; //要写入的配置文件。if(!is_writable($files)){    //判断是否有可写的权限,linux操作系统要注意这一点,windows不必注意。    echo "<font color=red>文件不可写</font>";      exit();}if($_POST['install']){  //获取用户提交的数据。$host=$_POST['host'];$user=$_POST['user'];$password=$_POST['password'];$dbname=$_POST['dbname']; $config="<?php ";        //$config的内容就是要写入配置文件的内容。$config.="/n";            //   /n是用来换行的。$config.="/$host='".$host."';";$config.="/n";  $config.="/$user='".$user."';";$config.="/n";  $config.="/$password='".$password."';";$config.="/n";  $config.="/$dbname='".$dbname."';";$config.="/n";  $config.="?>"; $file = fopen($files, "w");   //以写入的方式打开config.php这个文件。fwrite($file,$config);  //将配置信息写入config.php文件。fclose($file);}?>


 

 

3、调用配置文件include_once("config.php"),写程序进行数据库的连接,创建数据库、创建表、初始化表的数据。

 

 

 

[php] view plaincopyprint?

  1. <?php  

  2. include_once("config.php");   //导入配置信息.  

  3. if(!$conn=@mysql_connect($host,$user,$password)){  

  4.        echo "连接数据库失败!请返回上一页检查连接参数 <a href="javascript:history.go(-1)" mce_href="javascript:history.go(-1)"><font color=#ff0000>返回修改</font></a>";  

  5.        exit();  

  6. }else{  

  7.   mysql_query("set names gb2312");  //设置数据库的编码,注意要与前面一致。  

  8.    if(!mysql_select_db($dbname,$conn)){   //如果数据库不存在,我们就进行创建。  

  9.          $dbsql="CREATE DATABASE `$dbname`";  

  10.          if(!mysql_query($dbsql)){  

  11.            echo "创建数据库失败,请确认是否有足够的权限!<a href="javascript:history.go(-1)" mce_href="javascript:history.go(-1)"><font color=#ff0000>返回修改</font></a>";  

  12.            exit();  

  13.           }  

  14.    }  

  15. //下面根据你实际的表的结构跟初始化表的数据来写,这些sql语句,我们在导出时可以找到。  

  16.    //新建一个表test1  

  17.    $sql_query[] = "CREATE TABLE `test1` (     

  18.                  `id` int(4) NOT NULL auto_increment,  

  19.                  `name` varchar(20) character set gb2312 NOT NULL,  

  20.                  `major` varchar(40) character set gb2312 NOT NULL,  

  21.                   PRIMARY KEY  (`id`)  

  22.                   ) ENGINE=InnoDB  DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1;";  

  23.     //新建一个表test2  

  24.     $sql_query[] = "CREATE TABLE `test2` (     

  25.                  `id` int(4) NOT NULL auto_increment,  

  26.                  `name` varchar(20) character set gb2312 NOT NULL,  

  27.                  `major` varchar(40) character set gb2312 NOT NULL,  

  28.                   PRIMARY KEY  (`id`)  

  29.                   ) ENGINE=InnoDB  DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1;";  

  30.      //为test1表默认初始化一些数据。  

  31.      $sql_query[]="INSERT INTO `test1` (`name`, `major`) VALUES('张三','电子商务')";  

  32.      foreach($sql_query as $sql){  

  33.             if(!mysql_query($sql)){      //依次执行以上的sql语句,就是创建表和初始化数据。  

  34.             echo "创建表失败或者初始化数据失败";  

  35.                 exit();  

  36.            }  

  37.      }  

  38.      mysql_close();  

  39.      echo "安装成功";//可以做一个跳转到首页。  

  40.      exit();  

  41. }  

  42. ?>  

<?phpinclude_once("config.php");   //导入配置信息.if(!$conn=@mysql_connect($host,$user,$password)){       echo "连接数据库失败!请返回上一页检查连接参数 <a href="javascript:history.go(-1)" mce_href="javascript:history.go(-1)"><font color=#ff0000>返回修改</font></a>";       exit();}else{  mysql_query("set names gb2312");  //设置数据库的编码,注意要与前面一致。   if(!mysql_select_db($dbname,$conn)){   //如果数据库不存在,我们就进行创建。         $dbsql="CREATE DATABASE `$dbname`";         if(!mysql_query($dbsql)){           echo "创建数据库失败,请确认是否有足够的权限!<a href="javascript:history.go(-1)" mce_href="javascript:history.go(-1)"><font color=#ff0000>返回修改</font></a>";           exit();          }   }//下面根据你实际的表的结构跟初始化表的数据来写,这些sql语句,我们在导出时可以找到。   //新建一个表test1   $sql_query[] = "CREATE TABLE `test1` (                    `id` int(4) NOT NULL auto_increment,                 `name` varchar(20) character set gb2312 NOT NULL,                 `major` varchar(40) character set gb2312 NOT NULL,                  PRIMARY KEY  (`id`)                  ) ENGINE=InnoDB  DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1;";    //新建一个表test2    $sql_query[] = "CREATE TABLE `test2` (                    `id` int(4) NOT NULL auto_increment,                 `name` varchar(20) character set gb2312 NOT NULL,                 `major` varchar(40) character set gb2312 NOT NULL,                  PRIMARY KEY  (`id`)                  ) ENGINE=InnoDB  DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1;";     //为test1表默认初始化一些数据。     $sql_query[]="INSERT INTO `test1` (`name`, `major`) VALUES('张三','电子商务')";     foreach($sql_query as $sql){            if(!mysql_query($sql)){      //依次执行以上的sql语句,就是创建表和初始化数据。            echo "创建表失败或者初始化数据失败";                exit();           }     }     mysql_close();     echo "安装成功";//可以做一个跳转到首页。     exit();}?>


 

有人或许为问,直接把表单提交的数据来进行安装不就可以了,为什么还要写入配置信息文件呢,这个是因为为了方便其它要使用到数据库的文件来连接数据库。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP