Install.php working, Storage and User class on their way
This commit is contained in:
parent
bb664e34a4
commit
c72585c95b
1
TODO
1
TODO
@ -1 +1,2 @@
|
||||
* i18n
|
||||
* Vérification des variables dans les classes + throw exception
|
||||
|
@ -5,18 +5,11 @@ class Storage {
|
||||
private $host, $login, $password, $db;
|
||||
private $connection = null;
|
||||
|
||||
private function __construct($connection_params = null) {
|
||||
if(is_array($connection_params) && !empty($connection_params)) {
|
||||
$this->setHost($connection_params['host']);
|
||||
$this->setLogin($connection_params['login']);
|
||||
$this->setPassword($connection_params['password']);
|
||||
$this->setDb($connection_params['db']);
|
||||
|
||||
$this->connect();
|
||||
}
|
||||
public function __construct() {
|
||||
$this->connect();
|
||||
}
|
||||
|
||||
private function __destruct() {
|
||||
public function __destruct() {
|
||||
$this->disconnect();
|
||||
}
|
||||
|
||||
@ -60,36 +53,77 @@ class Storage {
|
||||
}
|
||||
|
||||
public function setDb($db) {
|
||||
this->db = $db;
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
public function typeToSQL($type) {
|
||||
$return = false;
|
||||
switch($type) {
|
||||
case 'key':
|
||||
$return = 'INT(11) NOT NULL AUTO_INCREMENT PRIMARY_KEY';
|
||||
$return = 'INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY';
|
||||
break;
|
||||
|
||||
case 'string':
|
||||
$return = 'VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci';
|
||||
$return = 'VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci';
|
||||
break;
|
||||
|
||||
case 'bool':
|
||||
$return = 'TINYINT(1)';
|
||||
$return = 'TINYINT(1)';
|
||||
break;
|
||||
|
||||
case 'password':
|
||||
$return = 'VARCHAR(130)';
|
||||
break;
|
||||
|
||||
default:
|
||||
$return = 'TEXT CHARACTER SET utf8 COLLATE utf8_general_ci';
|
||||
$return = 'TEXT CHARACTER SET utf8 COLLATE utf8_general_ci';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function createTable($table_name = null) {
|
||||
public function save() {
|
||||
if(!empty($this->id)) {
|
||||
$query = 'UPDATE `'.MYSQL_PREFIX.$this->TABLE_NAME.'` SET ';
|
||||
|
||||
$i = false;
|
||||
foreach($this->fields as $field=>$type) {
|
||||
if($i) { $query .= ','; } else { $i = true; }
|
||||
|
||||
$id = $this->$field;
|
||||
$query .= '`'.$field.'` = "'.$this($id).'"';
|
||||
}
|
||||
|
||||
$query .= 'WHERE `id`="'.$this->id.'"';
|
||||
}
|
||||
else {
|
||||
$query = 'INSERT INTO '.MYSQL_PREFIX.$this->TABLE_NAME.'(';
|
||||
|
||||
$i = false;
|
||||
foreach($this->fields as $field=>$type) {
|
||||
if($i) { $query .= ','; } else { $i = true; }
|
||||
|
||||
$query .= $field;
|
||||
}
|
||||
|
||||
$query .= ') VALUES(';
|
||||
|
||||
$i = false;
|
||||
foreach($this->fields as $field=>$type) {
|
||||
if($i) { $query .= ','; } else { $i = true; }
|
||||
|
||||
$query .= ':'.$field;
|
||||
}
|
||||
|
||||
$query .= ')';
|
||||
}
|
||||
$query = $this->connection->prepare($query);
|
||||
|
||||
foreach($this->fields as $field=>$type) {
|
||||
$query->bindParam(':'.$field, $this->$field);
|
||||
}
|
||||
|
||||
$query->execute();
|
||||
|
||||
$this->id = (!isset($this->id) ? $this->connection->lastInsertId() : $this->id);
|
||||
}
|
||||
|
||||
public function initTables() {
|
||||
$this->createTable('users');
|
||||
$this->createTable('invoices');
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,18 @@
|
||||
<?php
|
||||
require_once('config.php');
|
||||
require_once('Storage.class.php');
|
||||
|
||||
class User extends Storage {
|
||||
protected $id, $login, $password;
|
||||
protected $TALE_NAME = "users";
|
||||
protected $id, $login, $password, $admin;
|
||||
protected $TABLE_NAME = "Users";
|
||||
protected $fields = array(
|
||||
'id'=>'key',
|
||||
'nom'=>'string',
|
||||
'password'=>'string',
|
||||
'login'=>'string',
|
||||
'password'=>'password',
|
||||
'admin'=>'bool'
|
||||
);
|
||||
|
||||
private function __construct() {
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
@ -22,6 +23,10 @@ class User extends Storage {
|
||||
public function getId() {
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getAdmin() {
|
||||
return $this->admin;
|
||||
}
|
||||
|
||||
public function setLogin($login) {
|
||||
$this->login = $login;
|
||||
@ -31,6 +36,10 @@ class User extends Storage {
|
||||
$this->password = User::encrypt($password);
|
||||
}
|
||||
|
||||
public function setAdmin($admin) {
|
||||
$this->admin = $admin;
|
||||
}
|
||||
|
||||
public function encrypt($text) {
|
||||
return crypt($text, SALT);
|
||||
}
|
||||
|
10
inc/config.php
Normal file
10
inc/config.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
define('VERSION_NUMBER', '2.0');
|
||||
define('MYSQL_HOST', 'localhost');
|
||||
define('MYSQL_LOGIN', 'root');
|
||||
define('MYSQL_PASSWORD', 'lv:05/02/93-mariadb');
|
||||
define('MYSQL_DB', 'Bouffe@Ulm');
|
||||
define('MYSQL_PREFIX', 'bouffeatulm_');
|
||||
define('INSTANCE_TITLE', 'Bouffe@Ulm');
|
||||
define('BASE_URL', 'http://localhost/Bouffe@Ulm/');
|
||||
define('SALT', '$2a$10$AXnaxClN4pYlcXGfafGZCA==');
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
if(!file_exists('config.php')) header('location: install.php');
|
||||
if(!file_exists('inc/config.php')) header('location: install.php');
|
||||
|
||||
session_start();
|
||||
|
||||
require_once('config.php');
|
||||
require_once('inc/config.php');
|
||||
|
0
inc/rain.tpl.class.php
Executable file → Normal file
0
inc/rain.tpl.class.php
Executable file → Normal file
69
install.php
69
install.php
@ -6,45 +6,55 @@
|
||||
$block_form = true;
|
||||
}
|
||||
|
||||
if(!empty($_POST['mysql_host']) && !empty($_POST['mysql_login']) && !empty($_POST['mysql_db']) && !empty($_POST['admin_login']) && !empty($_POST['admin_pass'])) {
|
||||
if(!is_writable('inc/')) {
|
||||
$error = "The script seems to be unable to write to <em>inc/</em> folder (to write the <em>inc/config.php</em> configuration file). You should give write access during install and disable them after (chmod 777 -R inc/ to install and chmod 755 -R inc/ after installation for example).";
|
||||
$block_form = true;
|
||||
}
|
||||
|
||||
if(!empty($_POST['mysql_host']) && !empty($_POST['mysql_login']) && !empty($_POST['mysql_db']) && !empty($_POST['admin_login']) && !empty($_POST['admin_password'])) {
|
||||
$mysql_host = $_POST['mysql_host'];
|
||||
$mysql_login = $_POST['mysql_login'];
|
||||
$mysql_db = $_POST['mysql_login'];
|
||||
$mysql_db = $_POST['mysql_db'];
|
||||
$mysql_password = $_POST['mysql_password'];
|
||||
$mysql_prefix = $_POST['mysql_prefix'];
|
||||
$mysql_prefix = (!empty($_POST['mysql_prefix'])) ? $_POST['mysql_prefix'] : '';
|
||||
$instance_title = (!empty($_POST['instance_title'])) ? $_POST['instance_title'] : 'Bouffe@Ulm';
|
||||
|
||||
try {
|
||||
$db = new Storage(array('host'=>$mysql_host, 'login'=>$mysql_login, 'password'=>$mysql_password, 'db'=>$mysql_db));
|
||||
//TODO : Create tables
|
||||
} catch (PDOException $e) {
|
||||
$error = 'Unable to connect to database, check your credentials.';
|
||||
}
|
||||
$db = new PDO('mysql:host='.$mysql_host.';dbname='.$mysql_db, $mysql_login, $mysql_password);
|
||||
|
||||
//Create table "Users"
|
||||
$dump = $db->query('CREATE TABLE IF NOT EXISTS '.$mysql_prefix.'Users (id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, login VARCHAR(255), password VARCHAR(130), admin TINYINT(1)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci');
|
||||
|
||||
//Create table "Invoices" - TODO
|
||||
//Create table "Payback" - TODO
|
||||
} catch (PDOException $e) {
|
||||
$error = 'Unable to connect to database, check your credentials and config.<br/>Error message : '.$e->getMessage().'.';
|
||||
}
|
||||
|
||||
if(empty($error)) {
|
||||
if(function_exists('mcrypt_create_iv')) {
|
||||
$salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
|
||||
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
|
||||
}
|
||||
else {
|
||||
mt_srand(microtime(true)*100000 + memory_get_usage(true));
|
||||
$salt = md5(uniqid(mt_rand(), true));
|
||||
}
|
||||
$salt = sprintf("$2a$%02d$", 10) . $salt; //prefix for blowfish
|
||||
|
||||
define('SALT', $salt);
|
||||
|
||||
$config = "
|
||||
define('VERSION_NUMBER', '2.0');
|
||||
define('MYSQL_HOST', '".$mysql_host."');
|
||||
define('MYSQL_LOGIN', '".$mysql_login."');
|
||||
define('MYSQL_PASSWORD', '".$mysql_password."');
|
||||
define('MYSQL_DB', '".$mysql_db."');
|
||||
define('MYSQL_PREFIX', '".$mysql_prefix."');
|
||||
define('INSTANCE_TITLE', '".$instance_title."');
|
||||
define('BASE_URL', '".$_POST['base_url']."');
|
||||
define('SALT', '".$salt."');";
|
||||
$config = "<?php
|
||||
define('VERSION_NUMBER', '2.0');
|
||||
define('MYSQL_HOST', '".$mysql_host."');
|
||||
define('MYSQL_LOGIN', '".$mysql_login."');
|
||||
define('MYSQL_PASSWORD', '".$mysql_password."');
|
||||
define('MYSQL_DB', '".$mysql_db."');
|
||||
define('MYSQL_PREFIX', '".$mysql_prefix."');
|
||||
define('INSTANCE_TITLE', '".$instance_title."');
|
||||
define('BASE_URL', '".$_POST['base_url']."');
|
||||
define('SALT', '".$salt."');";
|
||||
|
||||
if(file_put_contents("inc/config.php", $config)) {
|
||||
try {
|
||||
require_once('inc/User.class.php');
|
||||
$admin = new User();
|
||||
$admin->setLogin($_POST['admin_login']);
|
||||
$admin->setPassword($_POST['admin_password']);
|
||||
@ -53,7 +63,7 @@
|
||||
header('location: index.php');
|
||||
exit();
|
||||
} catch (Exception $e) {
|
||||
//TODO
|
||||
$erreur = 'An error occurred when inserting user in the database.<br/> Error message : '.$e->getMessage().'.';
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -77,7 +87,7 @@
|
||||
}
|
||||
?>
|
||||
|
||||
<p class="center">This small form will guide you through the installation of Bouffe@Ulm.</p>
|
||||
<p class="center">This small form will guide you through the installation of Bouffe@Ulm. You must fill in all the fields.</p>
|
||||
|
||||
<form action="install.php" method="post">
|
||||
<fieldset>
|
||||
@ -90,20 +100,21 @@
|
||||
<label for="mysql_db">Name of the MySQL database to use : </label><input type="text" name="mysql_db" id="mysql_db" value="<?php echo (!empty($_POST['mysql_db'])) ? htmlspecialchars($_POST['mysql_db']) : 'Bouffe@Ulm';?>"/><br/>
|
||||
<em>Note :</em> You <em>must</em> create this database first.
|
||||
</p>
|
||||
<p><label for="mysql_prefix">Prefix for the created tables : </label><input type="text" name="mysql_prefix" id="mysql_prefix" value="<?php echo (!empty($_POST['mysql_prefix'])) ? htmlspecialchars($_POST['mysql_prefix']) : 'bouffeatulm_';?>"/></p>
|
||||
<p><label for="mysql_prefix">Prefix for the created tables : </label><input type="text" name="mysql_prefix" id="mysql_prefix" value="<?php echo (!empty($_POST['mysql_prefix'])) ? htmlspecialchars($_POST['mysql_prefix']) : 'bouffeatulm_';?>"/><br/>
|
||||
<em>Note :</em> Leave the field blank to not use any.</p>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>General options</legend>
|
||||
<p><label for="instance_title">Title to display in pages : </label><input type="text" name="instance_title" id="instance_title" value="Bouffe@Ulm"/></p>
|
||||
<p><label for="instance_title">Title to display in pages : </label><input type="text" name="instance_title" id="instance_title" value="<?php echo (!empty($_POST['instance_title'])) ? htmlspecialchars($_POST['instance_title']) : 'Bouffe@Ulm';?>"/></p>
|
||||
<p>
|
||||
<label for="base_url">Base URL : </label><input type="text" size="30" name="base_url" id="base_url" value="<?php echo 'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['SERVER_NAME'].str_replace("install.php", "", $_SERVER['REQUEST_URI']); ?>"/><br/>
|
||||
<em>Note :</em> This is the base URL from which you access this website. You must keep the trailing "/" in the above address.
|
||||
<label for="base_url">Base URL : </label><input type="text" size="30" name="base_url" id="base_url" value="<?php echo (!empty($_POST['base_url'])) ? htmlspecialchars($_POST['base_url']) : 'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['SERVER_NAME'].str_replace("install.php", "", $_SERVER['REQUEST_URI']); ?>"/><br/>
|
||||
<em>Note :</em> This is the base URL from which you access this page. You must keep the trailing "/" in the above address.
|
||||
</p>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Administrator</legend>
|
||||
<p><label for="admin_login">Username of the admin : </label><input type="text" name="admin_login" id="admin_login"/></p>
|
||||
<p><label for="admin_mdp">Password for the admin : </label><input type="password" name="admin_pass" id="admin_pass"/></p>
|
||||
<p><label for="admin_login">Username of the admin : </label><input type="text" name="admin_login" id="admin_login" <?php echo (!empty($_POST['admin_login'])) ? 'value="'.htmlspecialchars($_POST['admin_login']).'"' : '';?>/></p>
|
||||
<p><label for="admin_password">Password for the admin : </label><input type="password" name="admin_password" id="admin_password"/></p>
|
||||
</fieldset>
|
||||
<p class="center"><input <?php echo (!empty($block_form)) ? 'disabled ' : '';?>type="submit"></p>
|
||||
</form>
|
||||
|
@ -11,12 +11,6 @@ fieldset {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.error {
|
||||
font-size: 1.5em;
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
input[type=submit] {
|
||||
background-color: green;
|
||||
color: white;
|
||||
@ -39,3 +33,10 @@ input[type=submit] {
|
||||
padding: 0.5em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#install .error {
|
||||
font-size: 1.5em;
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user