PHP - Как получить токены? - PullRequest
3 голосов
/ 11 января 2011

Мне сказали, что мне нужно проверить токены ниже, но я не уверен, с чего начать.У меня есть только публичный доступ к веб-сайту, с которого я получаю данные.Кто-то объясняет мне токены или приводит пример, чтобы заставить меня двигаться?

Нужен ли мне доступ к другому серверу?

function send_CAD($number, $street, $website, $f_opts = true){         
    $year   = date('Y', time());    
    $number = trim($number);
    $street = urlencode(trim($street));
    $post_data = "__EVENTTARGET=&__EVENTARGUMENT=&".
                 "__VIEWSTATE=/wEPD...&" .
                 "__EVENTVALIDATION=/wEWNw...&".
                 "txtAddrNum=$number&listStDir=&";
...

Ответы [ 2 ]

4 голосов
/ 12 января 2011

Я не совсем уверен, что именно вы спрашиваете, поэтому вот ответ в обоих направлениях:

Если у вас есть полный URL, который вы пытаетесь проанализировать, используйте parse_url:

$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);

В приведенном выше примере будет выведено:

Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)

Если у вас есть только часть запроса в URL, вы можете использовать parse_str:

parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

Если у вас естьURL-адрес, который вы пытаетесь создать, использует http_build_query:

$data = array('foo'=>'bar',
              'baz'=>'boom',
              'cow'=>'milk',
              'php'=>'hypertext processor');

echo http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor

Если вам нужно выполнить проверку данных, как только вы их получите, вы можете использовать встроенные функции filter_inputс параметрами проверки / очистки в PHP:

http://us2.php.net/manual/en/ref.filter.php
http://us2.php.net/manual/en/function.filter-input-array.php

http://us2.php.net/manual/en/filter.filters.validate.php
http://us2.php.net/manual/en/filter.filters.sanitize.php

Пример из filter_validate_array страница:

/* data actually came from POST
$_POST = array(
    'product_id'    => 'libgd<script>',
    'component'     => '10',
    'versions'      => '2.0.33',
    'testscalar'    => array('2', '23', '10', '12'),
    'testarray'     => '2',
);
*/

$args = array(
    'product_id'   => FILTER_SANITIZE_ENCODED,
    'component'    => array('filter'    => FILTER_VALIDATE_INT,
                            'flags'     => FILTER_REQUIRE_ARRAY, 
                            'options'   => array('min_range' => 1, 'max_range' => 10)
                           ),
    'versions'     => FILTER_SANITIZE_ENCODED,
    'doesnotexist' => FILTER_VALIDATE_INT,
    'testscalar'   => array(
                            'filter' => FILTER_VALIDATE_INT,
                            'flags'  => FILTER_REQUIRE_SCALAR,
                           ),
    'testarray'    => array(
                            'filter' => FILTER_VALIDATE_INT,
                            'flags'  => FILTER_REQUIRE_ARRAY,
                           )

);

$myinputs = filter_input_array(INPUT_POST, $args);

var_dump($myinputs);
echo "\n";

Приведенный выше пример выдаст:

array(6) {
  ["product_id"]=>
      array(1) {
        [0] => string(17) "libgd%3Cscript%3E"
      }
  ["component"]=>
      array(1) {
        [0] => int(10)
      }
  ["versions"]=>
      array(1) {
        [0] => string(6) "2.0.33"
      }
  ["doesnotexist"]=>
      NULL
  ["testscalar"]=>
      bool(false)
  ["testarray"]=>
      array(1) {
        [0] => int(2)
      }
}
0 голосов
/ 12 января 2011

VIEWSTATE и т. Д. Используются в ASP.NET. При обработке их в PHP нет ничего общего с ними. Если ASP.NET публикует форму на вашей php-странице, вы можете выполнить быстрый анализ, выполнив:

<code>echo "<pre>".print_r($_REQUEST, TRUE)."
";

и попытайтесь выяснить, какие из предметов вас интересуют. Тогда вы можете просто получить эти предметы, выполнив, например ::

$itemid = $_REQUEST['itemid'];

Вы можете игнорировать «токены», которые вам не нужно обрабатывать.

Вы должны попытаться заменить $ _REQUEST на $ _GET или $ _POST в зависимости от того, как вызывается ваша php-страница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...