output_add_rewrite_var는 지정된 쿼리 변수와 모든 출력 URL에 값을 자동으로 추가하는 데 사용되는 PHP의 내장 기능입니다. 일반적인 사용법은 다음과 같습니다.
<?php
session_start();
output_add_rewrite_var('PHPSESSID', session_id());
?>
이 기능은 페이지의 출력 내용의 모든 URL을 스캔하고 매개 변수 phpsessid = xxxx를 자동으로 추가합니다.
출력 버퍼가 켜지지 않습니다
output_add_rewrite_var는 PHP의 출력 버퍼링 메커니즘에 따라 다릅니다. 출력 버퍼링이 활성화되지 않은 경우 기능은 교체 용 출력 컨텐츠를 캡처 할 수 없습니다.
URL 형식은 표준화되지 않았거나 인코딩 문제가 아닙니다 <br> 페이지의 URL이 표준 HTTP 또는 HTTPS 형식이 아니거나 특수 문자가있는 경우 output_add_rewrite_var가 올바르게 식별되고 처리되지 않을 수 있습니다.
동적으로 생성 된 URL은 페이지에서 사용됩니다
일부 URL은 JavaScript를 통해 동적으로 생성되거나 나중에 스 플라이 싱되며 output_add_rewrite_var는 서버 측에서 처리 할 때 이러한 변경 사항을 인식 할 수 없습니다.
HTTP 헤더 전송 또는 출력 인터럽트가 존재합니다 <br> output_add_rewrite_var를 호출하기 전에 페이지가 일부 출력을 보낸 경우 기능이 제대로 바뀌지 않을 수 있습니다.
출력 버퍼링이 코드에서 활성화되어 있는지 확인하고 적절한 위치에서 output_add_rewrite_var를 호출하십시오.
<?php
ob_start();
session_start();
output_add_rewrite_var('PHPSESSID', session_id());
// 페이지 콘텐츠 출력
echo '<a href="http://gitbox.net/path/page.php">액세스하려면 클릭하십시오</a>';
ob_end_flush();
?>
이렇게하면 함수가 출력을 올바르게 캡처하고 매개 변수를 추가합니다.
output_add_rewrite_var가 요구 사항을 충족 할 수없는 경우 URL을 생성 할 때 매개 변수를 수동으로 추가 할 수 있습니다.
<?php
session_start();
$sessionId = session_id();
echo '<a href="http://gitbox.net/path/page.php?PHPSESSID=' . urlencode($sessionId) . '">액세스하려면 클릭하십시오</a>';
?>
번거롭지 만 이것은 가장 직접적이고 효과적인 방법입니다.
URL 재 작성이 더 복잡한 상황의 경우 서버 구성을 결합하여 Apache의 .htaccess 규칙과 같은 세션 ID의 자동 전달을 실현할 수 있습니다.
RewriteEngine On
RewriteCond %{QUERY_STRING} !PHPSESSID=
RewriteRule ^(.*)$ $1?PHPSESSID=%{HTTP:Cookie} [QSA,L]
이것은 PHP 수준에 대한 의존성을 줄입니다.
동적으로 생성 된 링크의 경우 AJAX를 통해 생성 또는 패스 세션 정보를 수동으로 추가 할 수 있습니다.
출력 버퍼가 켜져있어 출력 _add_rewrite_var가 페이지 출력을 올바르게 캡처 할 수 있는지 확인하십시오.
URL은 특수 문자 간섭 함수 인식을 피하기 위해 형식 사양이 필요합니다.
동적 URL의 경우 서버 측의 자동 추가에 의존하지 말고 프론트 엔드 또는 수동 접합을 사용하십시오.
서버 재 작성 규칙을 결합하면 URL 매개 변수 전달의 안정성이 향상됩니다.
이러한 방식으로 만 Output_ADD_REWRITE_VAR를 사용할 때 URL을 올바르게 다시 작성하고 매개 변수를 정상적으로 전달하고 페이지 기능 이상을 피할 수 있는지 확인할 수 있습니다.