2011-05-04 45 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