За последние 24 часа нас посетил 18201 программист и 1600 роботов. Сейчас ищут 972 программиста ...

Переписать JS функцию на PHP

Тема в разделе "PHP для новичков", создана пользователем murich, 17 май 2008.

  1. murich

    murich Активный пользователь

    С нами с:
    28 дек 2007
    Сообщения:
    8
    Симпатии:
    0
    Мне нужно авторизироваться в панель управления с помощью CURL.
    На странице входа в панель управления присутствует некая JS функция, которая возвращает hidden обьект формы определенного имени и знавения. Цель- получить аналог функции на php
    JS функция:
    [js]
    <script type="text/javascript">
    var _y7M = '';
    function _hH(s) {
    var i;
    var r = "";
    var l = s.length - 1;
    var k = s.substr(l, 1);

    for(i = 0; i < l; i++) {
    c = s.charCodeAt(i) - k;
    if(c < 32) {
    c = 127 - (32 - c);
    }
    r += String.fromCharCode(c);
    }
    return r;
    }
    _u8n = _hH('Dqvx}|(|"xmE*pqllmv*(viumE*mp9:<<;<;=;9*(~it}mE*@A?AA;*F8');
    </script>
    [/js]
    Dqvx}|(|"xmE*pqllmv*(viumE*mp9:<<;<;=;9*(~it}mE*@A?AA;*F8 - это меняется каждый раз при загрузке страницы авторизации, на основе этой строки формируется hidden элемент формы

    [js]<script type="text/javascript">document.write(_u8n)</script>[/js] - это и выводит hidden элемент.
    В результате работы данной функции получается следующая строка:
    HTML:
    1. <input type="hidden" name="ewh1244389611" value="897993">
    Я попробовал написать аналог:
    PHP:
    1. function yy($s) {  
    2.     //var i;
    3.     $r = "";  
    4.     $l = strlen($s) - 1;  
    5.     $k = substr($s, 'l', '1');  
    6.  
    7.     for($i = 0; $i < $l; $i++) {  
    8.         $c = ord($s[$i]) - $k; //s.charCodeAt(i) - k;  
    9.         if($c < 32) $c = 127 - (32 - $c);
    10.        $r += chr($c); // r += String.fromCharCode(c);  
    11.     }  
    12.     return $r;
    13. }
    Но
    PHP:
    1. echo yy('Dqvx}|(|"xmE*pqllmv*(viumE*mp9:<<;<;=;9*(~it}mE*@A?AA;*F8');
    выводит просто 18. Ничего у меня не получилось. Прошу помочь получить правильный аналог данной функции. C яваскриптом у меня совсем туго...
     
  2. NOmeR1

    NOmeR1 Активный пользователь

    С нами с:
    11 май 2008
    Сообщения:
    97
    Симпатии:
    0
    PHP:
    1. <?php
    2. function yy($s) {
    3.     $r = '';
    4.     $l = strlen($s) - 1;
    5.     $k = substr($s, $l, 1);
    6.     for($i = 0; $i < $l; $i++) {
    7.         $c = ord($s{$i}) - $k;
    8.         if($c < 32) $c = 127 - (32 - $c);
    9.             $r .= chr($c);
    10.     }
    11.     return $r;
    12. }
    13. echo yy('Dqvx}|(|"xmE*pqllmv*(viumE*mp9:<<;<;=;9*(~it}mE*@A?AA;*F8');
    14. ?>
     
  3. murich

    murich Активный пользователь

    С нами с:
    28 дек 2007
    Сообщения:
    8
    Симпатии:
    0
    NOmeR1, Спасибо.