Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2017, 14:01   #1
Metrologik
Пользователь
 
Регистрация: 19.10.2014
Сообщений: 12
По умолчанию Как переделать код PHP на VBA?

Добрый день! Как переделать код PHP под VBA?

Код:
function Signature( $params, $api_key )
{
$params = array(
    'timestamp' => '1501052684',
    'login'     => 'YourLogin',
    'phone'     => '0',
    'sender'    => 'smstest'
    'text'      => 'Long text'
);
 
//сортировка по алфавиту
    ksort( $params );
    reset( $params );
  
//преобразовывание результата сначала в строку, потом в md хеш
    return md5( implode( $params ) . $api_key );
}
Metrologik вне форума Ответить с цитированием
Старый 26.07.2017, 14:54   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Кросс:
http://www.planetaexcel.ru/forum/ind...-kod-php-v-vba
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 26.07.2017, 15:07   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Учитывая что здесь только задание массива и нет реализации остальных функций, то никак.
p51x вне форума Ответить с цитированием
Старый 31.07.2017, 03:02   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Примерно так получится:
Код:
Function CreateURL(ByVal URL$, ParamArray params()) As String
    On Error Resume Next
    Dim dic As New Dictionary, i&, j&, tmp$, login$, APIkey$, arr, signature$, LoginAndKey$

    dic.Add "timestamp", GetTimestamp
    dic.Add "return", "xml"

    If Not IsMissing(params) Then
        For i = LBound(params) To UBound(params)
            If params(i) Like "?*=?*" Then dic.Add Split(params(i), "=")(0), Split(params(i), "=", 2)(1)
        Next i
    End If

    ' сначала надо проверить, заданы ли логин и API ключ
    If dic.Exists("LoginAndKey") Then        ' на случай проверки логина-ключа
        login$ = Split(dic.Item("LoginAndKey"), "|")(0)
        APIkey$ = Split(dic.Item("LoginAndKey"), "|", 2)(1)
        dic.Remove "LoginAndKey"
    Else        ' берем ранее сохранённые настройки
        login$ = Trim(SETT.GetText("TextBox_Login"))
        APIkey$ = Trim(SETT.GetText("TextBox_APIkey"))
    End If
    dic.Add "login", login$

    ' сортировка параметров
    arr = dic.Keys
    For i = 0 To UBound(arr)
        For j = 0 To UBound(arr) - 1
            If arr(j) > arr(j + 1) Then tmp$ = arr(j): arr(j) = arr(j + 1): arr(j + 1) = tmp
        Next j
    Next i

    ' формируем строку из значений параметров
    For i = 0 To UBound(arr)
        signature$ = signature$ & dic.Item(CStr(arr(i)))
    Next i
    ' Debug.Print signature$ & APIkey$
    'signature$ = GetHash(signature$ & APIkey$) ' old version - sometimes it doesn't work
    signature$ = Calculate_MD5(signature$ & APIkey$)        ' new version

    ' Debug.Print signature$
    dic.Add "signature", signature$

    Dim key, parameters$, encode As Boolean
    For Each key In dic.Keys
        encode = InStr(1, "login|signature|timestamp|return|phone|sender", key, vbTextCompare) = 0
        parameters$ = parameters$ & IIf(parameters$ = "", "?", "&") & key & "=" & _
                      IIf(encode, URL_EncodeAll(dic.Item(key)), dic.Item(key))
    Next
    CreateURL = PROTOCOL & URL$ & parameters$
    Set dic = Nothing
End Function
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переделать код? - C (СИ) username12 Общие вопросы C/C++ 2 18.12.2015 17:07
Как переделать код Дмитрий_dz Общие вопросы Delphi 3 17.12.2012 01:50
как переделать код delphi на php delphihelp Помощь студентам 1 17.03.2012 11:34
как переделать код макроса омарат Microsoft Office Excel 1 25.05.2010 20:57
Как переделать код? P®o©omp@s Помощь студентам 2 26.10.2009 19:21