Tag Archive for 'PHP'

软院通知RSS(附代码)

ponyfish的那个通配符很难设,于是自己用PHP写了一个
两个订阅地址,择一即可:
http://www.JerryHong.com/SSE_RSS/
这个反应比较慢(其实是定位到index.php的),但肯定是最新的
http://www.JerryHong.com/SSE_RSS/index.xml
这个反应很快(xml文件嘛),但要有人访问了上面那个地址这个xml文件才会被更新

改进空间:
1.让index.php也直接返回xml中的内容,而从sse官方获取最新通知的动作由ajax或IFrame来触发,但是rss阅读器应该不会支持这两种……
2.怎么才能统计订阅数?是不是统计每天有阅读活动的读者数量?在统计每天有阅读活动的读者数量时要不要记录IP来判断是不是今天已经阅读过了?
Continue reading '软院通知RSS(附代码)'

成功让小黄花挂到自己的blog


乱逛中发现了这个新加坡人做的网站,
功能是根据rss得到某网站的更新再发送邮件到某个邮箱去。
嗯,这下可以把MSN的小黄花挂过来了。

1.去自己的space->选项->电子邮件发布
2.启用电子邮件发布,发件人填写rssfwd@rssfwd.com,机密字自己填写(例XXX),保存,去页面上第5步的地方把那个接收邮箱记下
3.去http://www.rssfwd.com,第一步填写自己blog的rss,可以为挂在feedburner上的,也可以为像我这样的:http://www.JerryHong.com/feed/
4.第二步把刚才记下的接收邮箱填进去
5.rssfwd应该会发一封确认信到你的blog去,去点一下就好了

这样子大家看小黄花就知道我的blog有没有更新了(当然前提是加了我的MSN- -b)。
定时刷新,延迟是难免的。
问题也有,space上的文章里信息太多,可能会被别人轻易地un-subscribe,可能在rssfwd上有设置吧。

PS:基于RSS的工具实在是丰富又好玩。不过……没难度……
怎么就没人做个plugin让人在写tags的时候可以看到已经有的tags啊!!!

试验让BLOG更新挂到校内上去,不过这个看来需要自己写程序了

PHP + ADO + ACCESS 类库

不是我想用ACCESS的,么办法啊,用户即上帝么。
更何况这上帝不懂数据库啥的……与其劝他换个服务商还不如委屈自己写个类库将就一下。
网上有ODBC版本,但在我这用有点小小的版本问题……又是让人无奈的上帝。

贴代码啦,代码晕眩症的就不用点全文链接了。
Continue reading 'PHP + ADO + ACCESS 类库'

怒了,投票机放出!

亏我信任Tongji Google Camp的办事效率,还发了个征票帖

这几天发现前几名的投票数已经超过6万了,一个小小的LAVA灯可以招来6W+的人流?鬼才相信!

ASP页面,仅cookie记录(IE投过还可以在fireforx里投),无验证码。要做个投票机太简单了。
Download(399 times)

还是留个底线吧,有密码哦
PS:C#就是好用,做投票机都很轻松

ieHTTPHeadersSetup 下载

IE插件,可以看到进出的header消息,能搜到的链接都太慢了,自己放一个吧
Download(323 times)
update:推荐大家用IEhttpAnalyzer,功能更全,而且免费

自制PHP+Javascript自动投票机v1.0

昨天碰到一个投票页面,可能自己比较闲,可能也是因为这个页面比较弱智吧,一时兴起看看自己能不能写一个PHP自动投票程序来玩玩他们。
不方便透露页面地址,就说下特征吧,这个页面不要求验证码,但是一段时间(10分钟左右)内反复提交的话它会弹出一个框说一个IP只能投一票。为什么一个IP只能投一票还限定时间呢?我想应该是由于当前的IP分配使很多人挤在一个公网IP下,这样子不太公平,就只好表面上吓唬一下,实际上只是有cooldown设置罢了。

好了,那么就有两种途径,一个是伪装自己发包的源IP,还有一个是写自动发包程序。前一种还不知怎么做(好象是层不太对),但后一种用一般用来做Ajax的window.XMLHttpRequest可以比较轻松地搞定。

