www.dannyhiemstra.nl
Correct me if I'm wrong.
Alleen het probleem is in php komt wel een post aan maar zonder variablen..
www.dannyhiemstra.nl
http://www.php.net/manual...s.file-upload.post-method
[ Voor 30% gewijzigd door Postman op 30-12-2002 20:06 ]
Ik zal nog even doorzoeken, want als dit mogelijk is, zal dat wat jij wilt ook wel mogelijk zijn...
Woei:
unpack()
Volgens mij doet dat wat je wilt?
Overigens had je dit kunnen vinden met 10 secs zoeken op php.net
Gewoon in je browser als url: http://www.php.net/$zoekvraag, in dit geval bijvoorbeeld http://www.php.net/binary
[ Voor 19% gewijzigd door eXtReMeBiE op 30-12-2002 20:03 ]
Lijkt mij meer voor dataconversie. Wat hij zoekt is hoe je data ontvangt, wat jij geeft is leuk, maar voor later. Op het moment ontvangt hij namelijk niks.eXtReMeBiE schreef op 30 December 2002 @ 20:02:
Ik heb met PHP wel de functie pack() gevonden, maar volgens mij doet die het omgekeerde van wat jij wilt: normaal naar binary...
Ik zal nog even doorzoeken, want als dit mogelijk is, zal dat wat jij wilt ook wel mogelijk zijn...
Woei:
unpack()
Volgens mij doet dat wat je wilt?
Hij pakt die binary uit maar hoe krijg ik nu de binary data in de $binarydata var?
Want ik kan via geen manier die ik al heb geprobeert ($_FILES,$_POST,$_SERVER['HTTP_RAW_POST_DATA']) de data vinden...
www.dannyhiemstra.nl
Doe met een browser een file posten en kijk wat die allemaal voor extra's meestuurt...
Oops, dat weet je dus nog niet... Hoe wil je de data versturen? Via de url (http://woei.nl/index.php?toot=blaat) of?
BTW: de manier waarop je de data kunt opvragen, hang af van hoe je de data wilt versturen, dus het lijkt mij het beste dat je dat het eerste bedenkt, de functie voor het ophalen lijkt me dan niet zo moeilijk
[ Voor 79% gewijzigd door eXtReMeBiE op 30-12-2002 20:13 ]
Dit is test.php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <? $content = "------------------------------------\n"; $content .= time() . " - " . $_SERVER['REQUEST_METHOD'] . "\n"; while(list($key,$val) = each($_POST)) { $content .= "$key = $val\n"; } $content .= "####HTTP_RAW_POST_DATA####\n"; while(list($key,$val) = each($HTTP_RAW_POST_DATA)) { $content .= "$key = $val\n"; } $content .= "####FILES####\n"; while(list($key,$val) = each($_FILES)) { $content .= "$key = $val\n"; } $filename = "log.txt"; $fp = fopen($filename, 'a'); fwrite($fp, $content); ?> |
http://www.chat-stars.com/log.txt dat komt eruit
We hebben ook geprobeert de data naar phpinfo te posten en dit komt eruit:
http://www.chat-stars.com/phpinfo.html
www.dannyhiemstra.nl
http://www.php.net/manual...ile-upload.put-method.php
op: http://www.php.net/manual/en/features.file-upload.php#In order to enable $HTTP_RAW_POST_DATA, you can set always_populate_raw_post_data to On either in php.ini or .htaccess
had je daar al naar gekeken?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| int send_vdata(const char* ipa, int port, const Cvirtual_binary& d) { int error = 0; SOCKET s = socket(PF_INET, SOCK_STREAM, 0); if (s == -1) error = 1; else { sockaddr_in d_address; d_address.sin_family = AF_INET; d_address.sin_port = htons(port); d_address.sin_addr.S_un.S_addr = inet_addr(ipa); if (connect(s, reinterpret_cast<const sockaddr*>(&d_address), sizeof(sockaddr_in))) error = 1; else { if (d.size() != send(s, reinterpret_cast<const char*>(d.data()), d.size(), 0)) error = 1; } closesocket(s); } return error; } int http_post(const char* host, const char* path, const Cvirtual_binary& d) { hostent* e = gethostbyname(host); if (!e || e->h_addrtype != 2 || e->h_length != sizeof(in_addr)) return 1; strstream msg; msg << "POST " << path << " HTTP/1.1" << endl << "Content-Length: " << d.size() << endl << "Host: " << host << endl << endl; msg.write(reinterpret_cast<const char*>(d.data()), d.size()); return send_vdata(inet_ntoa(*reinterpret_cast<in_addr*>(*e->h_addr_list)), 80, Cvirtual_binary(msg.str(), msg.pcount())); } |
www.dannyhiemstra.nl
ik heb namelijk weinig / geen verstand van .htaccess
EDIT:
In de phpinfo staat:
always_populate_raw_post_data 0
heeft dit er iets mee te maken?
[ Voor 31% gewijzigd door chuxiej op 30-12-2002 20:38 ]
www.dannyhiemstra.nl
school?
Klaar voor een nieuwe uitdaging.
We willen dan dus dat via de C++ client automatisch de game results naar een php script wordt gestuurt die dat dan in een mysql database neerzet.
www.dannyhiemstra.nl
Verwijderd
Umz, waarom zo moeilijk doen dan?FireFoxx schreef op 30 December 2002 @ 20:40:
Nee we maken een ladder voor een spel waarvan de ladder 'dood' drijgt te gaan.
We willen dan dus dat via de C++ client automatisch de game results naar een php script wordt gestuurt die dat dan in een mysql database neerzet.
file.php?value1=1&value2=2&value3=3&sec=DFGH4657wzxchgbn467w4hnsfgn46
sec is een MD5 die je maakt met value1+2+3
b.v.
1
| $goeiecode = MD5("codeklopt ". $value1 ."-". $value2 ."-". $value3); |
dan moet je met C++ MD5 de zelfde code maken en die posten op sec, dan vergelijken of sec het zelfde is als $goeiecode.
Zo heb ik verschillende post scripts gemaakt. b.v. voor het openen van een topic op een forum vanuit een andere website.
Gewoon zorgen dat niemand de codering manier(dus hoe je md5 uitvoert, die volgorde + overige losse tekens) te pakken krijgt.
Misschien is het een idee om iets te doen met sockets? Moet je wel een PHP-script op de server op de achtergrond kunnen laten draaien, dus ligt een beetje aan de server toegang die je hebt. Vanuit C++ kun je al een socket aanroepen, dus moet je alleen aan de PHP-kant een beetje knutselen. Zie http://www.php.net/manual/en/ref.sockets.php
Zonder SSH op de server is werken met C++ erg lastig.
POST. PUT is niet bedoeld voor dit soort requests, POST wel.FlamerX schreef op 30 December 2002 @ 20:21:
Maak je in je C++ programma gebruik van post of put?? Post is namelijk voor browsers. Put is voor filestreams. Lijkt me dus beter als je gebruik maakt van put, ipv post (of je moet alle headers die een browser stuurt namaken).
http://www.php.net/manual...ile-upload.put-method.php
Nu kan toevallig de client aangepast worden, maar ik vind het niet netjes om een workaround op de client te implementeren voor een server-probleem.
wellicht niet overbodig even naar de print_r () en var_dump () functies te kijkenFireFoxx:
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <? /* ... */ while(list($key,$val) = each($_POST)) { $content .= "$key = $val\n"; } /* ... */ while(list($key,$val) = each($HTTP_RAW_POST_DATA)) { $content .= "$key = $val\n"; } /* ... */ while(list($key,$val) = each($_FILES)) { $content .= "$key = $val\n"; } ?>
</offtopic>
[ Voor 37% gewijzigd door drm op 30-12-2002 22:20 . Reden: layout ]
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
OlafvdSpek schreef op 30 december 2002 @ 21:26:
Een (volwaardig) POST request hoeft niet multipart/form-data encoded te zijn.
Nu kan toevallig de client aangepast worden, maar ik vind het niet netjes om een workaround op de client te implementeren voor een server-probleem.
Waarom is het een server-probleem? Je client verstuurd blijkbaar geen geldige POST-request...
En binaire data moet in principe multipart/form-data encoded worden, bij mijn weten.
Raw POST data is now available as "php://input" stream
Misschien een optie?
Programmer - an organism that turns coffee into software.
Omdat een C++ script de POST data wel kan lezen.ACM schreef op 31 December 2002 @ 00:18:
Waarom is het een server-probleem?
Waaruit blijft dat? Alleen omdat PHP het schijnbaar niet kan lezen?Je client verstuurd blijkbaar geen geldige POST-request...
Daar heb ik niks over kunnen vinden in de HTTP/1.1 RFC.En binaire data moet in principe multipart/form-data encoded worden, bij mijn weten.