Отключить PHP-скрипт через Javascript - PullRequest
1 голос
/ 13 сентября 2011

У меня такая ситуация.

<php>
<redirect the page >
<exit>

<javascript>
<redirect the page again>

Я хочу иметь javascript, который в основном отключает перенаправление PHP. Таким образом, если Javascript включен в браузере, перенаправление javascript будет работать, если его отключить, будет работать перенаправление PHP. Должен ли я просто заключить код PHP в span и сделать его невидимым? Есть идеи?

Добавление хорошо, это не простое перенаправление. форма аутентификации довольно странная. Register.php -> register_submit.php -> Была ли ошибка -> да, вернитесь к register.php (на данный момент все написано на javascript). Я добавил также аутентификацию PHP, поэтому, если я вижу, что javascript не включен, я беру пользователя в register.php * после того, как он регулярно проверяет поля *.

Ответы [ 4 ]

1 голос
/ 13 сентября 2011

PHP - это серверная технология. К тому времени, когда Javascript увидит, что случилось, уже слишком поздно.

Краткий ответ, JS не может перехватить / заблокировать PHP (пока PHP вызывается первым).

Порядок событий:

  1. Страница клиентских запросов
  2. PHP выполняет и генерирует вывод страницы
  3. Браузер получает вывод
  4. Браузер начинает анализировать то, что было отправлено тем, что PHP уже выплевывал.
1 голос
/ 13 сентября 2011

Удалите перенаправление PHP и добавьте его в <head>:

<noscript>
    <meta http-equiv="refresh" content="0; http://www.example.com/1" />
</noscript>
<script>
    window.location = 'http://www.example.com/2';
</script>

. Это будет перенаправлять на http://www.example.com/1, когда JavaScript отключен, и на http://www.example.com/2, когдавключен.

0 голосов
/ 13 сентября 2011

Javascript и PHP напрямую не взаимодействуют (применяются исключения, не беспокойтесь о них сейчас: D). Лучший способ реализовать этот тип взаимодействия между этими двумя несопоставимыми языками - это использовать строку запроса или файлы cookie.

Я думаю, что здесь может быть некоторая путаница относительно того, когда и как выполняется PHP, а не когда и как выполняется javascript. Думайте о PHP как о фабрике - товары там производятся физически. Думайте о своем сервере как о загрузочной док-станции, а интернет - о судоходной компании. Ваш браузер - это магазин, HTML - это полки; Javascript - это оформление витрин магазина, в котором продаются товары. Декорации на окна не влияют на производство, фабрика может делать некоторые декорации на окнах, но не использует их, а просто отправляет их вместе с товарами для магазина. PHP это фабрика, javascript это украшение. Есть некоторые проблемы с восприятием этой аналогии в буквальном смысле слова, но в двух словах.

Вы можете сделать переадресацию PHP условной на наличие или отсутствие определенной строковой переменной запроса:

<?php
  // redirect if $_GET['no_redirect'] is NOT set. Reverse the true/false to invert this rule
  $do_redirect = (isset($_GET['no_redirect']) === false ? true : false);

  // perform the redirect, if required
  if ($do_redirect === false)
     header('Location:http://mydomain.com');
?>

Javascript:

window.location = 'http://mydomain.com/?no_redirect=1';

РЕДАКТИРОВАТЬ Если вы пытаетесь определить, включен ли javascript, то для javascript лучше всего установить cookie, если он включен. Затем PHP может проверить этот файл cookie, и если он не найден, вы узнаете, что у javascript не было возможности установить его, поэтому его необходимо отключить (или пользователь изменил свои файлы cookie).

Взгляните на некоторые фрагменты кода для работы с куки в javascript и ознакомьтесь с документацией для работы с куки в PHP .

0 голосов
/ 13 сентября 2011

PHP-код выполняется на стороне сервера, а JS - на стороне клиента.Таким образом, с этой структурой PHP включится до выполнения JS.Если вы хотите, чтобы JS управлял PHP, вам нужно использовать AJAX для управления им.

Также включение кода PHP в «span» не будет иметь никакого эффекта.

...