목차
回复讨论(解决方案)

curl函数

Jun 23, 2016 pm 02:12 PM
컬 기능

Curl PHP

function search($url,$curlPost){
$cookiejar = realpath ( 'cookie.txt' );
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url);
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $curlPost );
curl_setopt ( $ch, CURLOPT_COOKIEJAR, $cookiejar ); // 要回传cookie
$data=curl_exec ( $ch );
curl_close ( $ch );
return $data;
 }
?>

我想用PHP实现外网机器通过我的电脑访问内网的资源,一张截图是我在内网登录内网的网站的数据交互截图,另一张是通过我的PHP文件用curl函数访问时的截图,它提示少了什么文件。请问有人知道怎么解决吗

回复讨论(解决方案)

你仅仅模拟一个页面是不可以的,你现在只是模拟的login!checkLogin.action,要在这个内容中将header.html等替换成你用curl获取的连接,然后用curl获取内容展现出来,也就是header.html要变成curl.php?page=header.html。
如果你不替换的话,是在你模拟curl的php的同目录下找header.html,我估计肯定不存在。

你好,那你能告诉我怎么实现吗

仅仅用你那个 search 函数是完成不了了
从截图上看,你那是个框架页面,你只向外网返回了框架布局页数据,并没有向外网返回每一个框架页的数据

你这个应用应写成一个代理(proxy)程序才行

我向第一个界面发送了数据,内网服务器不是会给我返回下面的4个界面吗,而我又是直接输出的,怎么还不能打印出来呢

不错,内网服务器是会给你返回下面的4个界面
但这些页面不都是内网的吗?从外网怎么能直接访问到?
要是能从外网直接访问,那你还要写函数干什么?

我的意思是我本机在内网用curl函数取得这四个界面,然后将这四个界面的数据传给外网的访问者。为什么这4个界面不能打印出来呢,而且四个界面都取到了并且都传给了他怎么还说缺少界面呢?

比如布局页中有 
你说那个 top.htm 是指向哪里的?
如果是指向内网的,那么外网可以访问到吗?

iframe的机制是
1、浏览器获取携带iframe元素的页面
2、浏览器渲染页面
3、浏览器检测iframe元素
4、浏览器重新请求iframe包含的页面内容
5、渲染iframe包含的页面

对应你这里就是
1、浏览器发起请求login!checkLogin.action
2、渲染页面
3、检测到iframe元素(例如包含header.html的iframe)
4、浏览器重新请求header.html
5、渲染header.html页面

现在你的请情况是这样
1、浏览器对你的主机请求,你的主机请求内网login!checkLogin.action
2、浏览器渲染页面
3、检测到iframe元素
4、 浏览器对你请求header.html,你那里来的header.html?

那么处理方案就是
1、浏览器对你的主机请求,你的主机请求内网login!checkLogin.action,同时修改iframe中src由原来的header.html 改为 代理.php?page=headerl.html
2、浏览渲染页面
3、检测到iframe
4、对你的主机发起请求 代理.php?page=header.html, 代理.php去内网获取html内容返回
5、渲染header.html页面的实际内容

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

11 최고의 PHP URL 쇼트너 스크립트 (무료 및 프리미엄) 11 최고의 PHP URL 쇼트너 스크립트 (무료 및 프리미엄) Mar 03, 2025 am 10:49 AM

11 최고의 PHP URL 쇼트너 스크립트 (무료 및 프리미엄)

Laravel의 플래시 세션 데이터로 작업합니다 Laravel의 플래시 세션 데이터로 작업합니다 Mar 12, 2025 pm 05:08 PM

Laravel의 플래시 세션 데이터로 작업합니다

Laravel 테스트에서 단순화 된 HTTP 응답 조롱 Laravel 테스트에서 단순화 된 HTTP 응답 조롱 Mar 12, 2025 pm 05:09 PM

Laravel 테스트에서 단순화 된 HTTP 응답 조롱

Laravel Back End : Part 2, React가있는 React 앱 구축 Laravel Back End : Part 2, React가있는 React 앱 구축 Mar 04, 2025 am 09:33 AM

Laravel Back End : Part 2, React가있는 React 앱 구축

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 Mar 14, 2025 am 11:42 AM

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법

Instagram API 소개 Instagram API 소개 Mar 02, 2025 am 09:32 AM

Instagram API 소개

Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Mar 13, 2025 pm 12:08 PM

Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트

라 라벨에서 알림 라 라벨에서 알림 Mar 04, 2025 am 09:22 AM

라 라벨에서 알림

See all articles