Example #1
0
    Database::createInstance($_POST['dbhost'], $_POST['dbport'], '', $_POST['dbuser'], $_POST['dbpass']);
    Database::exec("SET NAMES 'utf8'");
    $row = Database::prepare("SHOW VARIABLES LIKE 'VERSION'")->fetchOneRow();
    if (version_compare($row->value, WT_REQUIRED_MYSQL_VERSION, '<')) {
        echo '<p class="bad">', I18N::translate('This database is only running MySQL version %s.  You cannot install webtrees here.', $row->value), '</p>';
    } else {
        $db_version_ok = true;
    }
} catch (PDOException $ex) {
    Database::disconnect();
    if ($_POST['dbuser']) {
        // If we’ve supplied a login, then show the error
        echo '<p class="bad">', I18N::translate('Unable to connect using these settings.  Your server gave the following error.'), '</p>', '<pre>', $ex->getMessage(), '</pre>', '<p class="bad">', I18N::translate('Check the settings and try again.'), '</p>';
    }
}
if (empty($_POST['dbuser']) || !Database::isConnected() || !$db_version_ok) {
    echo '<h2>', I18N::translate('Connection to database server'), '</h2>', '<p>', I18N::translate('webtrees needs a MySQL database, version %s or later.', WT_REQUIRED_MYSQL_VERSION), '</p>', '<p>', I18N::translate('Your server’s administrator will provide you with the connection details.'), '</p>', '<fieldset><legend>', I18N::translate('Database connection'), '</legend>', '<table border="0"><tr><td>', I18N::translate('Server name'), '</td><td>', '<input type="text" name="dbhost" value="', Filter::escapeHtml($_POST['dbhost']), '" dir="ltr"></td><td>', I18N::translate('Most sites are configured to use localhost.  This means that your database runs on the same computer as your web server.'), '</td></tr><tr><td>', I18N::translate('Port number'), '</td><td>', '<input type="text" name="dbport" value="', Filter::escapeHtml($_POST['dbport']), '"></td><td>', I18N::translate('Most sites are configured to use the default value of 3306.'), '</td></tr><tr><td>', I18N::translate('Database user account'), '</td><td>', '<input type="text" name="dbuser" value="', Filter::escapeHtml($_POST['dbuser']), '" autofocus></td><td>', I18N::translate('This is case sensitive.'), '</td></tr><tr><td>', I18N::translate('Database password'), '</td><td>', '<input type="password" name="dbpass" value="', Filter::escapeHtml($_POST['dbpass']), '"></td><td>', I18N::translate('This is case sensitive.'), '</td></tr><tr><td>', '</td></tr></table>', '</fieldset>', '<br><hr><input type="submit" id="btncontinue" value="', I18N::translate('continue'), '">', '</form>', '</body></html>';
    return;
} else {
    // Copy these values through to the next step
    echo '<input type="hidden" name="dbhost" value="', Filter::escapeHtml($_POST['dbhost']), '">';
    echo '<input type="hidden" name="dbport" value="', Filter::escapeHtml($_POST['dbport']), '">';
    echo '<input type="hidden" name="dbuser" value="', Filter::escapeHtml($_POST['dbuser']), '">';
    echo '<input type="hidden" name="dbpass" value="', Filter::escapeHtml($_POST['dbpass']), '">';
}
////////////////////////////////////////////////////////////////////////////////
// Step four - Database connection.
////////////////////////////////////////////////////////////////////////////////
// The character ` is not valid in database or table names (even if escaped).
// By removing it, we can ensure that our SQL statements are quoted correctly.
//