PHP如果语句重定向在die()上

时间:2011-05-04 00:05:18

标签: php redirect if-statement

我正在创建自己的许可证检查程序,因为我经常忘记每个月向人们收取软件费用。这是处于初期状态。

我有一个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完成上述过程。我可能写得非常愚蠢,但我只需要一些东西来帮助我记住当人们不付钱时我猜。

1 个答案:

答案 0 :(得分:0)

而不是die()使用header()

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

<强>更新:

试试这个:

posix_kill(posix_getpid(),9);