PHP는 제출 후 데이터를 시뮬레이션하며 웹사이트 수집, 로그인 등에 사용될 수 있습니다.
- //포럼에 로그인하는 프로그램을 예로 들어보세요
- function bbslogin($user_login, $password, $host , $port = "80") {
- //제출해야 할 데이터 게시
- $argv = array('cookie' => array('user_login' => $user_login, 'password' = > $password, ' _wp_http_referer' => '/bbpress/', 're' => '', '기억' => true));
- foreach ($argv['cookie'] 키 => $value ) {
- $params[] = $key . $value;
- }
- $params = implode('&', $params);
- $ header = "POST /bbpress /bb-login.php HTTP/1.1rn";
- $header .= "Host:$host:$portrn";
- $header .= "콘텐츠 유형: application/x -www-form-urlencodedrn ";
- $header .= "콘텐츠 길이: " . strlen($params) . "rn";
- $header .= "연결: Closernrn";
- $header .= $params;
- $fp = fsockopen($host, $port);
- fputs($fp, $header);
- while (!feof($fp)) {
- $str = fgets($fp) ;
- //다음은 주로 쿠키를 시뮬레이션하고 동기적으로 로그인하는 데 사용할 수 있는 나만의 논리 코드입니다.
- if (!(strpos($str, "Set-Cookie:" ) === false)) {
- $tmparray = 폭발(" ", $str);
- $cookiearray = 폭발("=", $tmparray[1]);
- $cookiepaths = 폭발( "=", $tmparray[6] );
- $cookiename = urldecode($cookiearray[0]);
- $cookievalue = urldecode(substr($cookiearray[1], 0, strlen($cookiearray[1) ]) - 1));
- $cookietime = time() 3600 * 24 * 7;
- $cookiepath = urldecode(substr($cookiepaths[1], 0, strlen($cookiepaths[1]) - 1 ));
- setcookie($cookiename, $cookievalue, $cookietime, $cookiepath);
- }
- }
- fclose($fp);
- }
- ?>
코드 복사
- //PHP POST 데이터에 대한 세 가지 방법
- //PHP에는 데이터를 게시하는 세 가지 방법, 즉 Curl, 소켓, file_get_contents가 있습니다.
-
- /**
- * 소켓 버전
- * 사용법:
- * $post_string = "app=socket&version=beta";
- * request_by_socket('facebook.cn','/restServer.php',$post_string) ;
- */
- 함수 request_by_socket($remote_server, $remote_path, $post_string, $port = 80, $timeout = 30)
- {
- $socket = fsockopen ($remote_server, $port, $errno, $errstr, $timeout);
- if (!$socket) die("$errstr($errno)");
- fwrite($socket , " POST $remote_path HTTP/1.0rn");
- fwrite($socket, "User-Agent: 소켓 예제rn");
- fwrite($socket, "HOST: $remote_serverrn");
- fwrite ($ 소켓, "콘텐츠 유형: 애플리케이션/x-www-form-urlencodedrn");
- fwrite($socket, "콘텐츠 길이: " . (strlen($post_string) 8) . 'rn'); > fwrite($socket, "수락:*/*rn");
- fwrite($socket, "rn");
- fwrite($socket, "mypost=$post_stringrn");
- fwrite( $socket, "rn");
- $header = "";
- while ($str = Trim(fgets($socket, 4096))) {
- $header .= $str;
- }
- $data = "";
- while (!feof($socket)) {
- $data .= fgets($socket, 4096);
- }
- return $data ;
- }
- /**
- * Curl 버전
- * 사용법:
- * $post_string = "app=request&version=beta";
- * request_by_curl('http://facebook.cn/restServer.php',$post_string ) ;
- */
- 함수 request_by_curl($remote_server, $post_string)
- {
- $ch = cur_init() ;
- 컬_setopt($ch, CURLOPT_URL, $remote_server);
- 컬_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string);
- 컬_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- 컬_setopt( $ch, CURLOPT_USERAGENT, "Jimmy의 CURL 예제 베타");
- $data =curl_exec($ch);
- curl_close($ch);
- return $data;
- }
-
- /**
- * 기타 버전
- * 사용법:
- * $post_string = "app=request&version=beta";
- * request_by_other('http://facebook.cn/restServer.php',$post_string ) ;
- */
- function request_by_other($remote_server, $post_string)
- {
- $context = array(
- 'http' => array(
- 'method' => 'POST',
- 'header' => 'Content-type: application/x-www-form-urlencoded' .
- 'rn'.'User-Agent : Jimmy의 POST 예제 베타' .
- 'rn'.'콘텐츠 길이:' . strlen($post_string) 8,
- 'content' => 'mypost_string)
- );
- $stream_context = stream_context_create($context);
- $data = file_get_contents($remote_server, false, $stream_context);
- return $data;
- }
-
- ?>
-
코드 복사
|