Вход Регистрация
Файл: Space race/install/index.php
Строк: 429
<?php

/**
 * Installs the PHP Login & User Management database
 *
 
 */

include_once("header.php");

$install = new Install();

class 
Install {

    private 
$error;
    private 
$link;
    private 
$options = array();
    public static 
$dbh;

    function 
__construct() {

        
$this->checkInstall($hideError true);

        if( !empty(
$_POST) ) :

            foreach (
$_POST as $key => $value)
                
$this->options[$key] = $value;

            
$this->validate();

        endif;

        if(!empty(
$this->error))
            echo 
$this->error;

    }

    
// Run any ol' query passed into this function
    
public function query($query$params = array()) {

        
$stmt self::$dbh->prepare($query);
        
$stmt->execute($params);

        return 
$stmt;

    }

    
// Check for all form fields to be filled out
    
private function validate() {

        if(
strlen($this->options['adminPass']) < 5)
            
$this->error '<div class="alert alert-danger">'._('Password must be at least 5 characters.').'</div>';
        else
            
$this->options['adminPass'] = md5($this->options['adminPass']);

        if( empty(
$this->options['dbHost']) || empty($this->options['dbUser']) || empty($this->options['dbName']) || empty($this->options['scriptPath']) || empty($this->options['email']) || empty($this->options['adminUser']) || empty($this->options['adminPass'] ))
            
$this->error '<div class="alert alert-danger">'._('Fill out all the details please').'</div>';

        if(
substr($this->options['scriptPath'], -1) != '/')
            
$this->options['scriptPath'] = $this->options['scriptPath'] . '/';

        
// Check the database connection
        
$this->dbLink();

    }

    
// See if I can connect to the mysql server
    
private function dbLink() {

        if(!empty(
$this->error)) return false;

        try {
            
self::$dbh = new PDO("mysql:host=" $this->options['dbHost'] . ";dbname=" $this->options['dbName'], $this->options['dbUser'], $this->options['dbPass']);
            
self::$dbh->setAttributePDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION );
        } catch (
PDOException $e) {
            
$this->error '<div class="alert alert-danger">'._('Database error: '). $e->getMessage() . '</div>';
        }

        
$this->existingTables();

    }

    
// Check for an existing install
    
private function existingTables() {

        if(empty(
$this->error)) :

            
$this->insertSQL();
            
$this->writeFile();
            
$this->checkInstall();

        endif;

    }

    
// Begin inserting our SQL goodies
    
