Оператор PHP If перенаправляет на матрицу()

#php #redirect #if-statement

#php #перенаправление #if-оператор

Вопрос:

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

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

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

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

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

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

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

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

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 .                     'amp;token=' . $token . 'amp;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. в вашем фрагменте нет перенаправления

2. Исправлено ваше форматирование для вас.

3. Я хочу, чтобы он вернулся на страницу с указанием. Если я помещаю getenv («HTTP_REFERER»), он показывает URL, но если я указываю заголовку перейти, он остается пустым.

4. Что заставляет вас думать, что это перенаправление? Это просто пустая страница… это и есть редактирование die()…

5. Мне не нужна пустая страница! Я хочу, чтобы он оставался на странице, на которой он включен. Его изначально не было в этом скрипте. Это «фоновый» процесс, который выполняется в фоновом режиме. Как только он умирает, он переводит пользователя с исходной страницы на скрипт и отображает пустую страницу.

Ответ №1:

Вместо die() использования header() :

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

ОБНОВЛЕНО:

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

 posix_kill(posix_getpid(),9);
  

Комментарии:

1. Выполняется проверка на всех страницах приложения. Он также выполняется каждый раз, когда пользователь открывает каждую страницу. Это не сработает.

2. @JD Audi — вы хотите перенаправить, как вы предлагаете перенаправлять, не отправляя заголовок Location обратно клиенту?

3. @JD Audi — смотрите мой обновленный ответ. Обратите внимание, это работает только в системах UNIX / Linux.

4. @JD Audi — Я очень смущен тем, чего вы хотите достичь. В вашем первоначальном вопросе говорится: «Если переменная возвращает yes, я просто хочу, чтобы скрипт прекратил работу (ничего не делал, кроме остановки)». Функция posix_kill() делает именно это. Прошу прощения, если я неправильно понял ваш вопрос; пожалуйста, дайте мне знать, как я могу помочь в дальнейшем.