先用了SpyNet, Ethereal这些经典的抓包程序,明明把目标设为无线网卡Intel(R) PRO/Wireless 3945ABG Network Connection,也设好过滤器了,但一直抓不到包。一怒之下把本本搬到路由器旁插线上网,包源源不断地蹦出来了。。。无语,但用这些软件分析出来的包太复杂,我要的只是head信息,于是去国外网站花两个小时拖了一个IE插件下来,装上去以后可以直接看到IE收发的包,真方便。

收到包以后就简单了,通过查看包的内容和投票页面的源代码,发现要递交的只是
POST:sel58=yes&Submit=%CD%B6%C6%B1,
Get:?action=add&id=5

连Cookies都没有!更不要说Session了。

打开EditPlus开始写:

先个测试的页面,是目标页面的简化版:
vote.php

  1. <?php
  2. $stra=$_POST['sel58'];
  3. $filename='counter.txt';
  4. if($handle=fopen($filename, 'a'))
  5. {
  6. fwrite($handle, $stra);
  7. }
  8. fclose($handle);
  9. echo $stra;
  10. echo 'done';
  11. ?>

然后是投票页面,写完后才发现没用到PHP。。。完全是Javascript...
AutoVote.php

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2.  
  3. <script type="text/javascript" language="javascript">     var http_request = false;     function makeRequest(url) {         http_request = false;
  4.  
  5. if (window.XMLHttpRequest) { // Mozilla, Safari,...         alert(\'firefox\');             http_request = new XMLHttpRequest();             if (http_request.overrideMimeType) {                 http_request.overrideMimeType(\'text/xml\');             }         } else if (window.ActiveXObject) { // IE         alert(\'ie\');             try {                 http_request = new ActiveXObject("Msxml2.XMLHTTP");             } catch (e) {                 try {                     http_request = new ActiveXObject("Microsoft.XMLHTTP");                 } catch (e) {}             }         }
  6.  
  7. if (!http_request) {             alert(\'Giving up :( Cannot create an XMLHTTP instance\');             return false;         }         //http_request.setHeader("Charset","GB2312");         http_request.onreadystatechange = alertContents;         http_request.open(\'POST\', url, true);         http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");/*这句少了郁闷好久*/         //alert(\'open succeeded\');         http_request.send(\'sel58=yes&amp;Submit=%CD%B6%C6%B1\');         //alert(\'post succeeded\');
  8.  
  9. }
  10.  
  11. function alertContents() {
  12.  
  13. if (http_request.readyState == 4) {             if (http_request.status == 200) {                 alert(http_request.responseText);//这个可以收到返回的Text数据                 //alert(\'连接到服务器\');             } else {                 alert(\'There was a problem with the request.\');             }         }
  14.  
  15. }     window.setInterval("makeRequest(\'vote.php\')", 600000);//10分钟一次!vote.php为目标页面 </script>
  16. <span>
  17. </span>     style="cursor: pointer; text-decoration: underline"
  18. onclick="makeRequest('vote.php')"&amp;gt;
  19. Make a request
  20. ?>

把两个页面放在Apache的htdos目录下测试,一切OK,把目标页面改为我要投票的对象,然后就等着吧,10分钟弹出个框返回结果。(当然也可以在Apache下面改成1毫秒一次,体验一下手忙脚乱的感觉。。。)

然后把那个IE窗口最小化,看着票数慢慢地上升。。。

升。。。
升。。。
升。。。
升。。。
升。。。
升。。。
返回莫名其妙的结果。。。
返回莫名其妙的结果。。。
返回莫名其妙的结果。。。

??打开那个投票页面看了一下,原来管理员不知什么时候(应该就是刚才)加了一个验证码。。。难不成要跟你斗到底。。。看了一下源代码,只是多了一句:

  1. <script src="authimg.php" language="javascript"></script>

看了一下那个authimg.php,显示的是

  1. document.write('gndBdh')

gndBdh应该是随机生成的字串,既然要和投票接收页面配合的话肯定要用session或cookie,看了一下head,果然多了

  1. Set-Cookie: PHPSESSID=dc48aedcd03478a0ee6f13603b37937e; path=/

模拟一下cookie的话应该可以,不过我想睡觉了。。。SO我去睡觉了,可爱的管理员Byebye...