【问题标题】:Disable Javascript after page is loaded should be detected on action page页面加载后禁用 Javascript 应在操作页面上检测到
【发布时间】:2017-11-06 15:19:34
【问题描述】:

我想我已经搜索过标签,是的,我已经在使用它们了。

但我的问题或想法是:

我有一个表单,包括搜索/插入数据到数据库 (mysql) (index.php) 的输入 正在 search.php 上执行表单操作 搜索框在选定的表中搜索输入数据,如果找到,则给出result.php中的记录,否则将数据插入table(sql)中,然后显示在result.php中

即使使用标签,我也在同一页面上使用 javascript 验证表单/输入 现在加载 index.php 页面后,如果有人禁用 javascript,它会显示重新加载页面的警报。如果有人重新加载页面,搜索框将隐藏。

但问题是,如果在加载页面后,如果有人禁用了 javascript 并且没有重新加载页面,并使用 javascript 正则表达式搜索一些受限制的文本,那么该文本会进入 mysql 数据库并被保存。 search.php 执行其操作并将其重定向到 result.php

我想在 search.php 中使用一些技巧来检查启用/禁用 javascript 的某些条件,然后执行剩余的操作。

有什么办法吗,如果操作应该是另一个页面,在那个页面上 javascript 被禁用然后它什么都不显示,如果它被启用然后重定向到 search.php

【问题讨论】:

  • 提交时使用js设置隐藏输入值。如果没有设置,你会知道 js 没有运行。
  • @inarilo 很抱歉,我无法理解,您能否给出隐藏输入的完整代码
  • 我的意思是<input type="hidden" name="something" value="">。点击提交时设置 this 的值。
  • @inarilo 我使用了这个技巧,但是这个变量正在传递,即使启用了 javascript <noscript>This Site needs JavaScript activated to work properly.<?php $nojs = "nojs" ?> </noscript>
  • 使用了这个<input type="hidden" name="nojs" id="nojvs" value="<?php echo $nojs ?>"> 并在操作页面上使用了if ($nojava == "nojs" ) { header("location:index.php"); } else {,但即使没有禁用javascript,它也会重定向到index.php

标签: javascript php html


【解决方案1】:

在表单提交时使用隐藏的输入字段并使用 javascript 设置其值。由于该值将仅使用javascript设置,因此如果提交的表单该字段为空值,则可以断定javascript被禁用。

使用 jQuery:

在html中:

<form id="myformid" action="myactionurl.php" method="POST">
   <!-- form fields here -->
   <input type="hidden" id="time" name="time" value="">
</form>

在js中:

$('#myformid').submit(function(ev) {
    $('#time').val($.now());
});

在php中:

if(!empty($_POST['time'])) {
    //code
} else {
    echo "Javascript must be enabled for this site to work.";
}

你不必使用时间,它可以是任何东西。

【讨论】:

  • 我不应该为输入提供任何价值吗?
  • 点击提交按钮时会给出一个值。
  • 我进行了更改,我没有将提交事件处理程序附加到按钮,而是将其附加到表单。
【解决方案2】:

JS级别的表单验证并不重要,你需要考虑的是你的php验证。请阅读以下热门答案:form validation with javascript vs php

还有这个: How can I prevent SQL injection in PHP?

如果您需要检查是否启用了 JS,您可以简单地为您的表单制作按钮(但不是 type="submit",而只是一个按钮元素)。向该按钮添加事件:

onclick="document.getElementById('FormId').submit();"

只有在启用 JS 时才会提交您的表单,因为按钮将使用 JS 进行提交

【讨论】:

  • 很抱歉,这只是对 javascript 和 php 之间任何形式的验证的比较,建议适用于 javascript。它没有给出我需要的任何解决方案。顺便说一句,感谢您分享如此有用的帖子
  • @AtifSheikh 查看我编辑的其他信息。我不确定这是否是您要查找的内容,但希望对您有所帮助
  • 如果有一个文本字段,并且用户按下回车键,这将失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
相关资源
最近更新 更多