>백엔드 개발 >PHP 튜토리얼 >웹 로그인권한 확인

웹 로그인권한 확인

WBOY
WBOY원래의
2016-08-08 09:06:482015검색

Http를 통해 서버의 서비스 소프트웨어 데이터에 액세스하면 브라우저에 다음 확인 팝업 상자가 나타납니다.
웹 로그인권한 확인

PHP 컬 방법을 사용하여 데이터를 가져오고 싶지만 사용자 이름과 비밀번호 확인 매개변수를 설정하는 방법을 모르기 때문에:
작동하지 않는 것을 발견했습니다:

<code>curl_setopt($curl, CURLOPT_USERPWD, "name:pwd"); 
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); </code>

포스트맨을 사용하여 로그인을 시뮬레이션한 후 요청 헤더에서 다음 항목을 발견했습니다.
웹 로그인권한 확인

그런 다음 PHP 컬 메서드에 요청 헤더를 추가합니다.

<code>curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json','Authorization:Basic TnhFY29AMjAxNjojQGlIeVg0eStHUFE='));</code>

이런 방법으로 데이터를 요청할 수 있습니다.
하지만 문제는 스크립트가 항상 실행되도록 서버에 배치해야 하기 때문에 이 하드 코딩된 확인이 만료되면 다시 실패하고 권한이 없다는 것입니다.
항상 로그인을 확인할 수 있도록 php Curl 사용자 이름과 비밀번호 매개변수를 어떻게 설정하나요?

답글 내용:

Http를 통해 서버의 서비스 소프트웨어 데이터에 액세스하면 브라우저에 다음 확인 팝업 상자가 나타납니다.
웹 로그인권한 확인

PHP 컬 방법을 사용하여 데이터를 가져오고 싶지만 사용자 이름과 비밀번호 확인 매개변수를 설정하는 방법을 모르기 때문에:
작동하지 않는 것을 발견했습니다:

<code>curl_setopt($curl, CURLOPT_USERPWD, "name:pwd"); 
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); </code>

포스트맨을 사용하여 로그인을 시뮬레이션한 후 요청 헤더에서 다음 항목을 발견했습니다.
웹 로그인권한 확인

그런 다음 PHP 컬 메서드에 요청 헤더를 추가합니다.

<code>curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json','Authorization:Basic TnhFY29AMjAxNjojQGlIeVg0eStHUFE='));</code>

이런 방법으로 데이터를 요청할 수 있습니다.
하지만 문제는 스크립트가 항상 실행되도록 서버에 배치해야 하기 때문에 이 하드 코딩된 확인이 만료되면 다시 실패하고 권한이 없다는 것입니다.
항상 로그인을 확인할 수 있도록 php Curl 사용자 이름과 비밀번호 매개변수를 어떻게 설정하나요?

이것은 일반적으로 수행되지 않는 PHP HTTP 검증입니다. 결국 HTTP 검증은 너무 간단합니다

http://php.net/manual/zh/feat...

<code>$username='ABC';
$password='XYZ';
$URL='<URL>';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
$result=curl_exec ($ch);
curl_close ($ch);</code>

  1. CURL을 사용하여 로그인을 시뮬레이션하고 인증 토큰 받기

  2. 1단계에서 얻은 토큰을 사용하여 다음 요청을 수행하세요

1단계의 토큰은 적절하게 캐시될 수 있으며, 캐시 시간은 서버에 따라 다릅니다.
여담: 개인적으로 서버쪽은 Yii2가 쓴 것 같아요.

이전에 비슷한 일을 한 적이 있는데 시간도 오래 걸리고 너무 번거로워서 결국 phantomjs로 해결했습니다. PHP는 노드 프로그램을 호출합니다.

이 속성 추가

<code>$user = 'hello';
$pass = '$world';
curl_setopt($ch, CURLOPT_USERPWD, "{$user}:{$pass}");  </code>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.