>백엔드 개발 >PHP 튜토리얼 >컬 로그인을 통해 액세스되는 PHP 코드

컬 로그인을 통해 액세스되는 PHP 코드

WBOY
WBOY원래의
2016-07-25 08:45:471014검색
  1. $data='username=zjzhoufy@126.com&password=1q2w3e&remember=1';
  2. $curlobj = 컬_init( ); // 초기화
  3. curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/user/login") // 웹페이지에 접속하기 위한 URL 설정
  4. curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true ); // 실행 후 바로 출력하지 않음
  5. // 쿠키 관련 설정은 모든 세션이 시작되기 전에 설정해야 함
  6. date_default_timezone_set('PRC') // 사용 시 쿠키를 사용하려면 먼저 시간대를 설정해야 합니다
  7. curl_setopt($curlobj, CURLOPT_COOKIESESSION, TRUE);
  8. curl_setopt($curlobj, CURLOPT_COOKIEJAR, 'cookie.txt ') //Save
  9. curl_setopt($curlobj, CURLOPT_COOKIEFILE , 'cookie.txt') ; CURLOPT_COOKIE,session_name().'='.session_id());
  10. curl_setopt($curlobj, CURLOPT_POST, 1)
  11. curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data);
  12. curl_setopt ($curlobj, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded; charset=utf-8",
  13. "콘텐츠 길이: ".strlen($data)
  14. ));
  15. 컬_exec($curlobj); // 실행
  16. curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/space/index");
  17. curl_setopt($ curlobj, CURLOPT_POST, 0);
  18. curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("Content-type: text/xml"
  19. ))
  20. $output=curl_exec($curlobj); 🎜>curl_close($curlobj); // cURL 닫기
  21. echo $output;
  22. ?>
  23. 코드 복사
위 코드는 완벽하지 않습니다. 쿠키를 캐시에 저장해야 하며 유지해서는 안 되며 이러한 지속성은 단일 사용자만 액세스할 수 있습니다.


따라서 실제로는

CURLOPT_COOKIESESSION
    코드 복사
만 설정하면 됩니다.

다음과 같습니다

  1. $data='username=demo_demo@126.com&password=123456qwe&remember=1';
  2. $curlobj = cur_init(); // 초기화
  3. curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/user/login") // 웹페이지 접속을 위한 URL 설정
  4. curl_setopt( $curlobj, CURLOPT_RETURNTRANSFER, true); // 실행 후 바로 출력하지 마세요
  5. // 쿠키 관련 설정은 모든 세션이 시작되기 전에 설정해야 합니다
  6. date_default_timezone_set('PRC' ); // 쿠키를 사용할 때는 시간대를 먼저 설정해야 합니다.
  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. // 이 설정은 서버 보안에 해로운 안전 모드와 open_basedir을 꺼야 하므로 이 줄을 주석 처리하세요.
  11. //curl_setopt($curlobj , curlopt_follinglocation, 1); /x-www-form-urlencoded; charset=utf-8",
  12. "콘텐츠 길이: ".strlen($data)
  13. ));
  14. curl_exec($curlobj); // 실행
  15. curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/space/index");
  16. curl_setopt($curlobj, CURLOPT_POST, 0)
  17. curl_setopt($curlobj, CURLOPT_HTTPHEADER, 배열 ("Content-type: text/xml "
  18. ));
  19. $output=curl_redir_exec($curlobj); // cURL 닫기
  20. echo $output ;
  21. /* *
  22. * 페이지 링크 점프 및 캡처 맞춤형 구현
  23. */
  24. function curl_redir_exec($ch,$debug="")
  25. {
  26. static $curl_loops = 0
  27. static $curl_max_loops = 20;
  28. if ($curl_loops >= $curl_max_loops)
  29. {
  30. $curl_loops = 0;
  31. return FALSE; true); // 헤더가 켜진 경우에만
  32. 으로 리디렉션된 새 URL을 가져옵니다.
  33. $data = cur_exec($ch)
  34. 반환된 콘텐츠
  35. $h_len = 컬_getinfo($ch, CURLINFO_HEADER_SIZE);
  36. $header = substr($data,0,$h_len);
  37. $data = substr($data,$h_len - 1);
  38. $http_code = cur_getinfo($ch, CURLINFO_HTTP_CODE);
  39. if ($http_code == 301 || $http_code == 302) {
  40. $matches = array()
  41. preg_match ('/Location:(.*? )n/', $header, $matches);
  42. $url = @parse_url(trim(array_pop($matches)))
  43. // print_r($url) ;
  44. if (!$url )
  45. {
  46. //
  47. 로 리디렉션할 URL을 처리할 수 없습니다. $curl_loops = 0
  48. return $data; $last_url = parse_url(curl_getinfo($ch , CURLINFO_EFFECTIVE_URL));
  49. if (!isset($url['scheme']))
  50. $url['scheme'] = $last_url['scheme'];
  51. if (!isset($ url['host']))
  52. $url['host'] = $last_url['host']
  53. if (!isset($url['path') ]))
  54. $url[ 'path'] = $last_url['path'];
  55. $new_url = $url['scheme'] '://' . '] . $url['path' ] . (isset($url['query'])?'?'.$url['query']:'')
  56. 컬_세톱($ch, CURLOPT_URL, $ new_url);
  57. return cur_redir_exec($ch);
  58. } else {
  59. $curl_loops=0
  60. return $data; ;
  61. 코드 복사
  62. 컬, PHP


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