Проблемы с отправкой данных на сервер

Тема в разделе "WASM.WIN32", создана пользователем djande, 27 мар 2011.

  1. djande

    djande New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2010
    Сообщения:
    17
    Доброго времени суток! Пытаюсь отправить данные на сервер с помощью API на MASM32, сервер ответ не даёт, а когда захожу по адресу PHP скрипта: http://arnoldgames.areal.ru/a.php , то там то, что я только что послал не отображается. В чём ошибка подскажите пожалуйста?

    Код программы отправки запроса:
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. include \masm32\include\windows.inc
    6. include \masm32\include\gdi32.inc
    7. include \masm32\include\user32.inc
    8. include \masm32\include\kernel32.inc
    9. include \masm32\include\wininet.inc
    10. include \masm32\macros\macros.asm
    11.  
    12. includelib \masm32\lib\gdi32.lib
    13. includelib \masm32\lib\user32.lib
    14. includelib \masm32\lib\kernel32.lib
    15. includelib \masm32\lib\wininet.lib
    16.  
    17. SendRequest PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    18. Main PROTO
    19.  
    20. .data?
    21. hInstance dd ?
    22.  
    23. .code
    24.  
    25. SendRequest PROC uses esi edi ebx url:DWORD,pageAddr:DWORD,postheader:DWORD,returnBuf:DWORD,bufLen:DWORD
    26. local hInternet:DWORD,hConnect:DWORD,hRequest:DWORD
    27. local readed:DWORD
    28. invoke RtlZeroMemory,returnBuf,bufLen
    29. invoke InternetOpen,CTXT("hoverlees"),INTERNET_OPEN_TYPE_PRECONFIG,0,0,0
    30. mov hInternet,eax
    31. invoke InternetConnect,hInternet,url,INTERNET_DEFAULT_HTTP_PORT,CTXT(0),0,INTERNET_SERVICE_HTTP,0,0
    32. mov hConnect,eax
    33. invoke HttpOpenRequest,hConnect,CTXT("POST"),pageAddr,0,0,0,0,0
    34. mov hRequest,eax
    35. invoke lstrlen,postheader
    36. mov ebx,eax
    37. invoke HttpSendRequest,hRequest,CTXT("Content-Type: application/x-www-form-urlencoded"),47,postheader,ebx
    38. invoke InternetReadFile,hRequest,returnBuf,bufLen,addr readed
    39. invoke InternetCloseHandle,hRequest
    40. invoke InternetCloseHandle,hConnect
    41. invoke InternetCloseHandle,hInternet
    42. mov eax,readed
    43. ret
    44. SendRequest ENDP
    45.  
    46. start:
    47. invoke GetModuleHandle,NULL
    48. mov hInstance,eax
    49. call Main
    50. invoke ExitProcess,NULL
    51.  
    52. Main PROC
    53. local retBuf[1000]:BYTE
    54. invoke SendRequest,CTXT("http://arnoldgames.areal.ru"),CTXT("/a.php"),CTXT("item1=yes&item2=no&item3=yes"),addr retBuf,1000
    55. invoke MessageBox,0,addr retBuf,CTXT("The Server returns"),MB_ICONINFORMATION
    56. ret
    57. main ENDP
    58.  
    59. end start
    Код PHP (a.php):
    Код (Text):
    1. <?php
    2. echo "Item1 is {$_POST["item1"]}\r\n";
    3. echo "Item2 is {$_POST["item2"]}\r\n";
    4. echo "Item3 is {$_POST["item3"]}\r\n";
    5. ?>
     
  2. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    djande
    смотри что возвращают функции и коды ошибок
    если все норм, снифером
     
  3. djande

    djande New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2010
    Сообщения:
    17
    Rustem, а где снифер скачать?
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.255
  5. djande

    djande New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2010
    Сообщения:
    17
    все заработало, проблема была в указании сервера, нужно указывать его без http:// .

    Не могу сделать следующего, как закачать на сервер целиком файл с жёсткого диска? Что нужно передавать PHP скрипту, чтобы он его принял??

    Нашёл 2 PHP скрипта, но так и не понял, куда передавать путь к файлу на жёстком диске? Подскажите пожалуйста.

    Код (Text):
    1. <?php
    2. $ip = getenv ('REMOTE_ADDR');
    3. $date=date("j F, Y, g:i a");
    4. $referer=getenv ('HTTP_REFERER');
    5.  
    6. $file_to_read = $_FILES['myfilevar']['tmp_name'];
    7. $file_data = implode("",file($file_to_read));
    8.  
    9. $fp = fopen("new_php.txt", 'w');
    10. fwrite($fp,$file_data);
    11. fclose($fp);
    12.  
    13. ?>
    Код (Text):
    1. <?php
    2.  
    3. if ($prr)
    4. {
    5.  
    6. $file =  fopen ("new_php.txt", "w");
    7. if(!file)
    8.  {echo ("ошибка открытия1");}
    9. fclose($file);
    10. if (copy ($HTTP_POST_FILES ["prc"] ["tmp_name"], "new_php.txt"))
    11. {echo ("Файл  скопирован");}
    12. else
    13. {echo ("ошибка открытия2");}
    14. }
    15.  
    16. ?>
    17.  
    18. <form action="price.php" method="post" enctype="multipart/form-data">
    19. <input type="file" name="prc">
    20. <input type="hidden" name="prr" value="1">
    21. <input type="submit" value="Отправить">
    22. </form>
     
  6. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    djande

    Во втором примере вот это
    Код (Text):
    1. <form action="price.php" method="post" enctype="multipart/form-data">
    2. <input type="file" name="prc">
    3. <input type="hidden" name="prr" value="1">
    4. <input type="submit" value="Отправить">
    5. </form>
    помести в html-файл. В поле типа "file" указано имя загружаемого на сервер файла "prc".

    А вот это
    Код (Text):
    1. <?php
    2.  
    3. if ($prr)
    4. {
    5.  
    6. $file =  fopen ("new_php.txt", "w");
    7. if(!file)
    8.  {echo ("ошибка открытия1");}
    9. fclose($file);
    10. if (copy ($HTTP_POST_FILES ["prc"] ["tmp_name"], "new_php.txt"))
    11. {echo ("Файл  скопирован");}
    12. else
    13. {echo ("ошибка открытия2");}
    14. }
    15.  
    16. ?>
    сохрани в php-файл "price.php". Он располагается на сервере и предназначен для сохранения загружаемого файла с именем "new_php.txt" и попытки его чтения.
     
  7. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Are you from India?