Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.04.2013, 09:49
serega6531 serega6531 вне форума
Начинающий
 
Регистрация: 03.03.2013
Сообщения: 106
Версия Delphi: Delphi 7, XE5
Репутация: 10
Вопрос Minecraft лаунчер

Значит так. Я делаю minecraft лаунчер для моего сервера и мне нужно сделать подключение к php странице на сервере и получить номер сессии.
Подключаться надо к auth.php
PHP код:
\ <?php
define
('INCLUDE_CHECK',true);
require_once 
'functions.php';
include (
"connect.php");
$login=$_POST['user'];
$password=$_POST['password'];
$ver=$_POST['version'];

        if(
getGameInfo('launcher') == $ver){

            
$result mysql_query("SELECT $db_columnPass FROM $db_table WHERE $db_columnUser='$login'") or die ("Запрос к базе завершился ошибкой."); //извлекаем из базы все данные о пользователе с введенным логином
                
$myrow mysql_fetch_array($result);

            
$realPass $myrow[$db_columnPass];

                if (
checkPass($realPass,$password)) 
                {
                    
$sessid generateSessionId();
                    
$gamebuild=getGameInfo('build');

                    
mysql_query("UPDATE $db_table SET $db_columnSesId='$sessid' WHERE $db_columnUser = '$login'") or die ("Запрос к базе завершился ошибкой.");

                    
$dlticket md5($login);
                    echo 
$gamebuild.':'.$dlticket.':'.$login.':'.$sessid.':';
                }
            else {
                echo 
"Bad login";
                }
        }
        else{
            echo 
'Old version';
            }
?> 
functions.php
PHP код:
<?php
if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение данного файла!');

function 
generateSessionId(){
    
// generate rand num
    
srand(time());
    
$randNum rand(10000000002147483647).rand(10000000002147483647).rand(0,9);
    return 
$randNum;
}

function 
getGameInfo($type){
    include (
"connect.php");
    switch(
$type){
    case 
'build':
        
$query mysql_query("SELECT * FROM $db_GameDatatable WHERE $db_Propertycolumn = 'latest-game-build'") or die ("Запрос к базе завершился ошибкой.");    
            
$resource mysql_fetch_array($query);
            return 
$resource[$db_Valuecolumn];
    break;

    case 
'launcher':
        
$query mysql_query("SELECT * FROM $db_GameDatatable WHERE $db_Propertycolumn = 'launcher-version'") or die ("Запрос к базе завершился ошибкой."); 
            
$resource mysql_fetch_array($query);
            return 
$resource[$db_Valuecolumn];
    break;

    }
}

function 
checkPass($realPass,$password){
            if (
strlen($realPass) == 32)
            {
                
$cp md5($password);
            }
            else {
                if(
strpos($realPass,'$SHA$') !== false)
                {
                    
$ar preg_split("/\\$/",$realPass);
                    
$salt $ar[2];
                    
$cp '$SHA$'.$salt.'$'.hash('sha256',hash('sha256',$password).$salt);
                }
                else
                {
                    
$saltPos = (strlen($password) >= strlen($realPass) ? strlen($realPass) : strlen($password));
                    
$salt substr($realPass$saltPos12);
                    
$hash hash('whirlpool'$salt $password);
                    
$cp substr($hash0$saltPos) . $salt substr($hash$saltPos);
                }
            }
            
            if (
$realPass==$cp) {
                return 
true;
            }
            else {
                return 
false;
            }
}
?>
Подскажите, как это сделать?
  #2  
Старый 17.04.2013, 16:20
serega6531 serega6531 вне форума
Начинающий
 
Регистрация: 03.03.2013
Сообщения: 106
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию Ладно, другой вопрос

