Загрузка...

Помогите с кодировкой

Тема в разделе Backend создана пользователем GOLD_9 31 янв 2017. 879 просмотров

Загрузка...
  1. GOLD_9
    GOLD_9 Автор темы 31 янв 2017 Заблокирован(а) 73 20 окт 2016
    http://prntscr.com/e2tckf

    Пробовал вставить разные кодировки на коде
    все равно коряки идут на БД
    Код

    function new_config(){
    $item['metadescr'] = '';
    $item['qiwi_num'] = '';
    $item['qiwi_pass'] = '';
    $item['sitedescription'] = '';
    [COLOR=#ff0000] $item['site_name'] = 'Мой магазин'; вот это идет как коряки[/COLOR]
    $item['wmid'] = '';
    $item['wmk_file'] = '';
    $item['WMR'] = '';
    $item['WMZ'] = '';
    $item['wm_key_date'] = '';
    $item['wm_pass'] = '';
    $item['coupon_percent'] = '5';
    $item['coupon_time'] = '604800';
    $item['favicon'] = '';
    $item['button_pay'] = '/assets/img/buy.png';
    $item['url_type'] = 1;
    $item['buy_page'] = 1;
    $item['domain'] = '';
    return $item;}


    Кодировка БД utf8_general_ci
     
  2. RaysMorgan
  3. GOLD_9
    GOLD_9 Автор темы 1 фев 2017 Заблокирован(а) 73 20 окт 2016
    я все таки не смог разобраться
    вот мой код с этого идет запись в БД в коряки как можно исправить
    Код

    <?php

    /*

    Include libs

    */

    function lib($lib)
    {
    if(empty($lib))
    {
    throw new Exception('Не передано значение <i>$lib</i>');
    }

    $lib = DIR.'/engine/lib/'.$lib.'.php';
    if(file_exists($lib))
    include_once $lib;
    else
    throw new Exception('Lib file <i>'.$lib.'</i> not exists');
    }


    /*

    Include classes

    */

    function classes($classes)
    {
    if(empty($classes))
    {
    throw new Exception('Не передано значение <i>$classes</i>');
    }

    $classes = DIR.'/engine/classes/'.$classes.'.php';
    if(file_exists($classes))
    include_once $classes;
    else
    throw new Exception('Class file <i>'.$classes.'</i> not exists');
    }


    /*

    Check XSS

    */
    function check_xss()
    {
    $uri = $_SERVER['REQUEST_URI'];
    $uri_decoded = urldecode($_SERVER['REQUEST_URI']);

    if(
    strpos($uri, '*') or
    strpos($uri, '(') or
    strpos($uri, ')') or
    strpos($uri, '\'') or
    strpos($uri, '"') or
    strpos($uri, '`') or
    strpos($uri_decoded, '*') or
    strpos($uri_decoded, '(') or
    strpos($uri_decoded, ')') or
    strpos($uri_decoded, '\'') or
    strpos($uri_decoded, '"') or
    strpos($uri_decoded, '`')
    )
    {
    die('Found illegal characters in URI');
    }
    }


    /*

    Route

    */
    function route()
    {
    global $route, $ex;

    $path = parse_url($_SERVER['REQUEST_URI']);
    $ex = explode('/', $path['path']);

    if($path['path']==='/')
    {
    $route['/']['config'] = parse_tree($route['/']['config']);
    return $route['/'];
    }

    foreach($route as $k => $v)
    {
    $k = str_replace(':any', '.+', str_replace(':num', '[0-9]+', $k));

    if (preg_match('#^'.$k.'$#', $path['path']))
    {
    $v['config'] = parse_tree($v['config']);
    return $v;
    }
    }

    show_404();
    }

    /*

    Parse TREE config

    */
    function parse_tree($str='')
    {
    if($str==='') return array();

    $els = explode('|', $str);
    $config = array();
    foreach($els as $v)
    {
    if(strpos($v, '='))
    {
    list($key, $value) = explode('=', $v);
    $config[$key] = $value;
    }
    else
    {
    $config[$v] = true;
    }
    }
    return $config;
    }

    /*

    Load database

    */

    function load_db()
    {
    global $config, $db;

    if(!config('db_loaded'))
    {
    log_message('INFO', 'db isn\'t loaded. Load db');
    lib('db');

    $db = new db("mysql:host=". $config['database']['host'] .";dbname=". $config['database']['db'], $config['database']['user'], $config['database']['password'] );
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

    config('db_loaded', $db);

    return $db;
    }
    else
    {
    log_message('INFO', 'db is loaded. Getting loaded');
    return config('db_loaded');
    }
    }

    /*

    Load view

    */

    function view($view='', $data=array(), $tpl=false)
    {
    global $config, $db;

    if($tpl)
    $tpl = DIR.'/templates/'. $tpl.'/';
    else
    $tpl = defined('TPL') ? TPL : DIR.'/templates/'. config('template').'/';

    if(!file_exists($tpl.$view.'.php'))
    {
    throw new Exception('View file '.$tpl.$view.'.php not exists!');
    }
    else
    {
    include_once $tpl.$view.'.php';
    }
    }

    /*

    Load function

    */

    function load($file='', $data=array())
    {
    if(!file_exists(DIR.'/'.$file))
    {
    throw new Exception('Load file '.$file.' not exists!');
    }
    else
    {
    include_once DIR.'/'.$file;
    }
    }

    /*

    Edit page title

    */

    function title($title='')
    {
    global $config;

    $config['title'] = $title;
    }

    /*

    Show 404

    */

    function show_404($tpl='')
    {
    header("HTTP/1.0 404 Not Found");
    header('Status: 404 Not Found');
    header('HTTP/1.0 404 Not Found');

    view('pages/404', NULL, $tpl);
    die();
    }

    /*

    Validate E-Mail

    */

    function valid_email($address)
    {
    return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $address)) ? FALSE : TRUE;
    }

    function log_message($level, $msg){
    $filepath = DIR.'/engine/data/log.txt';

    if ( ! $fp = @fopen($filepath, 'a'))
    {
    return FALSE;
    }
    $message = $level.' '.(($level == 'INFO') ? ' -' : '-').' '.date('r'). ' --> '.$msg."\n";

    flock($fp, LOCK_EX);
    fwrite($fp, $message);
    flock($fp, LOCK_UN);
    fclose($fp);

    @chmod($filepath, FILE_WRITE_MODE);
    }

    function new_config(){
    $item['metadescr'] = '';
    $item['qiwi_num'] = '';
    $item['qiwi_pass'] = '';
    $item['sitedescription'] = '';
    $item['site_name'] = 'Мой магазин';
    $item['wmid'] = '';
    $item['wmk_file'] = '';
    $item['WMR'] = '';
    $item['WMZ'] = '';
    $item['wm_key_date'] = '';
    $item['wm_pass'] = '';
    $item['coupon_percent'] = '5';
    $item['coupon_time'] = '604800';
    $item['favicon'] = '';
    $item['button_pay'] = '/assets/img/buy.png';
    $item['url_type'] = 1;
    $item['buy_page'] = 1;
    $item['domain'] = '';
    return $item;
    }

    function argument( $num=false)
    {
    global $ex;

    if($num) return isset( $ex[$num]) ? $ex[$num] : false;
    else return $ex;
    }

    function config( $key, $value=false)
    {
    global $config;
    if( $value) return $config[ $key] = $value;
    else return isset( $config[ $key]) ? $config[ $key] : false;
    }

    /*

    Ru Date:

    * F Полное наименование месяца, например Января или Марта от Января до Декабря
    * M Сокращенное наименование месяца, 3 символа От Янв до Дек
    * l (строчная 'L') Полное наименование дня недели От Воскресенье до Суббота
    * D Сокращенное наименование дня недели, 2 символа от Вс до Сб
    * остальные варианты форматирования см. функцию date() в мануале.

    */

    function rudate($format, $timestamp = 0, $nominative_month = false)
    {
    if(!$timestamp) $timestamp = time();
    elseif(!preg_match("/^[0-9]+$/", $timestamp)) $timestamp = strtotime($timestamp);

    $F = $nominative_month ? array(1=>"Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь") : array(1=>"Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря");
    $M = array(1=>"Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек");
    $l = array("Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота");
    $D = array("Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб");

    $format = str_replace("F", $F[date("n", $timestamp)], $format);
    $format = str_replace("M", $M[date("n", $timestamp)], $format);
    $format = str_replace("l", $l[date("w", $timestamp)], $format);
    $format = str_replace("D", $D[date("w", $timestamp)], $format);

    return date($format, $timestamp);
    }

    function csrf($code, $input=true)
    {
    $csrf = md5($code.')%&%&^$)*^%)*YGL&&&&&&$%)*GYP*)T_(&T');
    return $input ? '<input type="hidden" name="csrf" value="'.$csrf.'" />' : $csrf;
    }

    function get_alt($var, $lower = true, $punkt = true) {

    if ( is_array($var) ) return "";

    $alt_replace = array(
    'а' => 'a', 'б' => 'b', 'в' => 'v',
    'г' => 'g', 'д' => 'd', 'е' => 'e',
    'ё' => 'e', 'ж' => 'zh', 'з' => 'z',
    'и' => 'i', 'й' => 'y', 'к' => 'k',
    'л' => 'l', 'м' => 'm', 'н' => 'n',
    'о' => 'o', 'п' => 'p', 'р' => 'r',
    'с' => 's', 'т' => 't', 'у' => 'u',
    'ф' => 'f', 'х' => 'h', 'ц' => 'c',
    'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch',
    'ь' => '', 'ы' => 'y', 'ъ' => '',
    'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
    "ї" => "yi", "є" => "ye",

    'А' => 'A', 'Б' => 'B', 'В' => 'V',
    'Г' => 'G', 'Д' => 'D', 'Е' => 'E',
    'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z',
    'И' => 'I', 'Й' => 'Y', 'К' => 'K',
    'Л' => 'L', 'М' => 'M', 'Н' => 'N',
    'О' => 'O', 'П' => 'P', 'Р' => 'R',
    'С' => 'S', 'Т' => 'T', 'У' => 'U',
    'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
    'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch',
    'Ь' => '', 'Ы' => 'Y', 'Ъ' => '',
    'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya',
    "Ї" => "yi", "Є" => "ye",
    );

    $var = str_replace(chr(0), '', $var);

    $var = trim( strip_tags( $var ) );
    $var = preg_replace( "/\s+/ms", "-", $var );
    $var = str_replace( "/", "-", $var );

    $var = strtr($var, $alt_replace);

    if ( $punkt ) $var = preg_replace( "/[^a-z0-9\_\-.]+/mi", "", $var );
    else $var = preg_replace( "/[^a-z0-9\_\-]+/mi", "", $var );

    $var = preg_replace( '#[\-]+#i', '-', $var );
    $var = preg_replace( '#[.]+#i', '.', $var );

    if ( $lower ) $var = strtolower( $var );

    $var = str_ireplace( ".php", "", $var );
    $var = str_ireplace( ".php", ".ppp", $var );

    if( strlen( $var ) > 200 ) {

    $var = substr( $var, 0, 200 );

    if( ($temp_max = strrpos( $var, '-' )) ) $var = substr( $var, 0, $temp_max );

    }

    return $var;
    }


    Код

    <?

    if(!defined('DIR')) die('access error');

    $shop_type = 0;
    $db = &$GLOBALS['db'];
    if(!empty($data['free_shop'])){
    $work_time = 604800;
    $shop_type = 1;
    $goods['domain'] = $_POST['domain'].$_POST['domain_suffix'];
    $goods['email'] = $_POST['email'];
    $goods['passwd'] = $_POST['passwd'];

    if(!empty($_COOKIE['referer']))
    {
    $referer = $_COOKIE['referer'];
    }else
    {
    $referer = '';
    }
    }elseif($goods['size']==150){
    $referer = $goods['referer'];
    $work_time = 2678400;
    }elseif($goods['size']==430){
    $referer = $goods['referer'];
    $work_time = 8035200;
    }elseif($goods['size']==850){
    $referer = $goods['referer'];
    $work_time = 16070400;
    }elseif($goods['size']==1600){
    $referer = $goods['referer'];
    $work_time = 31622400;
    }else{
    $referer = $goods['referer'];
    $work_time = 100;
    }

    $goods['domain'] = mb_strtolower($goods['domain']);

    $s1 = substr($goods['domain'], 0, 1);
    $s2 = substr($goods['domain'], 1, 1);
    $s3 = substr($goods['domain'], 2, 1);
    $s4 = substr($goods['domain'], 3);

    $dir = $_SERVER['DOCUMENT_ROOT'].'/assets/users_files/'.$s1.'/';
    if(!file_exists($dir)){
    mkdir($dir);
    }

    $dir .= $s2.'/';
    if(!file_exists($dir)){
    mkdir($dir);
    }

    $dir .= $s3.'/';
    if(!file_exists($dir)){
    mkdir($dir);
    }

    $dir .= $s4.'/';
    if(!file_exists($dir)){
    mkdir($dir);
    }

    $tpl = $db->query('SELECT * FROM `tpls` WHERE `deleted`=0 AND `domain`="s00.1.su"')->fetch(PDO::FETCH_ASSOC);
    $tpl['domain'] = $goods['domain'];
    unset($tpl['id'], $tpl['deleted']);
    $db->insert('tpls', $tpl);
    file_put_contents($dir.'/style.css', file_get_contents($_SERVER['DOCUMENT_ROOT'].'/assets/users_files/s/0/0/.1.su/style.css'));

    $query = array();
    $query[] = 'INSERT INTO `users`(`email`,`password`,`domain`) VALUES("'. htmlspecialchars( $goods['email']) .'", "'. md5($goods['passwd']) .'", "'. $goods['domain'] .'");';


    $query[] = 'INSERT INTO `accounts`(`domain`, `status`, `endTime`, `closedTime`, `type`, `referer`) VALUES("'. $goods['domain'] .'",1,'. ( $_SERVER['REQUEST_TIME'] + $work_time) .', '. ( $_SERVER['REQUEST_TIME'] + $work_time + 432000) .', '.$shop_type.', "'.htmlspecialchars($referer).'")';
    $query[] = 'INSERT INTO `cache_manage`(`domain`, `deleted`) VALUES("'. $goods['domain'] .'", 0)';


    unset($data);

    $query[] = 'INSERT INTO `shopsHistory`(`domain`, `type`) VALUES("'. $goods['domain'] .'", "created")';

    foreach($query as $q){
    $db->query($q);
    }
    unset($query);

    $add_config = $db->prepare('INSERT INTO `config`(`metadescr`, `qiwi_num`, `qiwi_pass`, `sitedescription`, `site_name`, `wmid`, `wmk_file`, `WMR`, `WMZ`, `wm_key_date`, `wm_pass`, `coupon_percent`, `coupon_time`, `favicon`, `button_pay`, `url_type`, `buy_page`, `domain`) VALUES(:metadescr, :qiwi_num, :qiwi_pass, :sitedescription, :site_name, :wmid, :wmk_file, :WMR, :WMZ, :wm_key_date, :wm_pass, :coupon_percent, :coupon_time, :favicon, :button_pay, :url_type, :buy_page, :domain)');
    $dats = new_config();
    $dats['domain'] = $goods['domain'];
    $add_config->execute($dats);


    $subject = "Ваш магазин создан!";

    $message = file_get_contents(DIR.'/engine/data/email.txt');
    $message = str_replace(
    array(
    '{email}',
    '{password}',
    '{domain}'
    ),

    array(
    $goods['email'],
    $goods['passwd'],
    $goods['domain']
    ),

    $message
    );

    $headers = "Content-type: text/html; charset=UTF-8 \r\n";

    mail($goods['email'], $subject, $message, $headers);
     
    1 фев 2017 Изменено
  4. RaysMorgan
    GOLD_9, зачем лезть в эту сферу, если не знаешь элементарных вещей?

    После
    Код
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
    Надо написать
    Код
    $db->exec("set names utf8");

    А у самой бд указать utf8_general_ci
     
  5. GOLD_9
    GOLD_9 Автор темы 1 фев 2017 Заблокирован(а) 73 20 окт 2016
    все равно так же
     
  6. RaysMorgan
    GOLD_9, у бд какая кодировка? скриншот дай
     
  7. GOLD_9
    GOLD_9 Автор темы 1 фев 2017 Заблокирован(а) 73 20 окт 2016
  8. RaysMorgan
    GOLD_9, в твоём коде я не увидел вывод какой-то информации, дай полный код или вставь в самое начало тега <head>
    Код

    <meta charset="utf-8">
     
  9. GOLD_9
    GOLD_9 Автор темы 2 фев 2017 Заблокирован(а) 73 20 окт 2016
    Код

    <?php

    if(!defined('DIR')) die('access error');

    $els = explode('-', argument(2));

    $pos = strpos(argument(2), '-');
    $id = substr(argument(2), 0, $pos);
    $url = substr(argument(2), ($pos+1));

    if(empty($id) or empty($pos)) show_404('default');

    $db = load_db();

    $post = $db->prepare('SELECT * FROM `help_posts` WHERE `id`=:id');
    $post->bindparam(':id', $id);
    $post->execute();

    $post = $post->fetch(PDO::FETCH_ASSOC);
    if(!$post) show_404('default');

    if($post['url']!==$url)
    {
    header('Location: /help/'.$post['id'].'-'.$post['url']);
    die();
    }

    $add_view = $db->prepare('UPDATE `help_posts` SET `view`=`view`+1 WHERE `id`=:id');
    $add_view->bindparam(':id', $id);
    $add_view->execute();

    title($post['name']);
    view('parts/header', $data);
    ?>
    <h1 class="small"><?php echo $post['name']; ?></h1>
    <?php
    echo $post['text'];

    view('parts/footer'); ?>

    Еще на хостинге все работает нормально и с кодировкой проблем нет а на ВПСе такая вот проблема с кодировкой
     
  10. RaysMorgan
    GOLD_9, короче пиши хостеру, раз не понимаешь моих слов
     
  11. RaysMorgan
    GOLD_9,
    Замени это
    Код
    if(!defined('DIR')) die('access error');

    на
    Код

    header('Content-Type: text/html; charset=utf-8', true);
    if(!defined('DIR')) die('access error');
     
Top