Версия 08:53, 17 февраля 2009 (править) Dmach (Обсуждение | вклад) м ← К предыдущему изменению |
Версия 08:54, 17 февраля 2009 (править) (отменить) Dmach (Обсуждение | вклад)
К следующему изменению → |
Строка 1: |
Строка 1: |
- | <? | + | Веб-сервер Apache2 имеет неудачную архитектуру обработки RemoveHandler / AddType. |
- | session_start(); | + | Традиционно для работы PHP в .html файлах (пример) используют следующую конструкцию в .htaccess: |
| | | |
- | require 'cfg.php'; | + | RemoveHandler .html |
- | require 'lib/function.php'; | + | AddType application/x-httpd-php .html |
- | require 'lib/query.php'; | + | |
| | | |
- | if(isset($_REQUEST['act']) && $_REQUEST['act']=="exit"){ | + | На Apache 1 это работает хорошо, но на Apache 2 все операции AddType выполняются после всех операций RemoveType, список операций общий для глобальной конфигурации сервера и конфигурации через .haccess. Это приводит к тому, что единожды встреченный в конфигурации AddType сделает невозможным никакой более AddType на этот тип файлов, так как два AddType будут выполнены подряд – это ошибка. |
| | | |
- | $_SESSION['acc'] = "1"; | + | На хостинге 1Gb в общей конфигурации уже присутствует AddType на файлы htm html shtm shtml для обработка SSI в этих типах файлов. Это является ожидаемой традиционной конфигурацией для большого числа Веб-мастеров. В результате для того, чтобы задать другой AddType на любой из этих расширений, необходимо предварительно убрать SSI обработчик с этих файлов, что и можно сделать, удалив соответствующее расширение из списка. |
- | $_SESSION['pwd'] = "1"; | + | |
- | $_SESSION['menu']="1"; | + | |
- | } | + | |
| | | |
- | if(isset($_REQUEST['account']) && antiinjection($_REQUEST['account']) && isset($_REQUEST['password']) && antiinjection($_REQUEST['password']) && $_REQUEST['page']!="register"){ | + | Изменение вступит в силу в течение 24 часов (точнее – ночью), для ускорения обратитесь, пожалуйста, к службе поддержки. |
| | | |
- | if (strlen($_REQUEST['account'])>2 || strlen($_REQUEST['account'])<20) { | + | [[Категория:WEB-сервер Apache]] |
- | if (strlen($_REQUEST['password'])>2 || strlen($_REQUEST['password'])<20) { | + | [[Категория:SSI]] |
- | | + | |
- | | + | |
- | if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){ | + | |
- | | + | |
- | | + | |
- | $provakk = $_REQUEST['account']; | + | |
- | $provpwd = $_REQUEST['password']; | + | |
- | | + | |
- | //Auth | + | |
- | $dbconnect = mssql_connect($mssql_host,$mssql_login,$mssql_pass); | + | |
- | mssql_select_db ($dbaut, $dbconnect) or die (mysql_error()); | + | |
- | | + | |
- | $result = mssql_query (sprintf(SELECT_USER_PASS, $provakk)); | + | |
- | | + | |
- | | + | |
- | if(mssql_num_rows($result)>0 ) { | + | |
- | | + | |
- | $rows=mssql_fetch_assoc($result); | + | |
- | extract($rows); | + | |
- | | + | |
- | $password = '0x' . bin2hex($password); | + | |
- | $oldpassword = encrypt($provpwd); | + | |
- | | + | |
- | if ($password!=$oldpassword) { | + | |
- | $error4in = "<span style='color:red'>Пароль неверен.</span><br>"; | + | |
- | | + | |
- | } else { $authok = 1; | + | |
- | | + | |
- | $_SESSION['acc'] = $provakk; | + | |
- | $_SESSION['pwd'] = $oldpassword; | + | |
- | | + | |
- | $_SESSION['menu'] = "onmenu"; | + | |
- | | + | |
- | } | + | |
- | } else { | + | |
- | $error4in = "<span style='color:red'>Аккаунт не существует.</span><br>"; | + | |
- | | + | |
- | } | + | |
- | //Auth | + | |
- | }else{ | + | |
- | $error4in = "<span style='color:red'>Неправильный код с картинки.</span><br>"; | + | |
- | } | + | |
- | unset($_SESSION['captcha_keystring']); | + | |
- | | + | |
- | } | + | |
- | | + | |
- | } | + | |
- | | + | |
- | } | + | |
- | | + | |
- | | + | |
- | ?> | + | |
- | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | + | |
- | <html xmlns="http://www.w3.org/1999/xhtml"> | + | |
- | <head> | + | |
- | <title> | + | |
- | <? | + | |
- | if($module1==0){ | + | |
- | echo "(OFFLINE) "; | + | |
- | } | + | |
- | ?> | + | |
- | La2Chelny.ru | Система управления аккаунтом</title> | + | |
- | <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" > | + | |
- | <meta name="Robots" content="INDEX, FOLLOW"> | + | |
- | <meta name="revisit-after" content="1 days" /> | + | |
- | <link href="styles.css" rel="stylesheet" type="text/css" /> | + | |
- | <script type="text/javascript" src='js/menuFX.js'></script> | + | |
- | </head> | + | |
- | <body> | + | |
- | <center> | + | |
- | <table cellspacing='0' cellpadding='0' width="800" class=tableacts> | + | |
- | <tr><td class=ml1> </td></tr> | + | |
- | <tr><td id=topcat align=right> | + | |
- | <table cellspacing='0' cellpadding='0'> | + | |
- | <td width="125"> | + | |
- | <a href=index.php>Главная</a>| <a href=index.php?page=rules>Правила</a></td> | + | |
- | <? | + | |
- | if($_SESSION['menu']=="onmenu"){ | + | |
- | ?> | + | |
- | <td>| <a href=index.php?page=feed>Тех. поддержка</a>| <a href=index.php?page=change>Изменить пароль</a>| <a href=index.php?page=shop>Магазин</a>| </td> | + | |
- | <td> | + | |
- | <form name=change> | + | |
- | <select name=serv onChange=MM_jumpMenu('parent',this,0) class=button> | + | |
- | <option selected>-> Статистика</option> | + | |
- | <option value="?page=stats&catid=3">- - Состояние замков</option> | + | |
- | <option value="?page=stats">- - Топ 100 игроков</option> | + | |
- | <option value="?page=stats&catid=5">- - Топ 100 PVP</option> | + | |
- | <option value="?page=stats&catid=1">- - Топ кланы</option> | + | |
- | <option value="?page=status">- - 7 Signs</option> | + | |
- | </select> | + | |
- | </form> | + | |
- | </td> | + | |
- | <td> | </td> | + | |
- | <td> | + | |
- | <form name=change> | + | |
- | <select name=serv onChange=MM_jumpMenu('parent',this,0) class=button> | + | |
- | <option selected>-> Изменить</option> | + | |
- | <option value="?page=name">- - Ник персонажа</option> | + | |
- | <option value="?page=gend">- - Пол персонажа</option> | + | |
- | <option value="?page=mail">- - E-mail аккаунта</option> | + | |
- | <option value="?page=acca">- - Аккаунт</option> | + | |
- | </select> | + | |
- | </form> | + | |
- | </td><td> | + | |
- | | <a href=index.php?act=exit>Выход</a></td> | + | |
- | <? | + | |
- | } | + | |
- | ?> | + | |
- | </table> | + | |
- | </td></tr> | + | |
- | <tr> | + | |
- | <td align=left><br> | + | |
- | <div class=marginal> | + | |
- | <? | + | |
- | | + | |
- | if($module1==1){ | + | |
- | | + | |
- | if(isset($error4in)){ echo $error4in; } | + | |
- | | + | |
- | | + | |
- | | + | |
- | if($_SESSION['acc']){ | + | |
- | if(antiinjection($_SESSION['acc']) && antiinjection($_SESSION['pwd'])){ | + | |
- | | + | |
- | $provakk = $_SESSION['acc']; | + | |
- | $provpwd = $_SESSION['pwd']; | + | |
- | | + | |
- | //Auth AUTO | + | |
- | $dbconnect = mssql_connect($mssql_host,$mssql_login,$mssql_pass); | + | |
- | mssql_select_db ($dbaut, $dbconnect) or die (mysql_error()); | + | |
- | | + | |
- | $result = mssql_query (sprintf(SELECT_USER_PASS, $provakk)); | + | |
- | | + | |
- | | + | |
- | if(mssql_num_rows($result)>0 ) { | + | |
- | | + | |
- | $rows=mssql_fetch_assoc($result); | + | |
- | extract($rows); | + | |
- | | + | |
- | $password = '0x' . bin2hex($password); | + | |
- | $oldpassword = $provpwd; | + | |
- | | + | |
- | if ($password==$oldpassword){ $authok = 1; } | + | |
- | } | + | |
- | //Auth AUTO | + | |
- | } | + | |
- | } | + | |
- | | + | |
- | ?> | + | |
- | | + | |
- | | + | |
- | | + | |
- | <?php | + | |
- | if($authok<1 && $_REQUEST['page']!="lost" && $_REQUEST['page']!="register" && $_REQUEST['page']!="rules" && $_REQUEST['page']!="valid"){ | + | |
- | | + | |
- | if($module1==1){ | + | |
- | echo " | + | |
- | <div align=center> | + | |
- | <fieldset> | + | |
- | <legend><b>Авторизация:</b></legend> | + | |
- | <form action='index.php?page=default' method='post'> | + | |
- | <b>Аккаунт</b><br> | + | |
- | <input type=text maxlength=20 name=account><br><br> | + | |
- | <b>Пароль</b><br> | + | |
- | <input type=password maxlength=20 name=password><br><br> | + | |
- | <img src='captha/index.php?<?php echo session_name()?>=<?php echo session_id()?>'><br><br> | + | |
- | <input type=text name=keystring value=''> | + | |
- | <br><br> | + | |
- | <input type=hidden name=cdata value='bkt'> | + | |
- | <input type=submit name=submit value='Войти'> | + | |
- | </form><br> | + | |
- | <a href=?page=lost>Восстановление пароля</a> | <a href=?page=register>Регистрация</a> | + | |
- | </fieldset> | + | |
- | </div> | + | |
- | "; | + | |
- | | + | |
- | }else{ | + | |
- | echo " | + | |
- | <fieldset> | + | |
- | <legend><b>UCP OFFLINE:</b></legend> | + | |
- | <center>Система управления аккаунтом временно недоступна.<br>Приносим свои извинения за неудобства.</center> | + | |
- | </fieldset> | + | |
- | "; | + | |
- | } | + | |
- | | + | |
- | }elseif($_REQUEST['page']=="lost"){ | + | |
- | | + | |
- | $securitycheck = 1; | + | |
- | require 'lib/lost.php'; | + | |
- | | + | |
- | }elseif($_REQUEST['page']=="valid"){ | + | |
- | | + | |
- | require 'lib/valid.php'; | + | |
- | | + | |
- | }elseif($_REQUEST['page']=="register"){ | + | |
- | | + | |
- | $securitycheck = 1; | + | |
- | require 'lib/register.php'; | + | |
- | | + | |
- | }elseif($_REQUEST['page']=="rules"){ | + | |
- | | + | |
- | require 'lib/rules.php'; | + | |
- | | + | |
- | }elseif($_REQUEST['act']!="exit"){ | + | |
- | | + | |
- | mssql_select_db("lin2world"); | + | |
- | $result=mssql_query("SELECT * FROM builder_account WHERE account_name='$provakk'"); | + | |
- | | + | |
- | if(mssql_num_rows($result)>0 ) { | + | |
- | | + | |
- | $bnum=mssql_result($result, 0, 'default_builder'); | + | |
- | | + | |
- | if($bnum==$buildnum){ | + | |
- | $checkbok = "1"; | + | |
- | } | + | |
- | | + | |
- | } | + | |
- | | + | |
- | $page = $_GET['page']; | + | |
- | if(!$page) { | + | |
- | $page = 'default'; | + | |
- | } elseif($page=='change') { | + | |
- | $page = 'change'; | + | |
- | } elseif($page=='shop') { | + | |
- | $page = 'shop'; | + | |
- | } elseif($page=='name') { | + | |
- | $page = 'nameactions'; | + | |
- | } elseif($page=='gend') { | + | |
- | $page = 'gendactions'; | + | |
- | } elseif($page=='mail') { | + | |
- | $page = 'mailactions'; | + | |
- | } elseif($page=='feed') { | + | |
- | $page = 'support'; | + | |
- | } elseif($page=='adcp') { | + | |
- | $page = 'adcp'; | + | |
- | } elseif($page=='acca') { | + | |
- | $page = 'accactions'; | + | |
- | } elseif($page=='charedit') { | + | |
- | $page = 'charedit'; | + | |
- | } elseif($page=='event') { | + | |
- | $page = 'event1'; | + | |
- | } elseif($page=='stats') { | + | |
- | $page = 'statistic'; | + | |
- | } elseif($page=='status') { | + | |
- | $page = 'status'; | + | |
- | } else { | + | |
- | $page = 'default'; | + | |
- | } | + | |
- | $securitycheck = 1; | + | |
- | require 'lib/' . $page . '.php'; | + | |
- | }else{ | + | |
- | | + | |
- | if($module1==1){ | + | |
- | echo " | + | |
- | <div align=center> | + | |
- | <fieldset> | + | |
- | <legend><b>Авторизация:</b></legend> | + | |
- | <form action='index.php?page=default' method='post'> | + | |
- | <b>Аккаунт</b><br> | + | |
- | <input type=text maxlength=20 name=account><br><br> | + | |
- | <b>Пароль</b><br> | + | |
- | <input type=password maxlength=20 name=password><br><br> | + | |
- | <img src='captha/index.php?<?php echo session_name()?>=<?php echo session_id()?>'><br><br> | + | |
- | <input type=text name=keystring value=''> | + | |
- | <br><br> | + | |
- | <input type=hidden name=cdata value='bkt'> | + | |
- | <input type=submit name=submit value='Войти'> | + | |
- | </form><br> | + | |
- | <a href=?page=lost>Восстановление пароля</a> | <a href=?page=register>Регистрация</a> | + | |
- | </fieldset> | + | |
- | </div> | + | |
- | "; | + | |
- | }else{ | + | |
- | echo " | + | |
- | <fieldset> | + | |
- | <legend><b>UCP OFFLINE:</b></legend> | + | |
- | <center>Система управления аккаунтом временно недоступна.<br>Приносим свои извинения за неудобства.</center> | + | |
- | </fieldset> | + | |
- | "; | + | |
- | } | + | |
- | | + | |
- | } | + | |
- | }else{ | + | |
- | echo "<fieldset> | + | |
- | <legend><b>UCP OFFLINE:</b></legend> | + | |
- | <center>Система управления аккаунтом временно недоступна.<br>Приносим свои извинения за неудобства.</center> | + | |
- | </fieldset>"; | + | |
- | } | + | |
- | ?></div><br> | + | |
- | </td></tr><tr><td class=copyright align=center>Lineage2 Личный Кабинет <b> © 2008-2009 <a href="http://www.La2chelny.ru">La2Chelny.ru</a></b></table> | + | |
- | </center> | + | |
Веб-сервер Apache2 имеет неудачную архитектуру обработки RemoveHandler / AddType.
Традиционно для работы PHP в .html файлах (пример) используют следующую конструкцию в .htaccess:
На Apache 1 это работает хорошо, но на Apache 2 все операции AddType выполняются после всех операций RemoveType, список операций общий для глобальной конфигурации сервера и конфигурации через .haccess. Это приводит к тому, что единожды встреченный в конфигурации AddType сделает невозможным никакой более AddType на этот тип файлов, так как два AddType будут выполнены подряд – это ошибка.
На хостинге 1Gb в общей конфигурации уже присутствует AddType на файлы htm html shtm shtml для обработка SSI в этих типах файлов. Это является ожидаемой традиционной конфигурацией для большого числа Веб-мастеров. В результате для того, чтобы задать другой AddType на любой из этих расширений, необходимо предварительно убрать SSI обработчик с этих файлов, что и можно сделать, удалив соответствующее расширение из списка.
Изменение вступит в силу в течение 24 часов (точнее – ночью), для ускорения обратитесь, пожалуйста, к службе поддержки.