форум vBSupport.ru > vBulletin > Вопрос — Ответ
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
Orgazm
Простоузер
Default Как это сделать? Подскажите....вин
0

Всем приветик
Подскажите, пожалуйста. Есть сайт с проверкой вин-кода - например, вот этот. Там проверка осуществляется с помощью cgi-скрипта. Как написать скрипт, который подключался бы туда, проверял вин и выдавал инфу...хочу разместить у себя на сайте. Заранее спасибо.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
Ghost
Гуру
 
Ghost's Avatar
Default
1

Orgazm, придется немного поучить php-программирование. понадобится функция fsockopen. что нужно сделать:
  1. открыть этой функцией сокет на указанный сайт
  2. сформировать и отправить HTTP-запрос
  3. получить ответ, который обработать, вычленить нужные данные и вывести на своей странице.
можно проще, если тебя не напрягает внешний вид и хочется просто предоставить возможность быстрой проверки даже без внедрения дополнительного кода в свои скрипты - просто влепить указанную ссылку в iframe на странице.
 
 
Orgazm
Простоузер
Default
0

IoGhost, спасибо. по поводу Айфрейма - это понятно Хотелось бы покрасивее Попробую разобраться со способом, который ты написал.

To ALL:
Какие ещё комменты?
 
 
Ghost
Гуру
 
Ghost's Avatar
Default
1

Quote:
Originally Posted by Orgazm View Post
Какие ещё комменты?
вот такие
PHP Code:
<?php

$vin 
= isset ($_GET['vin']) ? trim ($_GET['vin']) : '';

?>
<html>
<body>
<b>Request form:</b><br />
<form method="get" action="vin.php">
<input type="text" name="vin" value="<?php echo $vin?>" />
<input type="submit" />
</form>
<?php

if ($vin)
{
?>
<hr noshade />
<b>Request result:</b><br />
<?php

    $fp 
fsockopen ('www.bmw-z1.com'80$errno$errstr30);
    if (!
$fp)
    {
        echo 
"$errstr ($errno)<br />\n";
    }
    else
    {
        
$post 'lang=english&vin=' urlencode ($vin);

        
$out "POST /VIN/VINdecode-e.cgi HTTP/1.1\r\n";
        
$out.= "Host: www.bmw-z1.com\r\n";
        
$out.= "Referer: http://www.bmw-z1.com/VIN/VINdecode-e.cgi\r\n";
        
$out.= "Content-Type: application/x-www-form-urlencoded\r\n";
        
$out.= "Content-Length: " strlen ($post) . "\r\n";
        
$out.= "\r\n";
        
$out.= $post;

        
fwrite ($fp$out);

        
$res '';
        while (!
feof ($fp))
        {
            
$res.= str_replace ("\n"" "trim (fgets ($fp128)));
        }

        
fclose ($fp);

        
$res preg_replace ("/^(.*)(value=\"english\" ><\/form>)/i",    ""$res);
        
$res preg_replace ("/(<br><p align=left>\[Notice\])(.*)$/i",    ""$res);
        echo 
$res;
    }

}

?>
</body>
</html>
 
 
Orgazm
Простоузер
Default
0

спасибо! попробую чуть попозже.

Orgazm добавил 04.02.2009 в 12:51
IoGhost, попробовал! Ну ты просто мозг! Всё работает на ура, подтормаживает правда - ну да ладно. Спасибо огромное.

Orgazm добавил 04.02.2009 в 13:21
кстати, а ты не знаешь, как сделать, чтобы если вводишь неправильный номер, то отображалась не вся эта страница - тут, а просто Error : Input data was not valid. ? Что нужно в код дописать... Т.е. чтобы эта лабуда не отображалась:
* Service will change/stop without notice.
** This page is link free for non-commercial purpose.
*** Data is compatible with BMW ETK as of 11/2008.
**** Script/Program access will be blocked out.
Please donate for this project.

©Copyright 1998 - 2008 by Mitsuhiko Kanekatsu, All rights reserved.

[BMW-Z1.COM] Top page

[BMW Z1 Blog] - Japanese

Last edited by Orgazm : 02-04-2009 at 02:24 PM. Reason: Добавлено сообщение
 
 
Ghost
Гуру
 
Ghost's Avatar
Default
1

ну, например, можно так:
PHP Code:
<?php

$vin 
= isset ($_GET['vin']) ? trim ($_GET['vin']) : '';

?>
<html>
<body>
<b>Request form:</b><br />
<form method="get" action="vin.php">
<input type="text" name="vin" value="<?php echo $vin?>" />
<input type="submit" />
</form>
<?php

if ($vin)
{
?>
<hr noshade />
<b>Request result:</b><br />
<?php

    $fp 
fsockopen ('www.bmw-z1.com'80$errno$errstr30);
    if (!
$fp)
    {
        echo 
"$errstr ($errno)<br />\n";
    }
    else
    {
        
$post 'lang=english&vin=' urlencode ($vin);

        
$out "POST /VIN/VINdecode-e.cgi HTTP/1.1\r\n";
        
$out.= "Host: www.bmw-z1.com\r\n";
        
$out.= "Referer: http://www.bmw-z1.com/VIN/VINdecode-e.cgi\r\n";
        
$out.= "Content-Type: application/x-www-form-urlencoded\r\n";
        
$out.= "Content-Length: " strlen ($post) . "\r\n";
        
$out.= "\r\n";
        
$out.= $post;

        
fwrite ($fp$out);

        
$res '';
        while (!
feof ($fp))
        {
            
$res.= str_replace ("\n"" "trim (fgets ($fp128)));
        }

        
fclose ($fp);

        
$res preg_replace ("/^(.*)(value=\"english\" ><\/form>)/i",    ""$res);
        
$res preg_replace ("/(<br><p align=left>\[Notice\])(.*)$/i",    ""$res);

        if (
preg_match ("/Error/"$res))
        {
            
$res preg_replace ("/^(.*)Error([^\.]+)\.(.*)$/""<b style='color:red'>Error</b>\\2."strip_tags ($res));
        }

        echo 
$res;
    }

}

?>
</body>
</html>
учти, я написал только примерный простенький скрипт. по-хорошему, нужно бы еще проверять код ответа HTTP, т.е. например если сервер доступен, но скрипт переместили в другое место и выдается ответ "404 Not Found". или если во время работы скрипта произошла ошибка - тоже нужно как-то обрабатывать и такую ситуацию. короче, совершенству нет предела. тебе остается перед выводом $res ("echo $res;") просто проверять его содержимое на наличие каких-либо последовательностей символов (preg_match) и заменять значение переменной на нужное тебе ($res = '...').
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 01:25 AM.


Powered by vBulletin® Version 3.5.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...