Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: hebergratuit et requête http  (Lu 1339 fois)

0 Membres et 1 Invité sur ce sujet

DrPapino

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
hebergratuit et requête http
« le: Mars 26, 2017, 09:30:19 pm »
Bonjour :)

Je trafique un peu avec les requêtes http. J'ai un petit site, où l'on rentre dans des textbox un ID (d'une ville) et un nombre (d'habitants) associé. En cliquant sur un bouton OK, les données sont envoyées par POST à une page php, qui met à jour une base SQL.

index.html :

<!DOCTYPE html>
<html>
        <head>
                <title>Page Title</title>
        </head>
        <body>
                <form method="post" action="sql.php">
                         <p>ID <input type="text" name="id" /></p>
                         <p>Habitants <input type="text" name="habitants" /></p>
                        <input type="submit" value="OK"></p>
                </form>
        </body>
</html>

sql.php :

$id = $_POST['id'];
$habitants = $_POST['habitants'];

try { $bdd = new PDO('*********'); }
catch (Exception $e) { echo fail to connect; }

$req = $bdd->prepare('UPDATE table1 SET Habitants = :habitants WHERE ID = :id');
$req->execute(array(
        'habitants' => $habitants,
        'id' => $id,
        ));

En passant par index.html, tout se passe très bien. Mais j'aimerais passer par du c++ :

main.cpp :

#include <iostream>
#include <SFML/Network.hpp>

int main()
{
    sf::Http::Request request("sql.php", sf::Http::Request::Post);
    request.setBody("id=2&habitants=123");

    sf::Http http("http://www.thinkfeelcode.hebergratuit.net");
    sf::Http::Response response = http.sendRequest(request);

    if (response.getStatus() == sf::Http::Response::Ok)
        std::cout << response.getBody() << std::endl;
    else
        std::cout << "request failed" << std::endl;
       
    return 0;
}

Et là c'est le drame. Je reçois une réponse valide, mais qui ressemble à une redirection javascript, et surtout, qui ne prend pas tout en compte le body de ma requête et qui ajoute simplement "i=1" :

<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("106f21ea7eb7ee1eeb26f3ca060f25e3");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://www.thinkfeelcode.hebergratuit.net/sql.php?i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>

Le problème vient sans doute de mon hébergeur (hebergratuit), je ne sais pas comment le résoudre. Le problème en question ressemble fort à celui d'un sujet précédent :
https://fr.sfml-dev.org/forums/index.php?topic=20331.0

Avez-vous déjà utilisé cet hébergeur, et réussi à contourner le problème ?

Merci de vos retour.