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

error_reporting
(0);    
define('SITE''http://'.$_SERVER['SERVER_NAME'].URL::getCutSection());
$prefix = empty($_REQUEST['prefix']) ? 'mg_' $_REQUEST['prefix'];
$_SESSION = array();

 

if (
$_REQUEST['siteName']) {
  
$siteName clearData($_REQUEST['siteName']);
} else {
  
$siteName $_SERVER['SERVER_NAME'];
}

$aLogin 'Администратор';
$aPass clearData($_REQUEST['pass']);
$adminEmail clearData($_REQUEST['email']);


if (
$_REQUEST['step1']) {
  
$step 1;
}

if (
$_REQUEST['step2']) {
  
$step 0;
  if (
'ok'==$_REQUEST['agree']) {
    
$step 2;
  }
  
  if(
$checkLibs libExists()){
    
$libError true;
    
$msg .= '<div class="wrapper-error">';
    
$msg .= '<div class="error-system-install">Установка системы невозможна!</div>';
    foreach (
$checkLibs as $message){
        
$msg .= '<span class="error-lib">'.$message.'</span><br>';
    }
    
$msg .= '</div>';
  }
  
  if(
$_SERVER['HTTP_HOST']=='localhost'){
    
$host 'localhost';
    
$user 'root';
    
$password '';
    
$nameDB 'BASE_NAME';
  };
    
}

if (
$_REQUEST['step3']) {
  
  
$host clearData($_REQUEST['host']);
  
$user clearData($_REQUEST['user']);
  
$password clearData($_REQUEST['password']);
  
$nameDB clearData($_REQUEST['nameDB']);
  
$engineType clearData($_REQUEST['engineType']);
  
$step 3;
  if(!empty(
$engineType)){
    
$checkedTest 'checked=checked'//отметка "по умолчанию" типа магазина -тестовый
  
}
  
  
//Тестирование введенных пользоватем параметров.
  
try {

    if (!
mysql_connect($host$user$password)) {
      throw new 
Exception('<span class="no-bd">Невозможно установить соединение.</span>');
    }

    if (!
mysql_select_db($nameDB)) {
      throw new 
Exception('<span class="error-db">Ошибка! Невозможно выбрать указанную базу.</span>');
    }
  } catch (
Exception $e) {
    
//Выведет либо сообщение об ошибке подключения, либо об ошибке выбора.
    
$msg '<div class="msgError">'.$e->getMessage().'</div>';
    
$step 2;
  }
}