Ладно, другой вопрос. Почему в этом коде:
Код:
function CheckUser(Login, PassHash, version:string): string;
var
Flags, TargetFrameName, PostData, Headers: OleVariant;
begin
PostData:='login=' + login + '&password=' + PassHash +'&version=' + version;
WebBrouser1.Navigate('http://www.happyminers.ru/system/auth.php', Flags, TargetFrameName, PostData, Headers);
end;
Выходит ошибка на WebBrouser1 "Undeclared identifer"? На форме я его разместил.
Мне нужно получить исходный код страницы.
Сначала я хотел использовать indy, но там появлялась такая же ошибка с IdHTTP1. Подскажите способ решения этой проблемы(предпочтительнее с indy).
UPD Кому надо - могу предоставить исходники.

Последний раз редактировалось serega6531, 17.04.2013 в 19:54.
  #3  
Старый 17.04.2013, 20:11
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Простой пхпшник с выводом данных пост запроса удается вызвать?

Через денвер тестишь?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
  #4  
Старый 17.04.2013, 20:38
serega6531 serega6531 вне форума
Начинающий
 
Регистрация: 03.03.2013
Сообщения: 106
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Простой пхпшник с выводом данных пост запроса удается вызвать?

Через денвер тестишь?
До этого вобще не дошло. Лаунчер просто не компилируется. Ошибка Undeclared identifer, хотя я разместил браузер на форме.
  #5  
Старый 17.04.2013, 20:54
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

Цитата:
Сообщение от serega6531
Ладно, другой вопрос. Почему в этом коде:
Выходит ошибка на WebBrouser1 "Undeclared identifer"?
WebBrowser1
  #6  
Старый 17.04.2013, 21:30
serega6531 serega6531 вне форума
Начинающий
 
Регистрация: 03.03.2013
Сообщения: 106
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию

Цитата:
Сообщение от Snake22
WebBrowser1
Я уже понял, но ничего не поменялось.
  #7  
Старый 17.04.2013, 21:39
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

Цитата:
Сообщение от serega6531
Я уже понял, но ничего не поменялось.
тогда пиши так
Form1.WebBrouser1....
либо объяви фнкцию в классе формы на которой лежит твебброузер
примерно так:



а вообще по хорошему если ты собрался со страницы какие-то данные спарсить то не через браузер а через idhttp лучше сделать это

Последний раз редактировалось Snake22, 17.04.2013 в 21:46.
  #8  
Старый 18.04.2013, 10:19
serega6531 serega6531 вне форума
Начинающий
 
Регистрация: 03.03.2013
Сообщения: 106
Версия Delphi: Delphi 7, XE5
Репутация: 10
Печаль

Цитата:
Сообщение от Snake22
тогда пиши так
Form1.WebBrouser1....
либо объяви фнкцию в классе формы на которой лежит твебброузер
примерно так:



а вообще по хорошему если ты собрался со страницы какие-то данные спарсить то не через браузер а через idhttp лучше сделать это
Код:
function CheckUser(login, password, version:string) :boolean;
var
passHash:string;
Flags, TargetFrameName, PostData, Headers: OleVariant;
begin
passHash:=MD5DigestToStr(MD5String(password));
PostData:='login=' + login + '&password=' + PassHash +'&version=' + version;
main.WebBrowser1.Navigate('http://www.happyminers.ru/system/auth.php', Flags, TargetFrameName, PostData, Headers);
end;
Ничего не поменялось. А когда я использую idhttp выходит та же ошибка.

Цитата:
Сообщение от Snake22
тогда пиши так
Form1.WebBrouser1....
либо объяви фнкцию в классе формы на которой лежит твебброузер
примерно так:



а вообще по хорошему если ты собрался со страницы какие-то данные спарсить то не через браузер а через idhttp лучше сделать это
Упс, это работает. Вот:
Код:
main.Form1.IdHTTP1.Get(blablabla);
Тему можно закрывать.

Последний раз редактировалось serega6531, 18.04.2013 в 11:13.
  #9  
Старый 18.04.2013, 19:14
serega6531 serega6531 вне форума
Начинающий
 
Регистрация: 03.03.2013
Сообщения: 106
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию Ну?

Кто нибудь, закройте тему.
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter