标签归档:Ajax

几种程序报警通知的方式

线上的项目出现错误不能及时知道怎么办?不及时处理影响用户体验怎么办! 在error_handle 和exception_handle 方法里添加提醒方式。 有以下几种比较及时的方式: 1.短信接口。缺点是得浪费点钱。(不过一条就6分左右。这种费钱的报警必须注意控制频率。避免碰到访问量大时出现错误报警,持续狂刷,瞬间几千条短信耗完。可以借助memcache 几分钟报警一条。) 2.发邮件 + 微信开启邮件插件。 通知很及时! 3.qq机器人。 网上关于qq机器人的php版程序很多。主要是通过curl模拟了3g.qq.com的聊天过程。组织header,抓取响应的header 弄到sid,设置一些cookie,反正搞得跟3g.qq.com走网页一样就行了。curl_setopt 那个header选项设置为 true 便于能抓到header。 4.发送微信消息。 进微信公众平台 http://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm-login&lang=zh_CN 然后你就用firebug或者chrome开发者工具研究怎么模拟提交表单吧。你要是看看qq机器人的程序弄这个很容易的。 好像是要设置2个cookie mp_user=gh_xxxxxxxxxxxxxxx mp_sid=RjU3cUQ1UU1ZVkloYXhrZE5ETUJLSmM0Q2MxYmpqaVlvcGxadThLcTJwSGNWWnFGQWJmalNwbHNCbkRTR1dOMWk3X0xkSWFmNlBzME1RRmxaU0NPZVhmUWhSRlZNc1cxeFVNTEJVWUZKbkdzY2lMOFl0T3FxSnQ1aUJYMmppSHc   进去后再看看发送给某人消息怎么发的吧。就是后台这块发消息用的一个fakeId 。你在要给某个用户发消息时链接上可以看到。 用户管理: http://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&lang=zh_CN&pagesize=10&pageidx=0&type=0&groupid=100 给某个用户发消息: http://mp.weixin.qq.com/cgi-bin/singlemsgpage?fromfakeid=60890145&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_CN 提交 : 网络 – 保持一下。 http://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN post参数: ajax 1 … 继续阅读

发表在 工作总结 | 标签为 , , , , , | 留下评论

【转】REMOTE_ADDR HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR

dz的代码判断IP那块太让人头疼了,日,REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR三个东西在手册上太不详细了,基本上就等于没有。 网上gg了一下,找到一点,另外,有一个思路太巧了,用JS取IP以后POST到服务器,Y的用代理骗服务器?有种上网先把Js给关了啊!!哦哈哈,以后有机会用ajax试一下,也省得用这三个变量if得死去活来了。 $_SERVER['...']; // for php 一、没有使用代理服务器的情况:       REMOTE_ADDR = 您的 IP       HTTP_VIA = 没数值或不显示       HTTP_X_FORWARDED_FOR = 没数值或不显示 二、使用透明代理服务器的情况:Transparent Proxies       REMOTE_ADDR = 最后一个代理服务器 IP       HTTP_VIA = 代理服务器 IP       HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。 … 继续阅读

发表在 默认分类 | 标签为 , | 留下评论

iframe退出相关

