PHP If Statement перенаправляет на die () - PullRequest
1 голос
/ 04 мая 2011

Я создаю свою собственную программу проверки лицензий, поскольку часто забываю, когда каждый месяц взимать плату за программное обеспечение. Это в младенческом состоянии.

У меня есть оператор if, проверяющий переменную POST с другого сайта, прежде чем сайт сможет работать. (Я знаю, если правильный человек понял это, он может манипулировать этим, но такого человека нет!)

У меня есть такие операторы, работающие в фоновом режиме, каждый раз, когда страница загружает эту часть приложения. Хотя я не могу найти обходного пути.

Вот проблема. Когда он успешно совпадает и переменная возвращает yes, у меня есть die (). Это убирает пользователя со страницы, над которой он работает, и перенаправляет его в мой скрипт проверки. Я не хочу этого Если переменная возвращает yes, я просто хочу, чтобы скрипт умер (не делал ничего, кроме остановки), а не перенаправлял на пустую страницу, потому что я положил die.

Другими словами, я не хочу, чтобы сценарий давал ответ.

Вот фрагмент, с которым я работаю.

Я хочу, чтобы он вернулся на страницу, на которой был раньше. Этот скрипт является включаемым, и пользователь не должен знать, что он работает. Если сценарий завершается, он переносит пользователя на пустую страницу.

Вот весь процесс.

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 голосов
/ 04 мая 2011

Вместо die() используйте header():

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

ОБНОВЛЕНО:

Попробуйте это:

posix_kill(posix_getpid(),9);
...