tommyda Posted November 8, 2008 Share Posted November 8, 2008 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 Link to comment https://forums.phpfreaks.com/topic/131955-please-help-warning-invalid-argument-supplied-for-foreach/ Share on other sites More sharing options...
Mchl Posted November 8, 2008 Share Posted November 8, 2008 $gm->res is probably empty at that time. Why? Have no idea. The code of this class makes no sense to me... Perhaps try print_r($gm); to see what's inside. Link to comment https://forums.phpfreaks.com/topic/131955-please-help-warning-invalid-argument-supplied-for-foreach/#findComment-685637 Share on other sites More sharing options...
chronister Posted November 8, 2008 Share Posted November 8, 2008 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 Link to comment https://forums.phpfreaks.com/topic/131955-please-help-warning-invalid-argument-supplied-for-foreach/#findComment-685650 Share on other sites More sharing options...
tommyda Posted November 8, 2008 Author Share Posted November 8, 2008 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? Link to comment https://forums.phpfreaks.com/topic/131955-please-help-warning-invalid-argument-supplied-for-foreach/#findComment-685659 Share on other sites More sharing options...
Mchl Posted November 8, 2008 Share Posted November 8, 2008 One thing I can say: the script is dated 2005. That's 3 years ago. In this time a lot could have changed in how MSN works... I don't know if it did, but if it so, then the script might be obsolete. Link to comment https://forums.phpfreaks.com/topic/131955-please-help-warning-invalid-argument-supplied-for-foreach/#findComment-685664 Share on other sites More sharing options...
tommyda Posted November 8, 2008 Author Share Posted November 8, 2008 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 Link to comment https://forums.phpfreaks.com/topic/131955-please-help-warning-invalid-argument-supplied-for-foreach/#findComment-685673 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.