IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Etrange, mes echo ne marchent plus :?


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Etrange, mes echo ne marchent plus :?
    Bonjour à tous !

    J'ai un soucis, je ne comprend plus rien : après une boucle foreach, je n'arrive pas à faire sortir le moindre echo

    [script de requête HTTP POST]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    <?php
    $nom = '*****';
    $pass = '*********';
    $host='http://*******.fr/';
    $url = $host.'allianz.php';                 
    $referer = $host.'login.php';
    $doc = new DOMDocument();
    @$doc->loadHTMLFile($referer);
    $tags = $doc->getElementsByTagName('input');
    foreach ($tags as $key=>$tag) {
    	if ($key == 1){$login_value =$tag->getAttribute('value');}
    	if ($key == 2){$input_name =$tag->getAttribute('name');}
    	if ($key == 3){$input_pass = $tag->getAttribute('name');}
    	if ($key == 4){$input_blank =$tag->getAttribute('name');$blank_value =$tag->getAttribute('value');}
    }
    //unset($doc,$tags);
    // voici nos variables POST de connexion 
    $data = array(
    	'w'=>'1024:768',//résolution écran// nécéssaire pour le width du td comme critère d'extraction html ?
    	'login'=>$login_value,//id de login = unix time stamp
    	"$input_name" =>$nom,//Mon pseudo - les noms de champs changent
    	"$input_pass"=>$pass,//Mon pass 
    	"$input_blank"=> $blank_value,//?
    	's1.x'=>25,//?
    	's1.y'=>10,//?
    	's1'=>'login',//?
    	's'=>3 //pour la page allianz?s=3
    );
    // Envoie la première requête
    list($header, $content) = HttpRequest($url,$referer,$data,'POST');
    $liste = new DOMDocument();//ob_start();
    @$liste->loadHTML($content);//ob_end_clean();
    $raw = $liste->getElementsByTagName('td');
    //$resultat = array();
    //on extrait les données de la page d'attaque alliance : sujet(att/espio) - attaquant - ally att - def - ally def - date - heure - idberichte
    foreach ($raw as $key=>$node) {
    echo('(');
    	if (($node->getAttribute('class') == 's7')&& ($node->nodeValue != " ")){
    		echo $resultat['ids'][] = substr(@$node->firstChild->getAttribute('href') , 16 );
    		echo $resultat['sujet'][] = (strstr($node->nodeValue,'attaque') != "")  ? 'attaque' : 'espionne' ;
    		$players = explode(((strstr($node->nodeValue,'attaque') != "")  ? 'attaque' : 'espionne'),$node->nodeValue);
    		echo $resultat['attaquant'][] = trim($players[0]);
    		echo	$resultat['defenseur'][] = trim($players[1]);
     
    	}
    	if (($node->getAttribute('class') == 'c f8')&& ($node->nodeValue != " ")){
    		$ally = explode(" - ",$node->nodeValue);
    		echo $resultat['allyatt'][] = $ally[0];
    		echo $resultat['allydef'][] = $ally[1];
    	}
    	if (($node->getAttribute('width') == 110)&& ($node->nodeValue != " ")){
    		$d = explode(".", substr($node->nodeValue,0,8));//$d[0] $d[1] $d[2] // jour.mois.année
    		$h = explode(":",substr($node->nodeValue,9));//$h[0]  $h[1] // heure : minutes
    		echo $resultat['unix'][] = mktime($h[0] , $h[1]  , 0,  $d[1] , $d[0],$d[2] );
    	}
    	echo ')';
    }
    var_dump($resultat['ids']); // ne marche pas
    echo 'fin'; // ne marche pas non plus :o
    Le problême c'est les deux dernières lignes, après la boucle, pas de var_dump ni d'echo alors que tous les echo dans la boucle marchent. Sauf le dernier, la parenthèse fermante que j'ai rajouté pour matérialiser les itérations. ça veut dire que bizarrement la boucle ne se termine pas alors que le temps d'execution est très court et sans erreur.

    Mes données sont bien extraites, les echo en témoignent, mais le tableau résultat ne veut pas se construire.

    Voici un exemple de sortie avec les echo des données convenablement extraites du contexte de la page web :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ()()()()()()()(24862439attaquecaancaan)(LoDmLoDm)(1223159520)()(24862274attaqueNeochtikunaïshi)(LoDm)(1223159400)()(24862133attaquefarfdiablonev)(LoDmTRIUM)(1223159220)()(24861760attaqueVenecCyril43)(LoDm)(1223158800)()(24861672attaquehihi1erWonder)(LoDm•B•T•K•)(1223158740)()(24861670attaquehihi1erWonder)(LoDm•B•T•K•)(1223158740)()(24861668attaquehihi1erWonder)(LoDm•B•T•K•)(1223158740)()(24861613attaquepoiroufAntho72)(LoDm)(1223158680)()(24861587attaqueCaradocbarjo)(LoDm)(1223158680)()(24861530espionneCalisCalis)(LoDmLoDm)(1223158620)()(24861529espionneCalisCalis)(LoDmLoDm)(1223158620)()(24860678attaquefarflulu boulette)(LoDm)(1223157660)()(24860567attaquehihi1erWonder)(LoDm•B•T•K•)(1223157480)()(24860565attaquehihi1erWonder)(LoDm•B•T•K•)(1223157480)()(24860563attaquehihi1erWonder)(LoDm•B•T•K•)(1223157480)()(24860425attaqueVenecdjolboo)(LoDmF.D.3)(1223157360)()(24860144attaqueVenecdjolboo)(LoDmF.D.3)(1223157060)()(24859372attaqueCaradocRider88)(LoDm)(1223156160)()(24859161attaqueCalebardpierrux)(LoDm[eDEn])(1223155860)()(24859151attaqueWondermatakoff)(•B•T•K•LoDm)(1223155860)()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(
    Vous avez remarqué que la dernière parenthèse fermante manque.

    Le pire c'est que ça a marché à un moment ... Je ne comprend plus rien :/

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Requête POST pour lire des pages protégés par login/mot de passe
    Bon ça remarche :@

    J'ai fait une seconde boucle indexée pour reprendre les données et cette fois j'ai tout mes echos

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    //on extrait les données de la page d'attaque alliance : sujet(att/espio) - attaquant - ally att - def - ally def - date - heure - idberichte
    foreach ($raw as $key=>$node) {
    	if (($node->getAttribute('class') == 's7')&& ($node->nodeValue != " ")){
    		//echo $resultat['ids'][]
    		$id[]= substr(@$node->firstChild->getAttribute('href') , 16 );
    		//echo $resultat['sujet'][] 
    		$sujet[]= (strstr($node->nodeValue,'attaque') != "")  ? 'attaque' : 'espionne' ;
    		$players[] = explode(((strstr($node->nodeValue,'attaque') != "")  ? 'attaque' : 'espionne'),$node->nodeValue);
    		//echo $resultat['attaquant'][] 
    		$att[]= trim($players[0]);
    		//echo $resultat['defenseur'][] 
    		$def[]= trim($players[1]);
    	}
    	if (($node->getAttribute('class') == 'c f8')&& ($node->nodeValue != " ")){
    		$ally = explode(" - ",$node->nodeValue);
    		//echo $resultat['allyatt'][] 
    		$allyatt[]=$ally[0];
    		//echo $resultat['allydef'][] 
    		$allydef[]=$ally[1];
    	}
    	if (($node->getAttribute('width') == 110)&& ($node->nodeValue != " ")){
    		$d = explode(".", substr($node->nodeValue,0,8));//$d[0] $d[1] $d[2] // jour.mois.année
    		$h = explode(":",substr($node->nodeValue,9));//$h[0]  $h[1] // heure : minutes
    		//echo $resultat['unix'][] 
    		$unix[] = mktime($h[0] , $h[1]  , 0,  $d[1] , $d[0],$d[2] );
    		//var_dump($resultat[] = array($id,$sujet,$att,$def,$allyatt,$allydef,$unix));
    	}
    }
    for ($i=0;$i<count($sujet);$i++){
    	$resultat['id']["$i"] = $id["$i"];
    	$resultat['sujet']["$i"] = $sujet["$i"];
    	$resultat['att']["$i"] = $att["$i"];
    	$resultat['def']["$i"] = $def["$i"];
    	$resultat['allyatt']["$i"] = $allyatt["$i"];
    	$resultat['allydef']["$i"] = $allydef["$i"];
    	$resultat['unix']["$i"] = $unix["$i"];
    }
    var_dump($resultat);

    Pendant que je suis là je peux en profiter pour vous questionner sur le fond du script, il sert envoyer une requête post pour se connecter à un site avec login/pass. Il se sert de sockets avec cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <?php
    //http://www.jonasjohn.de/snippets/php/post-request.htm
    //This example shows how to do a simple POST request to another webserver by using a socket connection. 
    function HttpRequest($url, $referer, $_data,$method) {
     
        // convert variables array to string:
        $data = array();    
        while(list($n,$v) = each($_data)){
            $data[] = "$n=$v";
        }    
        $data = implode('&', $data);
        // format --> test1=a&test2=b etc.
     
        // parse the given URL
        $url = parse_url($url);
        if ($url['scheme'] != 'http') { 
            die('Only HTTP request are supported !');
        }
     
        // extract host and path:
        $host = $url['host'];
        $path = $url['path'];
     
        // open a socket connection on port 80
        $fp = fsockopen($host, 80);
     
        // send the request headers:
        fputs($fp, "$method $path HTTP/1.1\r\n");
        fputs($fp, "Host: $host\r\n");
        fputs($fp, "Referer: $referer\r\n");
        fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
        fputs($fp, "Content-length: ". strlen($data) ."\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
        fputs($fp, $data);
     
        $result = ''; 
        while(!feof($fp)) {
            // receive the results of the request
            $result .= fgets($fp, 128);
        }
     
        // close the socket connection:
        fclose($fp);
     
        // split the result header from the content
        $result = explode("\r\n\r\n", $result, 2);
     
        $header = isset($result[0]) ? $result[0] : '';
        $content = isset($result[1]) ? $result[1] : '';
     
        // return as array:
        return array($header, $content);
    }
     
     
     
    /*
    ** The example:
    */
     
    // // submit these variables to the server:
    // $data = array(
        // 'test' => 'foobar',
        // 'okay' => 'yes',
        // 'number' => 2
    // );
     
    // // send a request to example.com (referer = jonasjohn.de)
    // list($header, $content) = PostRequest(
        // "http://www.example.com/",
        // "http://www.jonasjohn.de/",
        // $data
    // );
     
    // print the result of the whole request:
    //print $content;
     
    // print $header; --> prints the headers
    ?>
    Maintenant mon problème se situe dans la conception même de mon appli, car à ce stade du script je dois visiter des liens donnés par un scalaire résultat, et je n'y arrive pas en réinvoquant la même fonction HttpRequest.

    Je dois visiter ces liens en GET depuis le contexte créé dans la fonction, mais le contexte n'étant pas renvoyé par la fonction je ne peux pas m'en re-servir :/

    En fait il me manque le cookie à passer dans les headers ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/05/2015, 08h49
  2. Mes fenêtres de chargement enregistrement marchent plus
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2013, 14h19
  3. [ACCESS 97] mes requêtes ne marchent plus!
    Par AGR26 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/09/2008, 15h24
  4. [Configuration] Mes utilisateurs ne reçoivent plus leur mail d'inscription
    Par Chronax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 14/05/2006, 14h38
  5. Tiens, mes users ne peuvent plus accéder à la base
    Par GLDavid dans le forum Requêtes
    Réponses: 12
    Dernier message: 08/12/2003, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo