Jump to content

Please help: Warning: Invalid argument supplied for foreach()


tommyda

Recommended Posts

Error: Warning: Invalid argument supplied for foreach() in.......

 

On line 5 of index.php

 

Code of grabber.php:

<?php

    /****************************************************************************************
    *                                   MSN CONTACT LIST GRAB CLASS                            *
    *             (c)2005 Ghulam Mustafa, [email protected], Pakistan                    *
    *                               ver 1.0 (04.02.2005)                                    *
    ****************************************************************************************/
    
class msnlistgrab {
    var $user='[email protected]';
    var $password='pa***' ;
    var $server ='messenger.hotmail.com';
    var $port = 1863;
    var $version = 'MSNMSGR 6.2';
    var $buffer;
    var $socket;
    var $startcom;
    var $error="";
    function msnlistgrab() {

    }
    function GetRecords(){
        if ($this->msn_connect($this->server, $this->port))
        {
            return $this->res;
        }
        else
        {
            return $this->error;
        }
    }

    function getData() {
        $this->buffer="";
        while (!feof($this->socket)) {
            $this->buffer .= fread($this->socket,1024);
            if (preg_match("/\r/",$this->buffer)) {
                break;
            }
        }
        $this->checkData($this->buffer);
    }
    function getData2() {;
    //$container="";
    $buffer="";
    while (!feof($this->socket)) {
        if ($this->i>1) {
            if ($this->i==$this->total) {
                fclose($this->socket);
                $this->res;
                break;
            }
        }
        $buffer = fread($this->socket,8192);
        $this->check_buffer($buffer);
    }
    }

    function check_buffer($buffer) {
        if (eregi("^SYN",$buffer)) {
            list($junk, $junk, $junk, $this->total) = explode(" ", $buffer);
            //    echo '<h1>Number of Records: '.$this->total.'</h1>';
        }
        $this->grabber($buffer);
    }

    function grabber ($buffer)
    {
        $g = preg_split("/[\n]+/", $buffer);
        for ($n=0;$n<count($g);$n++) {
            if (strstr($g[$n], 'LST')) {
                $this->i++;
                //echo $i.',';
                list($junk, $email) = explode(" ", $g[$n]);
                $this->res[] = $email;
            }
        }

    }

    function checkData($buffer) {
        //              echo $buffer;
        if (preg_match("/lc\=(.+?)/Ui",$buffer,$matches)) {

            $this->challenge = "lc=" . $matches[1];

        }

        if (preg_match("/(XFR 3 NS )([0-9\.\:]+?) (.*) ([0-9\.\:]+?)/is",$buffer,$matches)) {
            $split = explode(":",$matches[2]);
            $this->startcom = 1;
            $this->msn_connect($split[0],$split[1]);

        }

        if (preg_match("/tpf\=([a-zA-Z0-9]+?)/Ui",$buffer,$matches)) {

            $this->nexus_connect($matches[1]);
        }
        /*
        $split = explode("\n",$buffer);

        for ($i=0;$i<count($split);$i++) {

        $detail = explode(" ",$split[$i]);

        if ($detail[0] == "LST") {
        //echo "<div  OnMouseOver=\"style.cursor='hand';showTooltip('show','$detail[1]-$detail[3]')\" OnMouseMove=\"followTooltip('show')\" OnMouseOut=\"showTooltip('hide')\">" . urldecode($detail[2]) . "</div>";
        }
        }
        */



    }

    function msn_connect($server, $port) {

        if (IsSet($this->socket)) {
            fclose($this->socket);
        }

        $this->socket = fsockopen($server,$port);       //stream_set_timeout($GLOBALS["socket"], 20000);
        if (!$this->socket) {
            return "Could not connect";
        } else {
            $this->startcom++;
            $this->send_command("VER " . $this->startcom . " MSNP8 CVR0",1);
            $this->send_command("CVR " . $this->startcom . " 0x0409 win 4.10 i386 ". $this->version ." MSMSGS " . $this->user . "@hotmail.com",1);
            $this->send_command("USR " . $this->startcom . " TWN I " . $this->user . "@hotmail.com",1);

        }
    }

    function send_command($command)
    {
        $this->startcom++;
        //      echo "<font color=blue> >> $command<br>";
        fwrite($this->socket,$command . "\r\n");
        $this->getData();


    }


    function nexus_connect($tpf)
    {

        $arr[] = "GET /rdr/pprdr.asp HTTP/1.0\r\n\r\n";

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, "https://nexus.passport.com:443/rdr/pprdr.asp");
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_VERBOSE, 0);
        curl_setopt($curl, CURLOPT_HEADER,1);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $arr);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        $data = curl_exec($curl);
        curl_close($curl);
        preg_match("/DALogin=(.+?),/",$data,$matches);

        //$data = str_replace("\n","<br>",$data);
        //              echo $data;

        //echo "<br><br>";

        $split = explode("/",$matches[1]);

        $headers[0] = "GET /$split[1] HTTP/1.1\r\n";
        $headers[1] = "Authorization: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=" . $this->user . "%40hotmail.com,pwd=" . $this->password . ", " . trim($this->challenge) . "\r\n";

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, "https://" . $split[0] . ":443/". $split[1]);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_VERBOSE, 0);
        curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($curl, CURLOPT_HEADER,1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

        $data = curl_exec($curl);

        //$data = str_replace("\n","<br>\n",$data);
        //              echo $data;

        curl_close($curl);

        //echo "</font>";

        preg_match("/t=(.+?)'/",$data,$matches);
        $this->send_command("USR " . $this->startcom . " TWN S t=" . trim($matches[1]) . "",2);
        $this->send_command("SYN " . $this->startcom . " 0",2);
        $this->getData2();



    }

}
//end of the file
?> 

 

Code of Index.php

<?php
include('grabber.php');
$gm = new msnlistgrab();
$gm->GetRecords();
foreach ($gm->res as $val)
{
    echo $val .'<BR>';
}
echo '<hr>'.$gm->total;
?> 

 

Thanks

Your post contains almost no information to help you.... but ....

 

Your Warning: Invalid argument supplied for foreach() in.. error is because $gm->res is not an array.

 

 

Thats all I can do for ya with the little information you gave.

 

Maybe I am missing something... but getData() does not return anything... which could be a reason that GetRecords() is not returning an array.

 

Nate

Well, I dont have a clue how the script works/should work I was looking for something that would pull msn contacts and import them into mysql and i found this on phpclasses.com.

 

Can anyone see this actually working? or would I be better off finding another way?

Ok I have found another way of doing it but need a little help.

 

I have a simple xml file

 

Example <code><?xml version="1.0"?>

<messenger>

  <service name=".NET Messenger Service">

    <contactlist>

      <contact type="1">x_lau******[email protected]</contact>

      <contact type="1">foxy-***[email protected]</contact>

      <contact type="1">pain*****[email protected]</contact></code>

    </contactlist>

  </service>

</messenger></code>

 

I need to put each email address into a mysql database.

 

Im hoping this will work<code><?php

if (file_exists('test.xml'))

  {

  $xml = simplexml_load_file('test.xml');

  }

 

echo $xml->asXML();

?></code>

 

But I think I will need to use a foreach or while statement?!?!?

 

Please help

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.