PHP 模拟登陆MSN并获得用户信息_php技巧

来源:脚本之家  责任编辑:小易  

把你的登录信息保存在一个session中,如login.phpphp表单提交后.posts=$_POST;清除一些空白符号foreach($posts as$key=>$value){posts[$key]=trim($value);}password=md5($posts["password"]);username=$posts["username"];query="SELECT `username` FROM `user` WHERE `password`='$password' AND `username`='$username';取得查询结果userInfo=$DB->getRow($query);if!empty($userInfo)){当验证通过后,启动 Sessionsession_start();注册登陆成功的 admin 变量,并赋值 trueSESSION["admin"]=true;} else {die("用户名密码错误");}我们在需要用户验证的页面启动 Session,判断是否登陆:php防止全局变量造成安全隐患admin=false;启动会话,这步必不可少session_start();判断是否登陆if(isset($_SESSION["admin"])&$_SESSION["admin"]=true){echo"您已经成功登陆;} else {验证失败,将$_SESSION["admin"]置为 falseSESSION["admin"]=false;die("您无权访问");}www.zgxue.com防采集请勿采集本网。

复制代码 代码如下:

<?php

1,不返回COOKIE。所以不可获取。2,PHP的cookie不跨域的-至少不能跨到你写的PHP发贴机上。3,解决: 用php的curl 每次发帖的时候模拟登录下。这样,就可以每次都有“真实”的身份了。搜下

/*

* PHP100中文网,整体提供,测试通过

/* 获取用户信息,首先是根据条件来查找用户 SERVER[\"user_id\"]登陆保存user_id保存到session SERVER[\"user\"]登陆保存用户到session select*from user where id='\".$_SERVER[\"user_id\"].\"' and

*/

$msn = new myMSN(php100@php100.com, "123");

用php 的curl功能可以模拟提交表单 然后生成cookies 调用cookies才可以登录。

// MSNv9

这个问题我也想知道 我也遇到了

class myMSN {

一般用会话(SESSION)来判断是否登录,以及登录用户名等信息。e799bee5baa6e78988e69d8331333335313836 登录页面 php session_start();if($_POST['user']=$user&$_POST['pwd']=$pwd){ 如果登录

private $server = "messenger.hotmail.com";

private $port = 1863;

private $nexus = "https://nexus.passport.com/rdr/pprdr.asp";

private $sshLogin = "login.live.com/login2.srf"; //loginnet.passport.com/login2.srf

private $getCode = null;

private $_ip = null;

private $_port = null;

private $connect = null;

private $trID = 1;

private $maxMessage = 4096;

private $userName = null;

private $passWord = null;

private $debug = true;

function myMSN($userName="", $passWord="") {

if (!empty($userName) && !empty($passWord)) {

$this->userName = $userName;

//$this->passWord = urlencode($passWord);

$this->passWord = $passWord;

$this->startTalk();

}

}

function put($data) {

if ($this->isConnect()) {

fputs($this->connect, $data);

$this->trID ;

if ($this->debug)

print("<div style='color:green;font-size:13px;'>>>>{$data}</div>");

}

}

function get() {

if ($data = @fgets($this->connect, $this->maxMessage)) {

if ($this->debug)

print("<div style='color:red;font-size:13px;'><<<{$data}</div>");

return $data;

} else {

return false;

}

}

function isConnect() {

if (!is_null($this->connect))

return true;

else

return false;

}

function close() {

@fclose($this->connect);

}

function startTalk() {

if ($this->connect = fsockopen($this->server, $this->port, $errno, $errstr, 2))

$this->verTalk();

}

function verTalk() // MSN 协议协商 {

$this->put("VER {$this->trID} MSNP9 CVR0 rn");

$data = $this->get();

//echo $data;

if (false !== strripos($data, "VER"))

$this->envTalk();

}

function envTalk() // 环境协商 {

$this->put("CVR {$this->trID} 0x0409 winnt 5.0 i386 MSNMSGR 7.0.0816 MSMSGS {$this->userName} rn");

$data = $this->get();

//echo $data;

if (false !== strripos($data, "CVR"))

$this->reqTalk();

}

function reqTalk() // 请求确认 {

$this->put("USR {$this->trID} TWN I {$this->userName} rn");

$data = $this->get(); // XFR 3 NS 207.46.107.41:1863 0 65.54.239.210:1863 XFR 3 NS 207.46.107.25:1863 U D

//echo $data;

if (false !== strripos($data, "XFR")) {

list(, , , $serv) = explode(" ", $data); // 分析服务器

list($ip, $port) = explode(":", $serv); // 分析IP和端口

$this->_ip = $ip;

$this->_port = $port;

$this->reLink($ip, $port);

} else {

//echo $data; // USR 3 TWN S ct=1205292058,rver=5.0.3270.0,wp=FS_40SEC_0_COMPACT,lc=1033,id=507,ru=http://messenger.msn.com,tw=0,kpp=1,kv=4,ver=2.1.6000.1,rn=1lgjBfIL,tpf=b0735e3a873dfb5e75054465196398e0

list(, , , , $this->getCode) = explode(" ", trim($data));

//echo $data;

if (empty($this->sshLogin))

$this->reLoginTalk(); // 重新获取登陆服务器地址

else

$this->getLoginCode($this->sshLogin);

}

}

function reLink($server, $port) // 重置连接 {

$this->connect = null;

$this->server = $server;

$this->port = $port;

$this->trID = 1;

$this->startTalk();

}