if (
$_REQUEST['step4']) {
  
$step 4;


  
$host clearData($_REQUEST['host']);
  
$user clearData($_REQUEST['user']);
  
$password clearData($_REQUEST['password']);
  
$nameDB clearData($_REQUEST['nameDB']);
  
$engineType clearData($_REQUEST['engineType']);
  
  if(!empty(
$engineType)){
    
$checkedTest 'checked=checked'//отметка "по умолчанию" типа магазина -тестовый
  
}
  
  if (!
$_REQUEST['existDB']) {
     
    
// Проверка адреса сайта.
    
if (''==$siteName) {
      
$msg .= '<div class="msgError">Ошибка!
        Не заполнено имя сайта</div>'
;
    }
    
// Проверка электронного адреса.
    
if (!preg_match(
        
'/^[-._a-z0-9]+@(?:[a-z0-9][-a-z0-9]{0,61}+.)+[a-z]{2,6}$/'$adminEmail)
    ) {
      
$msg .= '<span class="error-email">Ошибка!
        Неверно заполнено email администратора</span>'
;
    }
      
    
// Пароль должен быть больше 5-ти символов.
    
if (strlen($aPass)<5) {
      
$msg .= '<span class="error-pass-count">Ошибка!
        Пароль менее 5 символов</span>'
;
      
// Иначе, если не отмечено что пароль видимый.
    
} elseif (!$_REQUEST['showPass']) {
      
$rePass clearData($_REQUEST['rePass']);

      
// Проверяем равенство введенных паролей.
      
if ($rePass!=$aPass) {
        
$msg .= '<span class="error-pass">Ошибка!
          Введенные пароли не совпадают</span>'
;
      }
    }
     
  
  
    
// Если ошибок нет
    
if (!$msg) {

      
//Тестирование введенных пользоватем параметров.
      
try {

        if (!
mysql_connect($host$user$password)) {
          throw new 
Exception('<span class="no-bd">Невозможно установить соединение.</span>');
        }

        if (!
mysql_select_db($nameDB)) {
          throw new 
Exception('<span class="error-db">Ошибка! Невозможно выбрать указанную базу.</span>');
        }
      } catch (
Exception $e) {
        
//Выведет либо сообщение об ошибке подключения, либо об ошибке выбора.
        
$msg '<div class="msgError">'.$e->getMessage().'</div>';
      }
      
      if (
file_exists('install/dbDump.php')) { //подгружаем основной дамп БД
          
        
require_once ('install/dbDump.php');
   
        if(
is_array($damp)){
         
          if (
file_exists('install/dbDumpTestShop.php') && $checkedTest == 'checked=checked') { //если указано, что устанавливать тестовый магазин,
          //  то подгружаем дамп тестового магазина
            
require_once ('install/dbDumpTestShop.php');
            
            if(
is_array($dampTestShop)){
              
$damp array_merge($damp$dampTestShop);
            }
            
            
$imageFile downloadTestImage('http://moguta.ru/uploads/install/upTest.zip');
            
            if(
$imageFileextractZip($imageFile);
          }

          foreach (
$damp as $sql) {
            
mysql_query($sql) or die  ("Ошибка выполнения запроса:".mysql_error()."<br/>".$sql);
          }
        }
      }

      
$cryptAPass crypt($aPass);
      
$sql "
        INSERT INTO `"
.$prefix."user` 
          (`email`, `pass`,`name`,`role`,`activity`)
        VALUES ('"
.$adminEmail."','".$cryptAPass."', '".$aLogin."', 1, 1)
      "
;
      
mysql_query($sql);
      
$sql "
        UPDATE `"
.$prefix."setting`
        SET `value` = '"
.$siteName."'
        WHERE `option` = 'sitename'
      "
;
      
mysql_query($sql);
      
$sql "
        UPDATE `"
.$prefix."setting`
        SET `value` = '"
.$adminEmail."'
        WHERE `option` = 'adminEmail'
      "
;
      
mysql_query($sql);
      
$sql '
        SELECT *
        FROM `'
.$prefix.'user`
        WHERE `email` = "'
.$adminEmail.'"';
    
      
$res mysql_query($sql);    
      
session_start();

      if (
$row mysql_fetch_object($res)) {        
        
$_SESSION['user'] = $row;
      }
  
    }else{
      
$step 3;
    }
  } else {

    
$sql '
    SELECT id
    FROM `'
.$prefix.'user`
    WHERE `role` = 1'
;

    
$res mysql_query($sql);

    if (!
mysql_fetch_assoc($res))
      
$msg .= '<div class="error-email">Ошибка! Недостаточно данных для установки системы. Не найден аккаунт с правами администратора</div>';
  }
  if (!
$msg) {
    
$step 4;
    
// Запись введенных данных в файл параметров config.ini
    
$str "[DB]rn";
    
$str .="HOST = "".$host.""rn";
    
$str .="USER = "".$user.""rn";
    
$str .="PASSWORD = "".$password.""rn";
    
$str .="NAME_BD = "".$nameDB.""rn";
    
$str .="TABLE_PREFIX = "".$prefix.""rn";

    
file_put_contents('config.ini'$str);

    
$robots ="User-agent: Yandex
Allow: /uploads/
Disallow: /install/
Disallow: /mg-admin/
Disallow: /mg-core/
Disallow: /mg-pages/
Disallow: /mg-plugins/
Disallow: /mg-templates/
Disallow: /mg-admin 
Disallow: /personal
Disallow: /enter
Disallow: /forgotpass
Disallow: /registration
Host: "
.$_SERVER['SERVER_NAME']."

User-agent: *
Disallow: /install/
Disallow: /mg-admin/
Disallow: /mg-core/
Disallow: /mg-pages/
Disallow: /mg-plugins/
Disallow: /mg-templates/
Disallow: /mg-admin 
Disallow: /personal
Disallow: /enter
Disallow: /forgotpass
Disallow: /registration
Host: "
.$_SERVER['SERVER_NAME']."

Sitemap: http://"
.$_SERVER['SERVER_NAME']."/sitemap.xml";
    
    
file_put_contents('robots.txt'$robots);
     
    
$tables = array(
      
'category',
      
'category_user_property',
      
'delivery',
      
'order',
      
'page',
      
'payment',
      
'plugins',
      
'product',
      
'product_user_property',
      
'property',
      
'setting',
      
'user',
    );
  }
}

/**
 * Фильтрует введеные пользователем данные
 *
 * @param string $str передаваемая строка
 * @param int $strong строгость проверки
 * @return string отфильтрованная строка
 *
 */
function clearData($str$strong 2) {

  switch (
$strong) {
    case 
1:
      return 
trim($str);
    case 
2:
      return 
trim(strip_tags($str));
  }
}
/**
 * скачивание архива с изображениями для тестового магазина
 * @param string $imageFile путь к архиву на сервере
 * @return string|boolean в случае успеха путь к архиву в папке инсталятора
 */
function downloadTestImage($imageFile){
    
$imageZip 'install/image.zip';
    
$ch curl_init($imageFile);
    
$fp fopen($imageZip"w");
    
curl_setopt($chCURLOPT_FILE$fp);
    
curl_setopt($chCURLOPT_HEADER0);
    
curl_exec($ch);
    
curl_close($ch);
    
fclose($fp);
    
    if(
file_exists($imageZip)) return $imageZip;
    
    return 
false;
}

  
/**
   * Распаковывает архив.
   * После распаковки удаляет заданый архив.
   *
   * @param $file - название архива, который нужно распаковать
   * @return bool
   */
  
function extractZip($file) {
    
$imageFolder SITE_DIR.'uploads/';
      
    if (
file_exists($file)) {
      
$zip = new ZipArchive;
      
$res $zip->open($fileZIPARCHIVE::CREATE);

      if (
$res === TRUE) {
        
$zip->extractTo($imageFolder);
        
$zip->close();
        
unlink($file);

        return 
true;
      } else {
        return 
false;
      }
    }
    return 
false;
  }
    
/**
   * Функция проверяет наличие установленных библиотек PHP
   * @return boolean|srting сообщение об отсутствии необходимого модуля
   */
  
function libExists() {
      
    if(!
function_exists('curl_init')){
      
$res[] = 'Пакет libcurl не установлен! Библиотека cURL не подключена.';
    }
    
    if(!
extension_loaded('zip')){
      
$res[] = 'Пакет zip не установлен! Библиотека ZipArchive не подключена.';
    }
    
    
file_put_contents('temp.txt'' ');
    
    if(!
file_exists('temp.txt')){
      
$res[] = 'Нет прав на создание файла. Загрузка архива с обновлением невозможна';
    }else{
      
unlink('temp.txt');
    }
    
   
    if(!
filesize('.htaccess')){
    
$htaccess 'AddType image/x-icon .ico
AddDefaultCharset UTF-8
Options +FollowSymlinks
Options -Indexes

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} .(ini|php)$
RewriteRule ^(.*) index.php [L,QSA]
</IfModule>

<IfModule mod_php5.c> 
php_flag magic_quotes_gpc Off
</IfModule>
'
;
      
file_put_contents('.htaccess',$htaccess);
      if(!
file_get_contents('.htaccess')){
        
$res[] = 'Невозможно создать файл .htaccess ';
      }
      
      
    }    
   
    
    return 
$res;
  }

switch (
$step) {
  case 
0:
    require_once (
'step0.php');
    break;
  case 
1:
    require_once (
'step1.php');
    break;
  case 
2:
    require_once (
'step2.php');
    break;
  case 
3:
    require_once (
'step3.php');
    break;
  case 
4:
    require_once (
'step4.php');
    break;
}
Онлайн: 0
Реклама