подскажите лучший вариант

Discussion in 'PHP' started by Romaxa55, 3 Aug 2011.

  1. Romaxa55

    Romaxa55 Banned

    Joined:
    19 Oct 2005
    Messages:
    144
    Likes Received:
    30
    Reputations:
    4
    дано: (каждый раз разные значения придется парсить через curl)
    Code:
    <script>
    function getAntiSpamFieldName() {
    	var iii = 4; iii = iii - 5; iii = iii - 16; iii = iii + 4; iii = iii + 5; iii = iii + 21; var ii = 4; ii = ii + 23; ii = ii + 10; ii = Math.floor(ii / 6); ii = ii - 4; var iiii = 4; iiii = iiii * 8; iiii = Math.floor(iiii / 6); iiii = iiii - 21; iiii = Math.floor(iiii / 17); iiii = iiii + 5; var i = 4; i = i - 13; i = i - 16; i = i * 11; i = i + 277; 
    
    	var arr = new Array();
    	var div = document.getElementById('antispam');
    	var childList = div.childNodes; 
    	var re = new RegExp("(\\d{1,2})(\\w\\w)");
    	var retval = '';
    
    	for(var m=0; m < childList.length; m++){
    		if (childList[m].nodeType == 8){
    			value = childList[m].nodeValue;
    			var rem = re.exec(value);
    			arr[RegExp.$1] = RegExp.$2;
    		}
    	}
    	var iarr = new Array(i, ii, iii, iiii);
    	for (m=0; m<4; m++){retval+=arr[iarr[m]]};
    	return retval;
    }
    </script>

    затем

    Code:
      var ans_name = 'f' + getAntiSpamFieldName();
    и
    в
    итоге
    Code:
    <input type=\"hidden\" " + "name=" + ans_name + " value=\"1\" />" 
    В результате должны получить что то вроде

    f363666d7=1


    Нужен совет в парсе функции. как понимаете она создана для того что бы с ней помучаться

    или можно преобразовать данную функцию в пхп..
     
    #1 Romaxa55, 3 Aug 2011
    Last edited: 3 Aug 2011
  2. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    с ссылку откуда парсишь?
     
  3. Romaxa55

    Romaxa55 Banned

    Joined:
    19 Oct 2005
    Messages:
    144
    Likes Received:
    30
    Reputations:
    4
    Разгадал загадку всеж...


    PHP:
    <?php
    //Будем считать что спарсили все начения i
    $iii 4
    $iii floor($iii 13); 
    $iii $iii 5
    $iii $iii 8
    $iii $iii 7
    $iii $iii 23
    $iii $iii 30

    $ii 4
    $ii floor($ii 9); 
    $ii $ii 9
    $ii $ii 16
    $ii $ii 142

    $iiii 4
    $iiii $iiii 17;
    $iiii $iiii 19
    $iiii $iiii 5
    $iiii $iiii 19
    $iiii $iiii 707

    $i 4
    $i floor($i 18); 
    $i $i 8
    $i $i 14
    $i $i 12
    //Будем считать что спарсили все начения i

    //так же спарсили <div id="antispam" style="display: none">
    $antispam "<!-- block033 --><!-- block198 --><!-- block284 --><!-- block347 --><!-- block4e2 --><!-- block5b1 --><!-- block61e --><!-- block758 --><!-- block8d8 --><!-- block9d4 --><!-- block107b --><!-- block11b8 --><!-- block12a4 --><!-- block13f7 --><!-- block141a --><!-- block159c -->";
    //так же спарсили <div id="antispam" style="display: none">

    //Создаем массив с 0 до 15 со значениями block033 = block 0-номер масива 33 - значение масива и т.д.
    preg_match_all("((\d{1,2})(\w\w))",$antispam,$match);
    //Создаем массив с 0 до 15 со значениями block033 = block 0-номер масива 33 - значение масива и т.д.

    //подсчитаные значения i в виде массива
    $array1 = array($i,$ii,$iii,$iiii);
    //подсчитаные значения i в виде массива

    //берем чисто значения которые напарсили preg_match_all("((\d{1,2})(\w\w))",$antispam,$match);
    $array2 $match[2]; // [0] => 33 [1] => 98 [2] => 84 [3] => 47 [4] => e2 [5] => b1 [6] => 1e [7] => 58 [8] => d8 [9] => d4 [10] => 7b [11] => b8 [12] => a4 [13] => f7 [14] => 1a [15] => 9c
    //берем чисто значения которые напарсили preg_match_all("((\d{1,2})(\w\w))",$antispam,$match);

    //Цикл сейчас начнем брать 4 элемента массива которые нам нужны
    for ($m=0;$m<4;$m++)
    {
    $result[]= $array2[$array1[$m]]; //то что подсчиталось в i=2, ii=2, iii=13, iiii=4, элементы которые нам нужны. 
    }
    //Цикл сейчас начнем брать 4 элемента массива которые нам нужны

    //$result = [0] => 84 [1] => 84 [2] => f7 [3] => e2
    $result implode("",$result); // Сливаем в единое
    $result "f".$result// var ans_name = 'f' + getAntiSpamFieldName(); типа того что то

    //Антиспам защита разгадана  f8484f7e2
    //Позже выложу полнофункциональную функцию.
    ?>


    Ребята вот дальше помощь нужна, что то туплю..
    Запарил на том что необходимо напарсить значения i,ii,iii,iiii дело в том что как текст я выдергиваю функцию.. а вот подсчитать как лучше.. возможно ли как то в js выполнить на лету? или на пыхе..
     
    #3 Romaxa55, 3 Aug 2011
    Last edited: 3 Aug 2011
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Romaxa55 вы уверены, что функция меняется после каждой загрузки страницы?
     
    _________________________
  5. Romaxa55

    Romaxa55 Banned

    Joined:
    19 Oct 2005
    Messages:
    144
    Likes Received:
    30
    Reputations:
    4
    Меняется значения i iii iiii ii там она зависит от сессии, один раз значения принимаются функцию успел скопировать, доработалеще не тестировал.. а так огромное спасибо по завершениию отпишусь