function reLoginTalk() // 重新获取服务器地址 {

$ch = curl_init($this->nexus);

curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_NOBODY, 1);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$header = curl_exec($ch);

//print_r($header);

curl_close($ch);

preg_match ('/DALogin=(.*?),/', $header, $out); // 捕捉服务器登陆匹配

//print_r($out);

if (isset($out[1])) {

$this->getLoginCode($out[1]);

}

else {

//return false;

exit("无法捕捉到登陆服务器的URL");

}

}

function getLoginCode($slogin) // 获取登陆代码 {

//echo($this->getCode);

if (!is_null($this->getCode)) {

$ch = curl_init("https://" . $slogin);

$loginInfo = array(

"Authorization: Passport1.4 rgVerb=GET,OrgURL=http://messenger.msn.com,sign-in=" . $this->userName . ",pwd=" . $this->passWord . "," . $this->getCode,

"Host: login.passport.com"

);

curl_setopt($ch, CURLOPT_HTTPHEADER, $loginInfo);

//print_r($loginInfo);

//$this->getCode = null;

curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_NOBODY, 1);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$header = curl_exec($ch);

//print_r($header);

preg_match ("/from-PP='(.*?)'/", $header, $out);

//print_r($out);

if (isset($out[1])) {

$this->loginAction($out[1]);

} else {

//return false;

exit("无法捕捉到登陆代码的信息");

}

} else {

return false;

}

}

function loginAction($loginCode) // 登陆工作 {

$this->put("USR {$this->trID} TWN S {$loginCode} rn"); // USR |trID| SSO S |t=code|

$data = $this->get();

//echo $data;

//print_r($data);

//$this->put("SYN {$this->trID} 0 rn");

//$this->put("CHG {$this->trID} NLN rn");

//print_r($this->get());

}

}

?>

模拟header文件,然后登陆,登陆的时候记得保存cookie就行了,以后每次登陆都携带cookie内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • php实现模拟登陆方正教务系统抓取课表
  • php函数分享之curl方式取得数据、模拟登陆、post数据
  • php实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
  • php模拟登陆的实现方法分析
  • php中通过curl模拟登陆discuz论坛的实现代码
  • php 论坛采集程序 模拟登陆,抓取页面 实现代码
  • php简单实现模拟登陆功能示例
  • php实现微信模拟登陆、获取用户列表及群发消息功能示例
  • php通过curl模拟登陆dz论坛
  • php模拟登陆163邮箱发邮件及获取通讯录列表的方法
  • php 模拟登陆功能实例详解
  • php使用curl_init()和curl_multi_init()多线程的速度比较详解
  • 很让人受教的 提高php代码质量36计
  • phpexcel实现表格导出功能示例【带有多个工作sheet】
  • php使用mysqldump命令导出数据库
  • php微信支付接口开发程序
  • php单件模式结合命令链模式使用说明
  • php方法调用模式与函数调用模式简例
  • 深入理解:xml与对象的序列化与反序列化
  • php针对json操作实例分析
  • php中应该避免使用同名变量(拆分临时变量)
  • 最近用php模拟登录淘宝,想知道淘宝登录需要提交些什么啊?或者是先自己登录一次把cookie保存了
  • php模拟登陆,跳转页面问题
  • 怎么用php模拟post提交请求得到相应,能给个例子吗
  • php怎么获得当前用户的登陆次数
  • php如何获得登录后的cookie
  • PHP获得当前登录用户ID,详细代码写法
  • php获取登陆过的网页代码
  • php curl模拟登陆问题
  • php怎么获取当前登陆的用户名?要具体的详细代码。求助!谢谢!
  • 腾讯PHP面试题,PHP如何模拟POST提交登录?求详细代码
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php技巧php实现模拟登陆方正教务系统抓取课表php函数分享之curl方式取得数据、模拟登陆、post数据php实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】php模拟登陆的实现方法分析php中通过curl模拟登陆discuz论坛的实现代码php 论坛采集程序 模拟登陆,抓取页面 实现代码php简单实现模拟登陆功能示例php实现微信模拟登陆、获取用户列表及群发消息功能示例php通过curl模拟登陆dz论坛php模拟登陆163邮箱发邮件及获取通讯录列表的方法php 模拟登陆功能实例详解php使用curl_init()和curl_multi_init()多线程的速度比较详解很让人受教的 提高php代码质量36计phpexcel实现表格导出功能示例【带有多个工作sheet】php使用mysqldump命令导出数据库php微信支付接口开发程序php单件模式结合命令链模式使用说明php方法调用模式与函数调用模式简例深入理解:xml与对象的序列化与反序列化php针对json操作实例分析php中应该避免使用同名变量(拆分临时变量)php中json_decode()和json_encodphp 数组和字符串互相转换实现方php中使用curl实现get和post请求php中iconv函数使用方法php日期转时间戳,指定日期转换成php 页面跳转到另一个页面的多种php中文处理 中文字符串截取(mb_php下intval()和(int)转换使用与利用phpexcel实现excel数据的导入phpmyadmin 配置文件详解(配置)dedecms dede_channeltype表字段注释php类的扩展和继承用法实例php封装的svn类使用内置svn函数实现根据sphp的一个简单加密解密代码php函数shuffle()取数组若干个随机元素的thinkphp自动验证失败的解决方法php封装函数实现生成随机的字符串验证码比较时间段一与时间段二是否有交集的php函php new static 和 new self详解php基础知识:类与对象(4) 范围解析操作符
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved