Php simulates post submission of data, which is of great use and can be used for website Collection and login.
-
- // Use a program to log on to a forum as an example.
- Function bbslogin ($ user_login, $ password, $ host, $ port = "80 "){
- // The post data to be submitted
- $ Argv = array ('cookie '=> array ('User _ login' => $ user_login, 'password' => $ password, '_ wp_http_referer' => '/bbpress/', 're' => '', 'Remember '=> true ));
- Foreach ($ argv ['cookies'] as $ key => $ value ){
- $ Params [] = $ key. '='. $ value;
- }
- $ Params = implode ('&', $ params );
- $ Header = "POST/bbpress/bb-login.php HTTP/1.1 \ r \ n ";
- $ Header. = "Host: $ host: $ port \ r \ n ";
- $ Header. = "Content-Type: application/x-www-form-urlencoded \ r \ n ";
- $ Header. = "Content-Length:". strlen ($ params). "\ r \ n ";
- $ Header. = "Connection: Close \ r \ n ";
- $ Header. = $ params;
- $ Fp = fsockopen ($ host, $ port );
- Fputs ($ fp, $ header );
- While (! Feof ($ fp )){
- $ Str = fgets ($ fp );
- // The following is your own logic code. here we mainly simulate cookies for synchronous login.
- If (! (Strpos ($ str, "Set-Cookie:") === false )){
- $ Tmparray = explode ("", $ str );
- $ Cookiearray = explode ("=", $ tmparray [1]);
- $ Cookiepaths = explode ("=", $ 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 );
- }
- ?>
- // Three methods of php post data
- // Php can post data in three ways: Curl, socket, and file_get_contents:
- /**
- * Socket version
- * Usage:
- * $ Post_string = "app = socket & version = beta ";
- * Request_by_socket ('Facebook. cn', '/restServer. php', $ post_string );
- */
- Function 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.0 \ r \ n ");
- Fwrite ($ socket, "User-Agent: Socket Example \ r \ n ");
- Fwrite ($ socket, "HOST: $ remote_server \ r \ n ");
- Fwrite ($ socket, "Content-type: application/x-www-form-urlencoded \ r \ n ");
- Fwrite ($ socket, "Content-length:". (strlen ($ post_string) + 8). '\ r \ n ');
- Fwrite ($ socket, "Accept: */* \ r \ n ");
- Fwrite ($ socket, "\ r \ n ");
- Fwrite ($ socket, "mypost = $ post_string \ r \ n ");
- Fwrite ($ socket, "\ r \ n ");
- $ Header = "";
- While ($ str = trim (fgets ($ socket, 4096 ))){
- $ Header. = $ str;
- }
- $ Data = "";
- While (! Feof ($ socket )){
- $ Data. = fgets ($ socket, 4096 );
- }
- Return $ data;
- }
- /**
- * Curl version
- * Usage:
- * $ Post_string = "app = request & version = beta ";
- * Request_by_curl ('http: // facebook.cn/restserver.php', then post_string );
- */
- Function request_by_curl ($ remote_server, $ post_string)
- {
- $ Ch = curl_init ();
- Curl_setopt ($ ch, CURLOPT_URL, $ remote_server );
- Curl_setopt ($ ch, CURLOPT_POSTFIELDS, 'mypost = '. $ post_string );
- Curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true );
- Curl_setopt ($ ch, CURLOPT_USERAGENT, "Jimmy's CURL Example beta ");
- $ Data = curl_exec ($ ch );
- Curl_close ($ ch );
- Return $ data;
- }
- /**
- * Other versions
- * Usage:
- * $ Post_string = "app = request & version = beta ";
- * Request_by_other ('http: // facebook.cn/restserver.php', then post_string );
- */
- Function request_by_other ($ remote_server, $ post_string)
- {
- $ Context = array (
- 'Http' => array (
- 'Method' => 'post ',
- 'Header' => 'Content-type: application/x-www-form-urlencoded '.
- '\ R \ n'. 'user-Agent: Jimmy \'s POST Example beta '.
- '\ R \ n'. 'content-length:'. strlen ($ post_string) + 8,
- 'Content' => 'mypost = '. $ post_string)
- );
- $ Stream_context = stream_context_create ($ context );
- $ Data = file_get_contents ($ remote_server, false, $ stream_context );
- Return $ data;
- }
- ?>
|