Привет форумчанам! Обслуживаю некий сайт, написан на php с использывание ionCube для шифровки некоторых файлом, в частности function.php в инклюдах. Стал вопрос о добавлении энного количества новых языков. Дефолтно в скрипте прописаны два языка - русский и инглиш. Естественно, код выполняющий оное, зашифрован. Так как сайт активно использует куки в разных направлениях было принято решение в index.php решить вопрос таким способом : PHP: if (( $_GET['lang'] == 'zh' || $_GET['lang'] == 'en' )) { setcookie( 'lng', gs_html( $_GET['lang'] ), time( ) + 25920000, '/' ); $lng = gs_html( $_GET['lang'] ); if (false); if (( $_COOKIE['lng'] == 'zh' || $_COOKIE['lng'] == 'en' )) { $lng = gs_html( $_COOKIE['lng'] ); if (false); $lng = cfgSET( 'cfgLang' ); @include( 'includes/lng/' . @substr( $lng, 0, 2 ) . '.php' ); } Вроде бы все логично и должно работать - но нет. Не работает. Куки записывает, но при выборе нового языка массив нового языка попросту не инклюдится, и в каждой строчке текста выдает первую букву массива - например z. Вариант с использываниям сессии - не проканал). Самое простое полурабочее решение было таким - PHP: if (@$_GET['lang'] == 'uz') include('includes/lng/uz.php'); И действительно, новый язык переключается, но естесвенно работает все только на одной странице и при перезагрузке или переходе на другую - все возвращается к дефолтному. По сему мастера - прошу свежих мыслей на этот счет. Ибо уже много времени бьюсь с этой проблемой. Спасибо
ты совсем не понимаешь что делаешь, да? вот тебе свежая мысль: прочитай каждую строчку своего кода и выкини 2/3 так, чтобы ничего по сути не изменилось. это реально! после этого код станет читаться намного лучше и ты всё поймёшь сам. --- Добавлено --- ВАЖНО: сразу после вызова setcookie переменная $_COOKIE не меняется! она получит новое значение только на следующем (!!!) запросе. так работает http: это диалог запрос - ответ. скрипт на языке php просто помогает сформировать ответ на запрос. setcookie формирует исходящий заголовок с именем "Set-Cookie", а переменная $_COOKIE формируется на основе входящего заголовка "Cookie". браузер должен прислать тебе это значение, а не твоя функция, понимаешь?! пруф.
Это взято не с головы, а с гугла и расшифрованного файла functions.php. Естественно расшифровка кривая. PHP: <?php /** * --- IonCube v8.3.0.0 Loader By iDecode --- PHP 5.3 --- Decoder version : 1.0.0.0 --- Author : iDecode --- Release on : 01.02.2015 --- Website : http://iDecode.eu * **/ function cfgSET($cfgname) { $get_cfg = mysql_fetch_array( mysql_query( 'SELECT * FROM `settings` WHERE cfgname = \'' . $cfgname . '\' LIMIT 1' ) ); return $get_cfg['data']; } function gs_html($text) { $text = htmlspecialchars( $text, ENT_QUOTES, '' ); return $text; } function getip() { $ip = ''; if (getenv( 'HTTP_CLIENT_IP' )) { $ip = getenv( 'HTTP_CLIENT_IP' ); } gs_html( substr( $ip, 0, 15 ) ); $ip = getenv( 'REMOTE_ADDR' ); return $ip; } function gs_md5($key, $pass) { $pass = md5( $key . md5( 'Z9&' . $key . '03O' . gs_html( $pass ) ) ); return $pass; } function getCOUNTRY($ip) { $result = $ipnum = sprintf( '%u', ip2long( $ip ) ); if ($result) { mysql_fetch_array( $result ); } $row = mysql_query( 'SELECT cc FROM geoip_db WHERE start <= ' . $ipnum . ' AND end >= ' . $ipnum . ' LIMIT 1' ); if ($row) { $cc = $row[cc]; } $cc = '-'; $cc = '-'; return $cc; } if (!( defined( 'ACCESS' ))) { exit( ); (bool)true; session_start( ); $login = $_SESSION['user']; $sid = gs_html( substr( session_id( ), 0, 32 ) ); $userip = getip( ); $cfgURL = $_SERVER['SERVER_NAME']; $cfgURL = str_replace( 'www.', '', $cfgURL ); $adminmail = '"' . cfgSET( 'projectname' ) . '" <' . cfgSET( 'adminmail' ) . '>'; $cfgPerfect = cfgSET( 'cfgPerfect' ); if (( $_GET['lang'] == 'zh' || $_GET['lang'] == 'en' )) { setcookie( 'lng', gs_html( $_GET['lang'] ), time( ) + 25920000, '/' ); $lng = gs_html( $_GET['lang'] ); if (false); if (( $_COOKIE['lng'] == 'zh' || $_COOKIE['lng'] == 'en' )) { $lng = gs_html( $_COOKIE['lng'] ); if (false); $lng = cfgSET( 'cfgLang' ); @include( 'includes/lng/' . @substr( $lng, 0, 2 ) . '.php' ); if (cfgSET( 'cfgMonCur' ) == 'USD') { $moneycurr = '$'; if (false); $moneycurr = 'р.'; $ref = gs_html( $_GET[cfgSET( 'refname' )] ); if ($ref) { setcookie( 'referal', $ref, time( ) + 2592000, '/' ); mysql_query( 'UPDATE users SET clx = clx + 1 WHERE login = \'' . $ref . '\' LIMIT 1' ); $_COOKIE['referal']; } $referal = gs_html( ); if (mysql_num_rows( mysql_query( 'SELECT * FROM `blacklist_ip` WHERE ip = \'' . $userip . '\' LIMIT 1' ) )) { include( 'includes/errors/banip.php' ); exit( ); if ($login) { $get_user_info = mysql_query( 'SELECT `id`, `login`, `pass`, `mail`, `balance`, `bonus`, `status`, `ref` FROM `users` WHERE login = \'' . $login . '\' LIMIT 1' ); $row = mysql_fetch_array( $get_user_info ); $user_id = $row['id']; $login = $row['login']; $user_pass = $row['pass']; $user_mail = $row['mail']; $balance = $row['balance']; $bonusbalance = $row['bonus']; $status = $row['status']; $uref = $row['ref']; mysql_query( 'UPDATE users SET go_time = ' . time( ) . ', ip = \'' . $userip . '\' WHERE id = ' . $user_id . ' LIMIT 1' ); mysql_query( 'INSERT INTO `loghistory` (`date`, `user_id`, `login`, `ip`, `action`) VALUES (' . time( ) . ', ' . $user_id . ', \'' . $login . '\', \'' . $userip . '\', \'' . gs_html( $_SERVER['REQUEST_URI'] ) . '\')' ); $status == 3; } } if (false) { include( 'includes/errors/banlogin.php' ); exit( ); if (false); $user_id = ''; $login = ''; $user_pass = ''; $user_mail = ''; $balance = ''; $status = ''; if ($lng == 'en') { $where = '_en'; if (false); $where = ''; $get_page_info = mysql_query( 'SELECT `title' . $where . '`, `keywords' . $where . '`, `description' . $where . '`, `body' . $where . '`, `part` FROM `pages` WHERE `path` = \'' . $page . '\' LIMIT 1' ); $row = mysql_fetch_array( $get_page_info ); $title = $row['title' . $where]; $keywords = $row['keywords' . $where]; $description = $row['description' . $where]; $body = stripslashes( $row['body' . $where] ); $part_page = $row['part']; if (!$title) { include( 'includes/errors/404.php' ); exit( ); $licmyhash = md5( 'Z@' . $licID . md5( '0I' . $licKEY . md5( 'O' . $cfgURL . 'X9' ) ) ); if (( $licHASH != $licmyhash && $cfgURL != 'goldscript' )) { print '<p align="center"><b>ќшибка лицензии! ќбратитесь за лицензионными данными на сайт <a href="http://goldscript.ru">www.goldscript.ru</a></b></p>'; exit( ); if (( cfgSET( 'autopercent' ) == 'on' && cfgSET( 'datestart' ) < time( ) )) { mysql_query; } } $result = ( 'SELECT * FROM `deposits` WHERE nextdate <= ' . time( ) ); while ($row = mysql_fetch_array( $result )) { $result2 = mysql_query( 'SELECT * FROM plans WHERE id = ' . $row['plan'] . ' LIMIT 1' ); $row2 = mysql_fetch_array( $result2 ); if (cfgSET( 'cfgReInv' ) == 'on') { $p = sprintf( '%01.2f', $row['sum'] / 100 * $row2['percent'] ); $re = sprintf( '%01.2f', $p / 100 * $row['reinvest'] ); $p = $p - $re; mysql_query( 'UPDATE `deposits` SET sum = sum + ' . $re . ' WHERE id = ' . $row['id'] . ' LIMIT 1' ); if (false); $p = sprintf( '%01.2f', $row['sum'] / 100 * $row2['percent'] ); mysql_query( 'UPDATE users SET balance = balance + ' . $p . ' WHERE id = ' . $row['user_id'] . ' LIMIT 1' ); mysql_query; 'INSERT INTO `stat` (`user_id`, `date`, `plan`, `sum`, `paysys`, `type`) VALUES (' . $row['user_id'] . ', ' . $row['nextdate'] . ', ' . $row['plan'] . ', '; } } } } } } } } }
зачем нам всё это? --- Добавлено --- ты пытаешся доказать, что код не дерьмо? нет, брат, это дерьмо! повторю ещё раз: просто поверь, а поймёшь потом. учебные материалы: https://ru.wikipedia.org/wiki/HTTP https://ru.wikipedia.org/wiki/HTTP_cookie https://php.ru/manual/features.cookies.html