<? 
    include ".config.php";
 
    $Data = '<form action=?page=10 method=post>
    <center>Логин:<br>
    <font color="#FF0000">*</font><input type=text name=login><br>
    Пароль:<br>
    <font color="#FF0000">*</font><input type=password name=passwd><br>
    Повтор пароля:<br>
    <font color="#FF0000">*</font><input type=password name=repasswd><br>
    Email:<br>
    <font color="#FF0000">*</font><input type=text name=email><br><br>
    <img src="captcha/img.php?'.session_name()."=".session_id().'"><br>
    Введите текст с картинки:<br>
    <font color="#FF0000">*</font><input type=text name=captcha><br>
    <input type=submit name=submit value="Регистрация"><br>
    <br><a href="/?page=12"><span class="green">Смена пароля от игрового аккаунта</span></a></center>
    </form>';
     
function db_mssql_check_xss () {
    $url = html_entity_decode(urldecode($_SERVER['QUERY_STRING']));
    if ($url) {
        if ((strpos($url, '<') !== false) ||
            (strpos($url, '>') !== false) ||
            (strpos($url, '"') !== false) ||
            (strpos($url, '\'') !== false) ||
            (strpos($url, './') !== false) ||
            (strpos($url, '../') !== false) ||
            (strpos($url, '--') !== false) ||
            (strpos($url, '.php') !== false)
          )
        {
            die("Попытка взлома!");
        }
    }
    $url = html_entity_decode(urldecode($_SERVER['REQUEST_URI']));
    if ($url) {
        if ((strpos($url, '<') !== false) ||
            (strpos($url, '>') !== false) ||
            (strpos($url, '"') !== false) ||
            (strpos($url, '\'') !== false)
          )
        {
            die("Попытка взлома!");
        }
    }
 
}
 
/*
    Мощная функция обработки данных,
    защищает от XSS и SQL Injection
    поддержка защиты для MSSQL серверов
*/
 
function office_secure($check_string)
{
    $ret_string = $check_string;
    $ret_string = htmlspecialchars ($ret_string);
    $ret_string = strip_tags ($ret_string);
    $ret_string = trim ($ret_string);
    $ret_string = str_replace ('\\l', '', $ret_string);
    $ret_string = str_replace (' ', '', $ret_string);
    $ret_string  = str_replace("'", "", $ret_string );
    $ret_string  = str_replace("\"", "",$ret_string );
    $ret_string  = str_replace("--", "",$ret_string );
    $ret_string  = str_replace("#", "",$ret_string );
    $ret_string  = str_replace("$", "",$ret_string );
    $ret_string  = str_replace("%", "",$ret_string );
    $ret_string  = str_replace("^", "",$ret_string );
    $ret_string  = str_replace("&", "",$ret_string );
    $ret_string  = str_replace("(", "",$ret_string );
    $ret_string  = str_replace(")", "",$ret_string );
    $ret_string  = str_replace("=", "",$ret_string );
    $ret_string  = str_replace("+", "",$ret_string );
    $ret_string  = str_replace("%00", "",$ret_string );
    $ret_string  = str_replace(";", "",$ret_string );
    $ret_string  = str_replace(":", "",$ret_string );
    $ret_string  = str_replace("|", "",$ret_string );
    $ret_string  = str_replace("<", "",$ret_string );
    $ret_string  = str_replace(">", "",$ret_string );
    $ret_string  = str_replace("~", "",$ret_string );
    $ret_string  = str_replace("`", "",$ret_string );
    $ret_string  = str_replace("%20and%20", "",$ret_string );
    $ret_string = stripslashes ($ret_string);
    return $ret_string;
}
/*
    Обработка глобального POST массива
    защищает от XSS и SQL Injection
    поддержка защиты для MSSQL серверов
*/
function check_sql_inject()
  {
    $badchars = array("--","truncate","tbl_","exec","call",";","'","*","/"," \ ","drop",
        "select","update","delete","where", "-1", "-2", "-3","-4", "-5", "-6", "-7", "-8", "-9");
    foreach($_POST as $value)
    {
        foreach($badchars as $bad)
        {
            if(strstr(strtolower($value),$bad)<>FALSE)
            {
                die('Использованы недопустимые символы, <a href="'.$_SERVER['PHP_SELF'].'">вернитесь назад</a>');
            }
        }
    }
  }
 
