2011-05-04 5 views
1

나는 매월 소프트웨어를 청구 할 때를 잊어 버리기 때문에 자신의 라이센스 검사기를 만들고 있습니다. 이것은 초기 단계에 있습니다.PHP Statement가 다이에서 리다이렉트하는 경우

사이트를 실행하기 전에 다른 사이트의 POST 변수를 확인하는 if 문이 있습니다. (나는 올바른 사람이 그것을 이해할 수 있다면 그것을 잘 알고있다. 그러나 그러한 사람은 없다!)

나는 페이지가 앱의 일부분을로드 할 때마다 백그라운드에서 일하는 진술을 가지고있다. 나는이 주위에 망할 방법을 찾을 수 없습니다.

여기에 문제가 있습니다. 변수가 성공적으로 일치하고 변수가 yes를 반환하면 나는 die()를가집니다. 이렇게하면 사용자가 작업중인 페이지에서 벗어나 내 체커 스크립트로 리디렉션됩니다. 나는 그것을 원하지 않는다. 변수가 yes를 반환하면, 스크립트를 죽이기 만하면됩니다 (멈추는 것 외에는 아무 것도하지 않습니다). 죽을 때마다 빈 페이지로 리다이렉트하지 않습니다.

나는 스크립트가 응답을주는 것을 원하지 않는다.

다음은 내가 작업중인 스 니펫입니다.

이전 페이지로 돌아가고 싶습니다. 이 스크립트는 인클루드이며, 사용자는 실행 중인지를 모르는 상태 여야합니다. 스크립트가 완료되면 사용자가 빈 페이지로 이동합니다.

다음은 전체 과정입니다.

<form name="hidsys" method="post" action="../rauth/rauth.php"> 
    <input type="hidden" name="siteid" value="<? echo $value; ?>"> 
    <input type="hidden" name="keytype" value="a6request"> 
    </form> 
    <script language="JavaScript" type="text/javascript"> 
    setTimeout("document.hidsys.submit(hidsys)" ,1); 
    </script> 

여기 내 기능과 변수는 다음과 같습니다 :

License.php이 양식을 제출

function rauth($url) 
    { 
$ch = curl_init(); 
$timeout = 5; 
curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
$data = curl_exec($ch); 
curl_close($ch); 
return $data; 
    } 


    $timestamp = date("Y-m-d h:i", $timestamp + 10800); 

    $token = sha1($_POST['siteid']); 

    $rogue = sha1(time()); 

    $authKey = md5($_POST['siteid']); 

    $skeletonKey = $token.$authKey; 

    $value = 'cca'; 

그것은 rauth.php 회담 :

<?php 

    // Declarations 

    $id = $_POST["siteid"]; 



    $rauth_returned = rauth('http://www.mysite.com/rauth/index.php?siteid=' . $id .      '&token=' . $token . '&time=' . $timestamp); 

    if (isset($_POST["siteid"])) { 
     if(strstr($rauth_returned, 'no')) { 
      exit('You are not authorized'); 
     } 
     else if(!strstr($rauth_returned, 'yes')) { 
      exit('There was an error'); 
     } 
    } 
    else { 
     exit("You can't view this page directly"); 
    } 

    header('Location:' . $HTTP_REFERER); 

    ?> 

을 그리고이 사이트입니다 그것이 "인가 된"것인지 아닌지를 알기 위해 색인을 작성합니다 :

<?php 

    if (isset($_GET["siteid"])){ 


$site = $_GET["siteid"]; 

switch ($site) 
{ 
case cca: 
echo 'yes'; 
die(); 

case ccgay: 
echo 'no'; 
die(); 


default: 
echo 'absno'; 
die(); 

} 

    }else{ 

echo "No data to process."; 
die(); 

    } 

    ?> 

이 파일과 다른 방향으로 파일 (index.php)이 실행될 때마다 license.php가 백그라운드에서 실행되도록 지시하여 실행 허용 여부를 확인합니다. 모든 링크와 사이트가 열릴 때마다 license.php는 위의 프로세스를 진행합니다. 나는 아마이 멍청한 쓴 아마 사람들이 추측하지 지불하지 않을 때 기억하는 데 도움이 뭔가가 필요합니다.

+0

당신의 조각 – meze

+0

에는 리디렉션 당신을 위해 당신의 서식을 고정하지 않습니다. –

+0

나는 그것이 reffering 페이지로 돌아가고 싶습니다. getenv ("HTTP_REFERER")를 붙이면 url을 보여 주지만, 헤더를 지정하면 공백으로 남습니다. –

답변

0

대신 die() 사용 header() : 갱신

header('Location: http://www.example.com/'); 

:

이 시도가 : 거기에

posix_kill(posix_getpid(),9); 
+0

앱의 모든 페이지를 확인합니다. 또한 사용자가 모든 페이지를 열 때마다 실행됩니다. 이 일은 실 거예요. –

+0

@JD Audi - 리디렉션하고 싶습니다. 어떻게 위치 헤더를 클라이언트로 보내지 않고 리디렉션을 제안합니까? –

+0

@AJ 내 업데이트 된 게시물을 확인하십시오. –

관련 문제