php安裝程序的原理

        當我們寫了一個網站程序想分享給別人一起使用時,通常我們都會把數據庫表的結構、表的初始化數據導出來,以方便他人導入數據庫。但爲何我們不寫個安裝程序,只要填寫了主機,連接數據庫的用戶名跟密碼、要創建的數據庫名,程序就會幫我們創建數據庫、表、初始化表的數據。所以寫安裝程序主要出於兩個目的:第一個是方便自己移植自己的網站,第二個就是方便別人使用你的程序。下面就簡單介紹一下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. ?>  

<?php header("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. ?>  

<?php include_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(); } ?>


 

有人或許爲問,直接把表單提交的數據來進行安裝不就可以了,爲什麼還要寫入配置信息文件呢,這個是因爲爲了方便其它要使用到數據庫的文件來連接數據庫。



轉自:http://blog.csdn.net/dongsg11200/article/details/5598874

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章