aa.xx.com用iframe引入的www.xx.com的一个头部登陆条,有退出链接也是同步退出的(原理就是ajax去请求 然后输出<script src=“www.yy.com/….通信密钥。。”输出时要请求很多东西(这种思想可以借鉴,而不只是为要返回值而返回数据,可以用来做请求。)。就是uchome同步登陆那一套,用的fscokopen(),原理可参考:http://hi.baidu.com/zxsz4085/blog/item/549076ca08924912bf09e659.html) 现在说头部不要那个登陆条了,但是要在登陆后的页面其他地方做个退出链接,晕倒。 就想用js在父页面点子页面的退出,网上搜: 把头部登陆条display为none藏起来 其他地方加个链接 onclick=”document.getElementById(‘iframe_head’).contentDocument.getElementById(‘link_logout’).click();” 火狐说没权限。。。 试试本地,在本地项目下建立了一个页面就放了一个button 让它点击时就提示xxx,让头部iframe改成引用这个页面,结果发现头部iframe隐藏时,通过点击自己的退出链接无法触发点击button,显示iframe时就可以提示xxx 头疼,无赖,又做了个 iframe 把width和height设置得都很小,里面就一个退出链接,事件从头部登陆条的页面拷过来。写个方法供最底层刷新页面。  

发表在 默认分类 | 标签为 , , | 留下评论

iframe登陆相关

最近在子站点http://aa.xx.com用iframe引 用http://www.xx.com 的登陆框,因为www那边登陆还没做成服务,但是要涉及其他几个网站的同步登陆,目前是只有走那个登陆框提交表单才能触发同步登陆。 开始以为是个很简单的事情,在www那边的登陆表单用ajax登陆成功后就调用parent.window.location.reload();火狐错误控制台提示没权限哦。然后在本地项目建立了一个文件,iframe的src指向它,可以提示消息。想不明白,都是xx.com 怎么就不行了。 无奈,看了之前别人引用的一个头部登陆条里搞明白了。 比如:aa.xx.com 这边有个文件 1. login.html 这边页面写个js方法用来刷新页面。  function reload_page(){   window.location.reload(); } iframe引用了www.xx.com 那边的一个文件 iframe_login_header.html 2. iframe_login_header.html 页面 有个iframe   src为空 , 用ajax请求登陆程序处理成功后,给src指向 aa.xx.com 这边的一个页面reload.html 3. reload.html页面里啥也不用干,就调用顶级页面的方法。你可以在reload_page()里做其他处理,而不只是登陆后刷新页面。 window.top.reload_page();

发表在 默认分类 | 标签为 , | 留下评论

通过jsonp实现跨越应用示例

转载自:http://www.smallgang.cn/index.php/JavaScript/jsonp.html   什么是JSONP协议? JSONP即JSON with Padding。由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方式称为JSONP。 很明显,JSONP是一种脚本注入(Script Injection)行为,需要特别注意其安全性。 站点www.87end.cnd的php代码(jsonp.php) //ajax接收的参数$action = $_GET['act'];$name = $_GET['name']; call_user_func($action, $name); function sayHello($name) {    $callback = trim($_GET['jsoncallback']);    $arr = array(‘msg’=>’hello ‘ . $name);    echo $callback.”(“.json_encode($arr).”);”;} 站点www.smallgang.cn的 JS脚本(jsonp.html), 用jquery的ajax,有两种实现方式 方法一: jQuery.getJSON(url,[data],[callback])$.getJSON(“http://www.87end.cn/jsonp.php?act=sayHello&name=xiaogang&jsoncallback=?”,     function(data){         alert(data.msg);     }  ); 方法二:jQuery.ajax(options)$.ajax({ … 继续阅读

发表在 Ajax | 标签为 , , | 留下评论

2011.3月工作总结

目前弄一个网页即时聊天的东西,现有的网站本来有,要弄到新网站上,要改好多东西。总算从头到尾把整个流程搞清楚了。 用户:发送消息,js即时显示它在聊天框,ajax发送此消息给php处理,php插入消息并且查询客服的最新的一条消息,把客服的消息等信息以json形式返回给js,ajax调用完成complete后再次发起此同样的请求,成功success后在聊天框显示客服的消息,错误error在聊天框显示发送失败。 客服端一样。 大厅表hall 表,记录客服和用户的id,ip,客服的状态等 房间表room_x(可以分多个表,根据用户id或者啥的),记录聊天开始时间,结束时间,有效时间客服打开窗口产生记录,sid等 聊天横向记录表 consultlist  (分表或者定时向其他多个分表复制)主键sid ,记录一对一的一次聊天的信息 临时聊天信息表 info_x 临时存储聊天内容(分10个表,按sid%10取余),结束咨询时转移到consultinfo_x中 聊天信息表 consultinfo_x(数据量特大,需要分表),sid,消息内容,发送时间   可以用个js数组记录上一次返回的信息,如response,本次返回的为json。 response.sid<1 && json.sid>0 认为有用户进入,可以在此发送欢迎语什么的! response.sid>0 && json.sid<1 咨询已结束 另外客服的每次轮询处理,都更新它最后的活跃时间,可以记录在memcache中,可以根据这个时间比当前时间小20秒(假如为20秒,传输信息一般要不了这么长时间)判断客服是否关闭了窗口。 另外用memcache记录两段最后说话时间,一方超时5分钟,提示用户,时间到了,结束操作,日志记录!   客服端打开窗口等待用户进入时,hall表产生一条记录id,ip,status等,room_x产生一条记录id等 用户进入:consultlist产生记录产生sid,hall表填充用户数据,room表填充用户数据、保存sid、记录开始时间等 聊天时:不断更新room表记录,如有效时间 结束操作:将room表的信息转移给consultlist表,room表信息清空,hall表清空用户数据继续等待,info表数据转移到consultinfo_x,info_x表清空。

发表在 工作总结 | 标签为 , , , | 留下评论

【转】HTTP长连接的“服务器推”技术(3) – 讨论

晨:    目前我对comet技术的总体印象是:如果仅限于单向推送数据,那么comet无疑是有效的。 对于双向较频繁交换数据,comet技术会退化成最简单的轮询。 我和方荣的共同想法都认为在双向通讯的时候这样做效率太差。 目前覆盖最广泛的技术里解决这一问题最有效的是Flash AS3中新增的Socket。Socket解决了XMLSocket的一些技术障碍,并且可以使用raw binary data。 理论上可以实现一个通用的Flash长连接组件。

发表在 服务器端 | 标签为 , , , , | 留下评论

【转】HTTP长连接的“服务器推”技术(2) – 转载

基于 Iframe 及 htmlfile 的流(streaming)方式 iframe 是很早就存在的一种 HTML 标记, 通过在 HTML 页面里嵌入一个隐蔵帧,然后将这个隐蔵帧的 SRC 属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。 图 3. 基于流方式的服务器推模型 上节提到的 AJAX 方案是在 JavaScript 里处理 XMLHttpRequest 从服务器取回的数据,然后 Javascript 可以很方便的去控制 HTML 页面的显示。同样的思路用在 iframe 方案的客户端,iframe 服务器端并不返回直接显示在页面的数据,而是返回对客户端 Javascript 函数的调用,如“”。服务器端将返回的数据作为客户端 JavaScript 函数的参数传递;客户端浏览器的 Javascript 引擎在收到服务器返回的 JavaScript 调用时就会去执行代码。 从图3可以看到,每次数据传送不会关闭连接,连接只会在通信出现错误时,或是连接重建时关闭(一些防火墙常被设置为丢弃过长的连接, … 继续阅读

发表在 服务器端 | 标签为 , , , , | 留下评论

【转】HTTP长连接的“服务器推”技术(1) – 转载

转载地址:http://www.builder.com.cn/2007/0904/488393.shtml 很多应用譬如监控、即时通信、即时报价系统都需要将后台发生的变化实时传送到客户 端而无须客户端不停地刷新、发送请求。本文首先介绍、比较了常用的“服务器推”方案,着重介绍了 Comet - 使用 HTTP 长连接、无须浏览器安装插件的两种“服务器推”方案:基于 AJAX 的长轮询方式;基于 iframe 及 htmlfile 的流方式。最后分析了开发 Comet 应用需要注意的一些问题,以及如何借助开源的 Comet 框架-pushlet 构建自己的“服务器推”应用。 “服务器推”技术的应用 传统模式的 Web 系统以客户端发出请求、服务器端响应的方式工作。这种方式并不能满足很多现实应用的需求,譬如: 监控系统:后台硬件热插拔、LED、温度、电压发生变化; 即时通信系统:其它用户登录、发送信息; 即时报价系统:后台数据库内容发生变化; 这些应用都需要服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求。“服务器推”技术在现实应用中有一些解决方案,本文将这些解决方案 分为两类:一类需要在浏览器端安装插件,基于套接口传送信息,或是使用 RMI、CORBA 进行远程调用;而另一类则无须浏览器安装任何插件、基于 HTTP 长连接。 将“服务器推”应用在 Web 程序中,首先考虑的是如何在功能有限的浏览器端接收、处理信息: 客户端如何接收、处理信息,是否需要使用套接口或是使用远程调用。客户端呈现给用户的是 HTML 页面还是 Java applet … 继续阅读

发表在 服务器端 | 标签为 , , , , | 留下评论

【转】(跨域)JSONP原理 $.getJSON 用法 jquery跨域

简介符合Web2.0特征的众多网站一个明显的特点就是采用Ajax。Ajax提供了在后台提交请求访问数据的功能。其实现主要使用的是XMLHttpRequest函数,这个函数允许客户端的Javascript发送到服务器端的HTTP请求并获得返回数据。Ajax同时也是目前众多的Mashup背后的驱动力量,他们都利用Ajax来聚合不同来源的信息。 理解同源策略的限制同源策略是指阻止代码获得或者更改从另一个域名下获得的文件或者信息。也就是说我们的请求地址必须和当前网站的地指相同。同源策略通过隔离来实现对资源的保护。这个策略的历史非常悠久从Netscape Navigator 2.0时代就开始了。 解决这个限制的一个相对简单的办法就是在服务器端发送请求,服务器充当一个到达第三方资源的代理中继。虽然是用广泛但是这个方法却不够灵活。另一个办法就是使用框架(frames),将第三方站点的资源包含进来,但是包含进来的资源同样要受到同源策略的限制。 有一个很巧妙的办法就是在页面中使用动态代码元素,代码的源指向服务地址并在自己的代码中加载数据。当这些代码加载执行的时候,同源策略就不会起到限制。但是如果代码试图下载文件的时候执行还是会失败,幸运的是,我们可以使用JSON(JavaScript Object Notation)来改进这个应用。 JSON和JSONP与XML相比,JSON是一个轻量级的数据交换格式。JSON对于JavaScript开发人员充满魅力的原因在于JSON本身就是Javascript中的对象。例如一个ticker对象   var ticker = {symbol:’IBM’,price:100}而JSON串就是   {symbol:’IBM’,price:100}这样我们就可以在函数的参数中传递JSON数据。我们很容易掌握在函数中使用动态的JSON参数数据,但是我们的目的并不是这个。通过使我们的函数能够加载动态的JSON数据,我们就能够处理动态的数据,这项技术叫做 Dynamic Javascript Insertion。我们看下面的例子index.html中   <script type=”text/javascript”>       function showPrice(data){           alert(“Symbol:” + data.symbol + “, Price:” + data.price);       }              var url = … 继续阅读

发表在 Javascript | 标签为 , , , , | 留下评论