check_sql_inject();
db_mssql_check_xss ();   
 
 
    if (isset($_POST['login']))
        {
            $Link = MySQL_Connect($DBHost, $DBUser, $DBPassword) or die ("Can't connect to MySQL");
            MySQL_Select_Db($DBName, $Link) or die ("Database ".$DBName." do not exists.");
         
            $Login = $_POST['login'];
            $Pass = $_POST['passwd'];
            $Repass = $_POST['repasswd'];
            $Email = $_POST['email'];
            $Capch = $_POST['captcha'];
        $Capch_img = $_SESSION['captcha_keystring'];
 
            $Login = StrToLower(Trim($Login));
            $Pass = StrToLower(Trim($Pass));
            $Repass = StrToLower(Trim($Repass));
            $Email = Trim($Email);
 
        if (empty($Login) || empty($Pass) || empty($Repass) || empty($Email))
            {
                echo "Все поля отмеченные <font color=red>*</font> обязательны к заполнению.";
            }
     
        elseif (ereg("[^0-9a-zA-Z_-]", $Login, $Txt))
            {
                echo "Неправильный формат логина.";
            }
         
        elseif (ereg("[^0-9a-zA-Z_-]", $Pass, $Txt))
            {
                echo "Неправильный формат пароля."; 
            }
     
        elseif (ereg("[^0-9a-zA-Z_-]", $Repass, $Txt))
            {
                echo "Неправильный формат повтора пароля."; 
            }
        elseif (StrPos('\'', $Email))
            {
                echo "Неправильный формат Email."; 
            } 
        else
            {
                $Result = MySQL_Query("SELECT name FROM users WHERE name='$Login'") or ("Can't execute query.");
             
        if (MySQL_Num_Rows($Result))
            {
                echo "Логин <b>".$Login."</b> уже используется.";
            }
     
        elseif ((StrLen($Login) < 4) or (StrLen($Login) > 10))
     
            {
                echo "Логин должен содержать больше 4 и не более 10 символов..";
            }
         
        elseif ((StrLen($Pass) < 4) or (StrLen($Pass) > 10))
     
            {
                echo "Пароль должен содержать больше 4 и не более 10 символов.";
            }
         
        elseif ((StrLen($Repass) < 4) or (StrLen($Repass) > 10))
            {
                echo "Повтор пароля должен содержать больше 4 и не более 10 символов.";
            }
         
        elseif ((StrLen($Email) < 4) or (StrLen($Email) > 25))
            {
                echo "Email должен содержать больше 4 и не более 25 символов.";
            }
     
        elseif ($Pass != $Repass)
            {
                echo "Пароли не совпадают.";
            }
 
        elseif ($Capch_img != $Capch)
            {
                echo "Неправильный код с картинки";
            }
 
        else
            {
     
                // $Salt = $Login.$Pass;
                // $Salt = md5($Salt);
                // $Salt = "0x".$Salt;
 
                $Salt = "0x".md5($Login.$Pass);
                MySQL_Query("call adduser('$Login', '$Salt', '0', '0', '0', '0', '$Email', '0', '0', '0', '0', '0', '0', '0', '', '', '$Salt')") or die ("Can't execute query.");
        $mysqlresult=MySQL_Query("select * from `users` WHERE `name`='$Login'");
        $User_ID=MySQL_result($mysqlresult,0,'ID');
        MySQL_Query("call usecash('$User_ID',1,0,1,0,500000,1,@error)") or die ("usecash failed!");
                echo "Аккаунт <b>".$Login.""."</b> успешно зарегестрирован.";
             
            }     
        } 
    }
 
    echo $Data; 
 
?>