SirChick Posted November 29, 2007 Share Posted November 29, 2007 As you see on myspace or face book it says "invite your friends to such and such" or "find friends from this site". And it does it by logging into Gmail or Hotmail and then listing the user's contacts to either send invite to them or to find if they are already a member of the site. I was wondering how is it done exactly ? Is it PHP ? Or some other scripting language? Also is it only possible via permission of Gmail/Hotmail in the first place etc? Or can it be done by any one ? Quote Link to comment Share on other sites More sharing options...
trq Posted November 29, 2007 Share Posted November 29, 2007 It could probably be done via curl or google/hotmail may actually provide an API. Quote Link to comment Share on other sites More sharing options...
Adam Posted November 29, 2007 Share Posted November 29, 2007 It can definitely be done with PHP .. not too sure how though. Quote Link to comment Share on other sites More sharing options...
SirChick Posted November 29, 2007 Author Share Posted November 29, 2007 gah this is doing to be difficult to work out then Quote Link to comment Share on other sites More sharing options...
runnerjp Posted November 29, 2007 Share Posted November 29, 2007 wham Grabs Contacts This page grabs the users hotmail contacts <? class msnlistgrab { var $user = '$husername'; var $password = '$hpassword'; var $server ='messenger.hotmail.com'; var $port = 1863; var $version = 'MSNMSGR 6.2'; var $buffer; var $socket; var $startcom; var $error="Hey"; 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%2E com,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 ?> Email Contacts This is the page where it emails the users contacts <? session_start(); if ($_SESSION['membersarea']!="Active") { header ("Location: ../login.php"); } include_once ("../config/config.php"); include_once ("../config/functions.php"); $userDetails = getSqlRow("SELECT * FROM site_users WHERE id='".$_SESSION['memberid']."'"); $usr = $userDetails['username']; $husername = $_POST['husername']; $hpassword = $_POST['hpassword']; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Cc: invite@sitename.com' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; include_once('message.php'); include_once('msnlistgrab.php'); $gm = new msnlistgrab(); $gm->GetRecords(); foreach ($gm->res as $val) { mail("$val", "You have been invited to join SiteName", "$message", "From: invite@site.com $headers"); } ?> Quote Link to comment Share on other sites More sharing options...
SirChick Posted November 29, 2007 Author Share Posted November 29, 2007 did you make that or find it ? Either way that is great... Would you know how to get Gmail and other common email checkers ? Quote Link to comment Share on other sites More sharing options...
runnerjp Posted November 29, 2007 Share Posted November 29, 2007 found it just look on google for invite gmail php ect Quote Link to comment Share on other sites More sharing options...
SirChick Posted November 29, 2007 Author Share Posted November 29, 2007 thankyou ! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.