private function insertSQL() {

        if(empty(
$this->error)) {

            
$this->query("SET NAMES utf8;");

            
$this->query("
                CREATE TABLE IF NOT EXISTS `login_confirm` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` varchar(255) NOT NULL,
  `username` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `key` varchar(255) NOT NULL,
  `type` varchar(25) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
            "
);

            
$this->query("
                CREATE TABLE IF NOT EXISTS `login_integration` (
  `user_id` int(255) NOT NULL,
  `facebook` varchar(255) NOT NULL,
  `twitter` varchar(255) NOT NULL,
  `google` varchar(255) NOT NULL,
  `yahoo` varchar(255) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
            "
);

            
$this->query("
            CREATE TABLE IF NOT EXISTS `login_levels` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `level_name` varchar(255) NOT NULL,
  `level_level` int(1) NOT NULL,
  `level_disabled` tinyint(1) NOT NULL DEFAULT '0',
  `redirect` varchar(255) DEFAULT NULL,
  `welcome_email` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `level_level` (`level_level`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
            "
);

            
$this->query("
            INSERT INTO `login_levels` (`id`, `level_name`, `level_level`, `level_disabled`, `redirect`, `welcome_email`) VALUES
(1, 'Администраторы', 1, 0, '', 0),
(3, 'Пользователи', 3, 0, '', 0);
            "
);

            
$this->query("
                CREATE TABLE IF NOT EXISTS `login_profiles` (
  `p_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `pfield_id` int(255) unsigned NOT NULL,
  `user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `profile_value` longtext,
  PRIMARY KEY (`p_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
            "
);

            
$this->query("
            CREATE TABLE IF NOT EXISTS `login_settings` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `option_name` varchar(255) NOT NULL,
  `option_value` longtext NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`),
  UNIQUE KEY `option_name` (`option_name`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
            "
);

            
$params = array(
                
':site_address'      => $this->options['scriptPath'],
                
':admin_email'       => $this->options['email'],
                
':guest_redirect'    => $this->options['scriptPath'] . 'login.php?e=1',
                
':new_user_redirect' => $this->options['scriptPath'] . 'profile.php'
            
);
            
$this->query("
                INSERT IGNORE INTO `login_settings` (`id`, `option_name`, `option_value`) VALUES
                (1, 'site_address', :site_address),
                (2, 'default_session', '0'),
                (3, 'admin_email', :admin_email),
                (4, 'block-msg-enable', '1'),
(5, 'block-msg', '&lt;h1&gt;УПС.&lt;/h1&gt;rnrn&lt;p&gt;Мы обнаружили, что, у Вас не хватает уровня доступа к этой странице.&lt;/p&gt;rnrn&lt;p&gt;Если Вы считаете, что это ошибка - свяжитесь с администрацией.&lt;/p&gt;'),
(6, 'block-msg-out', 'Для доступа необходимо зарегистрироваться или войти на сайт под своим логином или паролем'),
(7, 'block-msg-out-enable', '1'),
(8, 'email-welcome-msg', 'Привет, {{full_name}} !rnrnБлагодарим за регистрацию на сайте {{site_address}}. rnrnВот Ваши учетные данные:rnrnИмя: {{full_name}}rnЛогин: {{username}}rnEmail: {{email}}rnПароль: *hidden*rnrnДля активации Вашей учетной записи пройдите по ссылке:rnrn{{activate}}'),
(9, 'email-activate-msg', 'Привет, {{full_name}} !rnrnВаша учетная запись на сайте {{site_address}} была активирована :). rnrnЕсли Вы вдруг забыли, то Ваш логин &lt;strong&gt;{{username}}&lt;/strong&gt;. rnrnУдачи в гонка!'),
(10, 'email-activate-subj', 'Учетная запись активирована'),
(11, 'email-activate-resend-subj', 'Ссылка активации'),
(12, 'email-activate-resend-msg', 'Привет, {{full_name}}. rnrnСсылка для активации учетной записи:rn{{activate}}rnrnПерейдите по этой ссылке, что бы включить Вашу учетную запись :)'),
(13, 'email-welcome-subj', 'Добро пожаловать в Star Race 3D'),
(14, 'email-forgot-success-subj', 'Ваш пароль был изменен'),
(15, 'email-forgot-success-msg', 'Привет, {{full_name}} !rnrnВаш пароль на сайте {{site_address}} был успешно сменен. rnrnПостарайтесь его больше не забывать, но если вдруг забудете снова - мы напомним !rnrnУдачи в гонках!'),
(16, 'email-forgot-subj', 'Восстановление пароля'),
(17, 'email-forgot-msg', 'Привет, {{full_name}},rnrnКто то запросил восстановление пароля в Star Race 3D для логина &lt;strong&gt;{{username}}&lt;/strong&gt;.rnrnЕсли это Вы - просто перейдите по ссылке:rn{{reset}}rnrnЕсли Вы не запрашивали восстановление пароля, просто проигнорируйте это сообщение!'),
(18, 'email-add-user-subj', 'Вы зарегистрированы в Star Race 3D'),
(19, 'email-add-user-msg', 'Привет, {{full_name}} !rnrnВы зарегистрированы на сайте {{site_address}}. rnrnВот Ваши учетные данные:rnrnИмя: {{full_name}}rnЛогин: {{username}}rnEmail: {{email}}rnПароль: {{password}}'),
(20, 'pw-encrypt-force-enable', '0'),
(21, 'pw-encryption', 'MD5'),
(22, 'phplogin_db_version', '1212300'),
(23, 'email-acct-update-subj', 'Смена учетных данных'),
(24, 'email-acct-update-msg', 'Привет, {{full_name}} !rnrnВы ( {{username}} ) изменили учетные данные в игре Star Race 3D. Перейдите по ссылке, что бы подтвердить смену данных.rnrn{{confirm}}rnrnУдачи в гонках!rn{{site_address}}'),
(25, 'email-acct-update-success-subj', 'Ваш аккаунт был обновлен'),
(26, 'email-acct-update-success-msg', 'Привет, {{full_name}},rnrnВаши данные на сайте {{site_address}} были обновлены.rnrnЛогин: {{username}}rnrnУдачи в гонках!'),
(27, 'guest-redirect', :guest_redirect),
(28, 'signout-redirect-referrer-enable', 1),
(29, 'signin-redirect-referrer-enable', 1),
(30, 'default-level', 'a:1:{i:0;s:1:"
3";}'),
(31, 'new-user-redirect', :new_user_redirect),
(32, 'user-activation-enable', '1'),
(33, 'email-new-user-subj', 'Новый пользователь зарегистрирован !'),
(34, 'email-new-user-msg', 'Привет,rnrnНовый пользователь зарегистрировался на сайте &lt;a href=&quot;{{site_address}}&quot;&gt;Star Race 3D&lt;/a&gt;.rnrnВот детали его учетной записи:rnrnИмя: {{full_name}}rnЛогин: {{username}}rnEmail: {{email}}');
            "
$params);

            
$this->query("
                CREATE TABLE IF NOT EXISTS `login_users` (
  `user_id` int(8) NOT NULL AUTO_INCREMENT,
  `user_level` longtext NOT NULL,
  `restricted` int(1) NOT NULL DEFAULT '0',
  `username` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `password` varchar(128) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `score` varchar(10) NOT NULL DEFAULT '0',
  `bonus` float NOT NULL DEFAULT '1',
  `speed` int(11) NOT NULL DEFAULT '7',
  `maxspeed` float NOT NULL DEFAULT '7',
  `bspeed` float NOT NULL DEFAULT '0.35' COMMENT 'Ускорение',
  `maxbspeed` float NOT NULL DEFAULT '0.35' COMMENT 'Максимальное ускорение',
  `airbrake` float NOT NULL DEFAULT '0.025' COMMENT 'Тормоза',
  `maxairbrake` float NOT NULL DEFAULT '0.025' COMMENT 'Макс. тормоза',
  `shielddamage` float NOT NULL DEFAULT '0.06' COMMENT 'Разрушение',
  `maxshielddamage` float NOT NULL DEFAULT '0.06' COMMENT 'Минимальное повреждение',
  `angularspeed` float NOT NULL DEFAULT '0.02' COMMENT 'Угловая скорость',
  `maxangularspeed` float NOT NULL DEFAULT '0.02' COMMENT 'Максимальное угловое ускорение',
  `thrust` float NOT NULL DEFAULT '0.02' COMMENT 'Ускорение с места',
  `maxthrust` float NOT NULL DEFAULT '0.02' COMMENT '    Максимальное ускорение с места',
  `godmode` int(1) NOT NULL DEFAULT '0' COMMENT 'Неузявимость',
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `user_id` (`user_id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
            "
);

            
$this->query("
                CREATE TABLE IF NOT EXISTS `login_profile_fields` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `section` varchar(255) NOT NULL,
  `type` varchar(25) NOT NULL,
  `label` varchar(255) NOT NULL,
  `public` tinyint(4) NOT NULL,
  `signup` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

            "
);

            
$this->query("
                CREATE TABLE IF NOT EXISTS `login_timestamps` (
                  `id` int(11) NOT NULL AUTO_INCREMENT,
                  `user_id` int(11) NOT NULL,
                  `ip` varchar(255) NOT NULL,
                  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
                  PRIMARY KEY (`id`)
                ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
            "
);

            
$params = array(
                
':admin_user'  => $this->options['adminUser'],
                
':admin_email' => $this->options['email'],
                
':admin_pass'  => $this->options['adminPass']
            );
            
$this->query("
                INSERT IGNORE INTO `login_users` (`user_id`, `user_level`, `restricted`, `username`, `name`, `email`, `password`) VALUES
                (1, 'a:3:{i:0;s:1:"
3";i:1;s:1:"1";i:2;s:1:"2";}', 0, :admin_user, 'Demo Admin', :admin_email, :admin_pass);
            "
$params);

        } else 
$this->error 'Your tables already exist! I won't insert anything.';
    }

    private function writeFile() {

        if($this->error == '') {

            /** Write config.php if it doesn'
t exist */
            
$fp = @fopen("../classes/config.php""w");

            if( !
$fp ) :
                echo 
'<div class="alert alert-warning">'._('Не получается создать файл конфигурации <code>/classes/config.php</code>. Проверьте права доступа.').'</div>';
                return 
false;
            endif;


fwrite($fp'<?php

////////////////////
// Important ! These must be filled in correctly.
// Database details are required to use this script.

$host = "'
.$this->options['dbHost'].'"; // If you don't know what your host isit's safe to leave it localhost
$dbName = "'
.$this->options['dbName'].'"; // Database name
$dbUser = "'
.$this->options['dbUser'].'"; // Username
$dbPass = "'
.$this->options['dbPass'].'"; // Password
$db = mysql_connect($host, $dbUser, $dbPass);
mysql_select_db($dbName, $db); 

?>'
);
            
fclose($fp);
        }

    }

    private function 
checkInstall($hideError false) {

            if (
file_exists('../classes/config.php')) : ?>
                <div class="row">
                    <div class="col-md-12">
                        <div class="alert alert-success">Вуаля ! Установка завершена! </div>
                        <p><span class='label label-danger'>ВАЖНО!</span> УДАЛИТЕ ПАПКУ install С СЕРВЕРА</p>
                    </div>
                    
                </div> <?php
                
include('footer.php');
                exit();
            else :
                if (!
$hideError$this->error '<div class="alert alert-danger">'._('ОШИБКА УСТАНОВКИ.').'</div>';
            endif;
    }

}
?>
<div class="row">
    <div class="col-md-9">
        <form class="" method="post" action="index.php">

            <fieldset>
                <legend>Доступ к БД</legend>
                <div class="form-group">
                    <label class="control-label" for="dbHost">Хост</label>
                    <div class="controls">
                        <input type="text" class="form-control input-xlarge" id="dbHost" name="dbHost" value="<?php if(isset($_POST['dbHost'])) echo $_POST['dbHost']; else echo 'localhost'?>" >
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label" for="dbName">Имя базы</label>
                    <div class="controls">
                        <input type="text" class="form-control input-xlarge" id="dbName" name="dbName" value="<?php if(isset($_POST['dbName'])) echo $_POST['dbName']; else _e('database_name'); ?>">
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label" for="dbUser">Логин</label>
                    <div class="controls">
                        <input type="text" class="form-control input-xlarge" id="dbUser" name="dbUser" value="<?php if(isset($_POST['dbUser'])) echo $_POST['dbUser']; else _e('db username'); ?>">
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label" for="dbPass">Пароль</label>
                    <div class="controls">
                        <input type="password" class="form-control input-xlarge" id="dbPass" name="dbPass" value="<?php if(isset($_POST['dbPass'])) echo $_POST['dbPass']; else _e('db password'); ?>">
                    </div>
                </div>
            </fieldset>

            <fieldset>
                <legend>Настройки сайта</legend>
                <div class="form-group">
                    <label class="control-label" for="scriptPath">Адрес сайта</label>
                    <div class="controls">
                        <input type="url" class="form-control input-xlarge" id="scriptPath" name="scriptPath" value="<?php if(isset($_POST['scriptPath'])) echo $_POST['scriptPath']; else echo "http://".$_SERVER['HTTP_HOST'].str_replace("install/index.php","",str_replace("functions","",str_replace("\","/",$_SERVER['SCRIPT_NAME']))); ?>">
                        <
class="help-block"></p>
                    </
div>
                </
div>
                <
div class="form-group">
                    <
label class="control-label" for="email">Email администратора</label>
                    <
div class="controls">
                        <
input type="email" class="form-control input-xlarge" id="email" name="email" value="<?php if(isset($_POST['email'])) echo $_POST['email']; else echo 'no-reply@'.$_SERVER['HTTP_HOST']; ?>">
                        <
class="help-block"></p>
                    </
div>
                </
div>
            </
fieldset>

            <
fieldset>
                <
legend>Аккаунт администратора</legend>
                <
div class="form-group">
                    <
label class="control-label" for="adminUser">Логин</label>
                    <
div class="controls">
                        <
input type="text" class="form-control input-xlarge" id="adminUser" name="adminUser" value="<?php if(isset($_POST['adminUser'])) echo $_POST['adminUser']; else _e('admin'); ?>">
                    </
div>
                </
div>
                <
div class="form-group">
                    <
label class="control-label" for="adminPass">Пароль</label>
                    <
div class="controls">
                        <
input type="password" class="form-control input-xlarge" id="adminPass" name="adminPass" value="<?php if(isset($_POST['adminPass'])) echo $_POST['adminPass']; else _e('admin'); ?>">
                    </
div>
                </
div>
            </
fieldset>

            <
div class="form-actions">
                <
button type="submit" class="btn btn-primary">Начать установку</button>
            </
div>

        </
form>

    </
div>
</
div>

<?
php include_once("footer.php"); ?>
Онлайн: 2
Реклама