通过Javascript禁用PHP脚本

时间:2011-09-13 17:32:57

标签: php javascript conditional

我有这种情况。

<php>
<redirect the page >
<exit>

<javascript>
<redirect the page again>

我想要javascript,basicall禁用PHP重定向。因此,如果在浏览器上启用了Javascript,则javascript重定向将起作用,如果禁用,则PHP重定向将起作用。我应该将PHP代码括在span中并使其不可见吗?有什么想法吗?

添加确定这不是简单的重定向。表单身份验证相当奇怪。 Register.php - &gt; register_submit.php - &gt;是否有错误 - &gt;是的,回到register.php(这一切都是javascript)。我添加的是PHP身份验证,所以如果我看到javascript没有启用,我会在用户定期检查字段*后将用户带到register.php *。

4 个答案:

答案 0 :(得分:1)

删除您的PHP重定向并将其添加到<head>

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

当javascript被禁用时,这将重定向到http://www.example.com/1,并在启用时重定向到http://www.example.com/2

答案 1 :(得分:1)

PHP是一种服务器端技术。当Javascript甚至看到发生的事情时,已经太晚了。

简短回答,JS无法拦截/阻止PHP(只要首先调用PHP)。

活动顺序:

  1. 客户请求页面
  2. PHP执行并生成页面
  3. 的输出
  4. 浏览器接收输出
  5. 浏览器开始解析PHP已经吐出的内容。

答案 2 :(得分:0)

PHP代码在服务器端执行,而JS是客户端。因此,使用该结构,PHP将在JS执行之前启动。如果你想让JS控制PHP,你需要使用AJAX来控制它。

在“span”中包含PHP代码也没有任何效果。

答案 3 :(得分:0)

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中查看some code snippets for dealing with cookies,然后查看dealing with cookies in PHP的文档。