(definitely) fixed utf8mb4 and check if user already exists in database before installing first user

This commit is contained in:
Thomas Citharel 2015-02-14 15:12:02 +01:00
parent 7780b8cb37
commit 054c9d8838
3 changed files with 19 additions and 4 deletions

View file

@ -31,10 +31,15 @@ class Database {
$this->handle = new PDO($db_path);
break;
case 'mysql':
$db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB . ';charset=utf8mb4';
$this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD, array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
));
if (MYSQL_USE_UTF8MB4) {
$db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB . ';charset=utf8mb4';
$this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD, array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
));
} else {
$db_path = 'mysql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB;
$this->handle = new PDO($db_path, STORAGE_USER, STORAGE_PASSWORD);
}
break;
case 'postgres':
$db_path = 'pgsql:host=' . STORAGE_SERVER . ';dbname=' . STORAGE_DB;

View file

@ -20,6 +20,7 @@
@define ('STORAGE_DB', 'poche');
@define ('STORAGE_USER', 'poche');
@define ('STORAGE_PASSWORD', 'poche');
@define ('MYSQL_USE_UTF8MB4', FALSE); // This should be false unless you know what it is
#################################################################################
# Do not trespass unless you know what you are doing

View file

@ -83,6 +83,7 @@ else if (isset($_POST['install'])) {
$handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password'], array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4',
));
$content = str_replace("define ('MYSQL_USE_UTF8MB4', FALSE);", "define ('MYSQL_USE_UTF8MB4', TRUE);", $content);
} else { // regular UTF8
$db_path = 'mysql:host=' . $_POST['mysql_server'] . ';dbname=' . $_POST['mysql_database'];
$handle = new PDO($db_path, $_POST['mysql_user'], $_POST['mysql_password']);
@ -126,6 +127,14 @@ else if (isset($_POST['install'])) {
}
}
}
$usertest = executeQuery($handle,"SELECT * from users WHERE username = ?", array($username));
if (!empty($usertest)) {
$continue = false;
$errors[] = "An user already exists with this username in database.";
}
if ($continue) {
$sql = "INSERT INTO users (username, password, name, email) VALUES (?, ?, ?, '')";
$params = array($username, $salted_password, $username);