2011-05-04 47 views
1

我正在創建自己的許可證檢查器,因爲我經常忘記每個月何時向軟件人員收費。這是嬰兒期的狀態。PHP如果語句在模具上重定向()

我有一個if語句在站點運行之前檢查另一個站點的POST變量。 (我知道如果合適的人理解它,他可以操縱它,但沒有這樣的人!)

我有這樣的語句在後臺工作,每次頁面加載這是應用程序的一部分。儘管如此,我找不到一個該死的方法。

這是問題所在。當它成功匹配並且變量返回yes時,我有一個die()。這會將用戶從正在處理的頁面中取出,並將其重定向到我的檢查腳本。我不想那樣。如果變量返回yes,我只想讓腳本死掉(除了停止以外不做任何事情),而不是重定向到空白頁面,因爲我放棄了死亡。

換句話說,我不希望腳本給出回覆。

這是我正在使用的代碼段。

我希望它回到之前的頁面。這個腳本是一個包含,並且用戶不應該知道它正在運行。如果腳本完成,它將使用戶進入空白頁面。

這是整個過程。

License.php提交這種形式:

<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> 

這是我的函數和變量:

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 2011-05-04 00:15:05

+0

沒有重定向固定的格式爲您服務。 – 2011-05-04 00:15:08

+0

我希望它回到重新建立的頁面。如果我把一個getenv(「HTTP_REFERER」)顯示的URL,但如果我告訴頭去,它保持空白。 – 2011-05-04 00:21:22

回答

0

代替die()使用header()

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

更新:

試試這個:

posix_kill(posix_getpid(),9); 
+0

它檢查應用程序的所有頁面。每次用戶打開每個頁面時,它也會運行。這不會工作。 – 2011-05-04 00:39:19

+0

@JD奧迪 - 您想要重定向,您如何建議重定向而不將位置標頭髮送回客戶端? – 2011-05-04 00:44:51

+0

@AJ請檢查我更新的帖子。 – 2011-05-04 00:53:13