PageRenderTime 47ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/install.php

https://github.com/cyprieng/MediaStreamer
PHP | 169 lines | 145 code | 22 blank | 2 comment | 8 complexity | c746f777fcdee016ec788d28883c6ff6 MD5 | raw file
  1. <?php
  2. include 'global/init.php';
  3. ?>
  4. <!DOCTYPE html>
  5. <html lang="fr">
  6. <head>
  7. <title>MediaStreamer</title>
  8. <meta http-equiv="Pragma" content="no-cache">
  9. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  10. <link href="<?php echo CSS_PATH; ?>bootstrap.min.css" rel="stylesheet">
  11. <link href="<?php echo CSS_PATH; ?>jquery-ui.css" rel="stylesheet">
  12. <link href="<?php echo CSS_PATH; ?>main.css" rel="stylesheet">
  13. <link rel="shortcut icon" type="image/x-icon" href="<?php echo IMAGE_PATH; ?>favicon.png" />
  14. </head>
  15. <body>
  16. <div class="navbar navbar-inverse navbar-fixed-top">
  17. <div class="navbar-inner">
  18. <div class="container">
  19. <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
  20. <span class="icon-bar"></span>
  21. <span class="icon-bar"></span>
  22. <span class="icon-bar"></span>
  23. </a>
  24. <a class="brand" href="index.php">MediaStreamer</a>
  25. <div class="nav-collapse collapse">
  26. <ul class="nav">
  27. </ul>
  28. </div>
  29. </div>
  30. </div>
  31. </div>
  32. <div class="container hero-unit">
  33. <h3>Installation</h3>
  34. <?php
  35. if(isset($_POST['name']) && isset($_POST['password']) && isset($_POST['serverSQL']) && isset($_POST['userSQL']) && isset($_POST['passwordSQL']) && isset($_POST['baseSQL'])){
  36. try{
  37. $bdd = new PDO('mysql:host='.$_POST['serverSQL'].';dbname='.$_POST['baseSQL'].'', $_POST['userSQL'], $_POST['passwordSQL']);
  38. $rootPath = dirname(__FILE__).DIRECTORY_SEPARATOR; //chemin pour php
  39. $htmlPath = mb_substr($_SERVER['REQUEST_URI'],0,-mb_strlen(strrchr($_SERVER['REQUEST_URI'],"/"))).DIRECTORY_SEPARATOR; //chemin pour html
  40. if(preg_match('/^[a-z0-9_-]{3,16}$/', $_POST['name'])){
  41. $name = $_POST['name'];
  42. if(preg_match('/^[a-z0-9_-]{6,255}$/', $_POST['password'])){
  43. $password = $_POST['password'];
  44. $password = sha1($name.$password);
  45. $bdd->exec('CREATE TABLE user (id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(16) NOT NULL, password VARCHAR(255) NOT NULL, admin BOOLEAN NOT NULL DEFAULT \'0\', music_folder VARCHAR(255), video_folder VARCHAR(255), podcast TEXT, lastfm_session VARCHAR(255), PRIMARY KEY (id))ENGINE=INNODB;');
  46. $req = $bdd->prepare('INSERT INTO user(name, password, admin) VALUES(:name, :password, \'1\')');
  47. $req->execute(array(
  48. 'name' => $name,
  49. 'password' => $password
  50. ));
  51. //On créé la config
  52. $configFile = fopen(GLOBAL_PATH.'config.php', 'a');
  53. ftruncate($configFile,0);
  54. fputs($configFile, "<?php\n");
  55. fputs($configFile, " define('ROOT_PATH', '".preg_replace('/\\\\/', '/', $rootPath)."');\n");
  56. fputs($configFile, " define('ROOT_PATH_HTML', '".preg_replace('/\\\\/', '/', $htmlPath)."');\n");
  57. fputs($configFile, "\n");
  58. fputs($configFile, " //Identifiants pour la BDD\n");
  59. fputs($configFile, " define('SQL_DSN', 'mysql:dbname=".$_POST['baseSQL'].";host=".$_POST['serverSQL']."');\n");
  60. fputs($configFile, " define('SQL_USERNAME', '".$_POST['userSQL']."');\n");
  61. fputs($configFile, " define('SQL_PASSWORD', '".$_POST['passwordSQL']."');\n");
  62. fputs($configFile, "\n");
  63. fputs($configFile, " //Chemin d'accès\n");
  64. fputs($configFile, " define('MODELE_PATH', 'modeles/');\n");
  65. fputs($configFile, " define('CONTROLLER_PATH', 'controlleurs/');\n");
  66. fputs($configFile, " define('VIEW_PATH', 'vues/');\n");
  67. fputs($configFile, " define('GLOBAL_PATH', 'global/');\n");
  68. fputs($configFile, " define('IMAGE_PATH', 'img/');\n");
  69. fputs($configFile, " define('CSS_PATH', 'css/');\n");
  70. fputs($configFile, " define('JS_PATH', 'js/');\n");
  71. fputs($configFile, "\n");
  72. fputs($configFile, " //Extension autorisée\n");
  73. fputs($configFile, " define('MUSIC_EXTENSION', 'mp3');\n");
  74. fputs($configFile, " define('VIDEO_EXTENSION', 'avi');\n");
  75. fputs($configFile, "?>");
  76. fclose($configFile);
  77. die('<div class="alert alert-success">L\'installation s\'est bien déroulée. Vous pouvez supprimer le fichier install.php</div>');
  78. }
  79. else{
  80. echo '<div class="alert alert-error">Erreur : Votre mot de passe doit contenir uniquement des lettres, chiffres et \'_\', \'-\', avec au moins 6 caractères.</div>';
  81. }
  82. }
  83. else{
  84. echo '<div class="alert alert-error">Erreur : Votre nom d\'utilisateur doit contenir uniquement des lettres, chiffres et \'_\', \'-\', avec 3 à 16 caractères.</div>';
  85. }
  86. }
  87. catch (Exception $e){
  88. echo '<div class="alert alert-error">Erreur : ' . $e->getMessage().'</div>';
  89. }
  90. }
  91. //On définit les variable pour les insérer dans le formulaire
  92. $name = (isset($_POST['name'])) ? $_POST['name'] : '';
  93. $password = (isset($_POST['password'])) ? $_POST['password'] : '';
  94. $serverSQL = (isset($_POST['serverSQL'])) ? $_POST['serverSQL'] : '';
  95. $userSQL = (isset($_POST['userSQL'])) ? $_POST['userSQL'] : '';
  96. $passwordSQL = (isset($_POST['passwordSQL'])) ? $_POST['passwordSQL'] : '';
  97. $baseSQL = (isset($_POST['baseSQL'])) ? $_POST['baseSQL'] : '';
  98. ?>
  99. <form class="form-horizontal" action="install.php" method="post">
  100. <div class="control-group">
  101. <label class="control-label" for="inputName">Nom admin</label>
  102. <div class="controls">
  103. <input type="text" name="name" id="inputName" placeholder="Nom admin" value="<?php echo $name;?>">
  104. </div>
  105. </div>
  106. <div class="control-group">
  107. <label class="control-label" for="inputPassword">Mot de passe admin</label>
  108. <div class="controls">
  109. <input type="password" name="password" id="inputPassword" placeholder="Mot de passe admin" value="<?php echo $password;?>">
  110. </div>
  111. </div>
  112. <div class="control-group">
  113. <label class="control-label" for="inputServerSQL">Serveur MySQL</label>
  114. <div class="controls">
  115. <input type="text" name="serverSQL" id="inputServerSQL" placeholder="Serveur MySQL" value="<?php echo $serverSQL;?>">
  116. </div>
  117. </div>
  118. <div class="control-group">
  119. <label class="control-label" for="inputUserSQL">Utilisateur MySQL</label>
  120. <div class="controls">
  121. <input type="text" name="userSQL" id="inputUserSQL" placeholder="Utilisateur MySQL" value="<?php echo $userSQL;?>">
  122. </div>
  123. </div>
  124. <div class="control-group">
  125. <label class="control-label" for="inputPasswordSQL">Mot de passe MySQL</label>
  126. <div class="controls">
  127. <input type="password" name="passwordSQL" id="inputPasswordSQL" placeholder="Mot de passe MySQL" value="<?php echo $passwordSQL;?>">
  128. </div>
  129. </div>
  130. <div class="control-group">
  131. <label class="control-label" for="inputBaseSQL">Base MySQL</label>
  132. <div class="controls">
  133. <input type="text" name="baseSQL" id="inputBaseSQL" placeholder="Base MySQL" value="<?php echo $baseSQL;?>">
  134. </div>
  135. </div>
  136. <div class="control-group">
  137. <div class="controls">
  138. <button type="submit" class="btn btn btn-primary">Valider</button>
  139. </div>
  140. </div>
  141. </form>
  142. </div>
  143. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
  144. <script src="<?php echo JS_PATH; ?>bootstrap.min.js"></script>
  145. <script src="<?php echo JS_PATH; ?>jquery-ui.js"></script>
  146. </body>
  147. </html>