Home > Backend Development > PHP Tutorial > PHP code accessed via curl login

PHP code accessed via curl login

WBOY
Release: 2016-07-25 08:45:47
Original
1040 people have browsed it
  1. $data='username=zjzhoufy@126.com&password=1q2w3e&remember=1';
  2. $curlobj = curl_init(); // Initialization
  3. curl_setopt($curlobj, CURLOPT_URL, "http: //www.imooc.com/user/login"); // Set the URL to access the web page
  4. curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true); // Do not print it out directly after execution
  5. // Cookie related settings, this part The setting needs to be set before all sessions start
  6. date_default_timezone_set('PRC'); // When using cookies, the time zone must be set first
  7. curl_setopt($curlobj, CURLOPT_COOKIESESSION, TRUE);
  8. curl_setopt($curlobj, CURLOPT_COOKIEJAR, 'cookie.txt ' ); //Save
  9. curl_setopt($curlobj, CURLOPT_COOKIEFILE, 'cookie.txt '); //Read
  10. curl_setopt($curlobj, CURLOPT_HEADER, 0);
  11. curl_setopt($curlobj, CURLOPT_FOLLOWLOCATION, 1); //This will Let cURL support page link jump
  12. curl_setopt($curlobj, CURLOPT_COOKIE,session_name().'='.session_id());
  13. curl_setopt($curlobj, CURLOPT_POST, 1);
  14. curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data );
  15. curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded; charset=utf-8",
  16. "Content-length: ".strlen($data)
  17. ));
  18. curl_exec( $curlobj); // Execute
  19. curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/space/index");
  20. curl_setopt($curlobj, CURLOPT_POST, 0);
  21. curl_setopt($curlobj, CURLOPT_HTTPHEADER , array("Content-type: text/xml"
  22. ));
  23. $output=curl_exec($curlobj); // Execute
  24. curl_close($curlobj); // Close cURL
  25. echo $output;
  26. ?>
Copy code


The above code is not perfect. We should store the cookie in the cache and should not persist it, and such persistence can only be accessed by a single user.

So, actually we just need to set

  1. CURLOPT_COOKIESESSION
Copy code

Just do the following

  1. $data='username=demo_demo@126.com&password=123456qwe&remember=1';
  2. $curlobj = curl_init(); // Initialization
  3. curl_setopt($curlobj, CURLOPT_URL , "http://www.imooc.com/user/login"); // Set the URL to access the web page
  4. curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true); // Do not print it out directly after execution
  5. // Cookie related Settings, this part of the setting needs to be set before all sessions start
  6. date_default_timezone_set('PRC'); // When using cookies, the time zone must be set first
  7. curl_setopt($curlobj, CURLOPT_COOKIESESSION, TRUE);
  8. curl_setopt($curlobj, CURLOPT_HEADER, 0 );
  9. curl_setopt($curlobj, CURLOPT_COOKIE,session_name().'='.session_id());
  10. // Comment out this line, because this setting must turn off safe mode and open_basedir, which is not good for server security
  11. //curl_setopt ($curlobj, CURLOPT_FOLLOWLOCATION, 1);
  12. curl_setopt($curlobj, CURLOPT_POST, 1);
  13. curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);
  14. curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("application/x-www - form-urlencoded; charset=utf-8",
  15. "Content-length: ".strlen($data)
  16. ));
  17. curl_exec($curlobj); // Execute
  18. curl_setopt($curlobj, CURLOPT_URL, "http:/ /www.imooc.com/space/index");
  19. curl_setopt($curlobj, CURLOPT_POST, 0);
  20. curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("Content-type: text/xml"
  21. ));
  22. $output =curl_redir_exec($curlobj); // Execute
  23. curl_close($curlobj); // Close cURL
  24. echo $output;
  25. /**
  26. * Customized implementation of page link jump and capture
  27. */
  28. function curl_redir_exec($ch,$debug="")
  29. {
  30. static $curl_loops = 0;
  31. static $curl_max_loops = 20;
  32. if ($curl_loops++ >= $curl_max_loops)
  33. {
  34. $curl_loops = 0;
  35. return FALSE;
  36. }
  37. curl_setopt($ch, CURLO PT_HEADER, true ); // Turn on the header to capture the new URL redirected to
  38. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  39. $data = curl_exec($ch);
  40. // Split the returned content
  41. $h_len = curl_getinfo ($ch, CURLINFO_HEADER_SIZE);
  42. $header = substr($data,0,$h_len);
  43. $data = substr($data,$h_len - 1);
  44. $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  45. if ($http_code == 301 || $http_code == 302) {
  46. $matches = array();
  47. preg_match('/Location:(.*?)n/', $header, $matches);
  48. $ url = @parse_url(trim(array_pop($matches)));
  49. // print_r($url);
  50. if (!$url)
  51. {
  52. //couldn't process the url to redirect to
  53. $curl_loops = 0 ;
  54. return $data;
  55. }
  56. $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));
  57. if (!isset($url['scheme']))
  58. $url['scheme'] = $last_url[ 'scheme'];
  59. if (!isset($url['host']))
  60. $url['host'] = $last_url['host'];
  61. if (!isset($url['path'] ))
  62. $url['path'] = $last_url['path'];
  63. $new_url = $url['scheme'] . '://' . $url['host'] . $url[' path'] . (isset($url['query'])?'?'.$url['query']:'');
  64. curl_setopt($ch, CURLOPT_URL, $new_url);
  65. return curl_redir_exec($ ch);
  66. } else {
  67. $curl_loops=0;
  68. return $data;
  69. }
  70. }
  71. ?>
Copy code


curl, PHP


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template