免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2683 | 回复: 1
打印 上一主题 下一主题

要改写一段php程序 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-09 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-24 20:49 |只看该作者 |倒序浏览
下面这段php程序,是在http://code.google.com/p/opm-ser ... er/php/opm.php?r=53
找到的,是用来帮助手机opera mini浏览器连接服务器的。现在有个cgi空间,想用Perl实现同样的功能,是否需要安装www::curl模块?代码里的php://input在Perl里要怎么弄?谢谢

  1. <?php
  2. if ($_SERVER['REQUEST_METHOD'] == 'GET') {
  3. if (function_exists("curl_init")) {
  4.   if (!$_GET["test"] != null) {
  5.    header( "HTTP/1.1 301 Moved Permanently" );
  6.    header( "Location: http://www.google.com/ncr" );
  7.   } else {
  8.    echo 'Hello Opera Mini Server! ';
  9.   }
  10. } else {
  11.   echo 'cURL is not enabled.';
  12. }
  13. } else {
  14. $curlInterface = curl_init();
  15. $headers[] = 'Connection: Keep-Alive';
  16. $headers[] = 'content-type: application/xml';
  17. $headers[] = 'User-Agent: Java0';
  18. curl_setopt_array($curlInterface, array(
  19.   CURLOPT_URL => 'http://server4.operamini.com',
  20.   CURLOPT_HTTPHEADER => $headers,
  21.   CURLOPT_POST => 1,
  22.   CURLOPT_POSTFIELDS => @file_get_contents('php://input'))
  23.     );
  24. $result = curl_exec($curlInterface);
  25. curl_close($curlInterface);
  26. header('Content-Type: application/octet-stream');
  27. header('Cache-Control: private, no-cache');
  28. echo $result;
  29. }
  30. ?>
复制代码

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-03-09 06:20:00
2 [报告]
发表于 2011-04-26 00:04 |只看该作者
本帖最后由 unix666 于 2011-04-27 22:30 编辑

今晚又看了一下,'php://input'在perl里应该就是cgi得到的未经处理的$buffer。这个程序感觉用lwp应该可以做到,写了一个,放在cgi空间里经过运行是有问题的,浏览网址手机浏览器没反应。

4.27 更新代码 这段程序放在cgi空间里,手机浏览器尽管会提示"d43连接错误"或"验证服务器证书失败",但有时会显示出部分页面,这说明还要对程序做细小的修改。

  1. #!/usr/bin/perl
  2. use LWP;
  3. use LWP::UserAgent;

  4. my $browser = new LWP::UserAgent(keep_alive => 1);

  5. my $url = 'http://82.145.209.253';
  6. my $header =new HTTP::Headers;

  7. if($ENV{'REQUEST_METHOD'}eq"GET"){
  8. print "Location: http://www.google.com\n\n";
  9. }
  10. elsif($ENV{'REQUEST_METHOD'}eq"POST"){
  11. read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});

  12. $header->content_type('application/xml');
  13. $header->user_agent('Java0');
  14. $header->content_length(length($buffer));

  15. $request = HTTP::Request->new(POST=>$url,$header,$buffer);
  16. $response = $browser->request($request);

  17. print "Cache-Control: private, no-cache\n";
  18. print "Content-Type: application/octet-stream\n\n";

  19. print $response->content;
  20. }

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP