0

我想问,为什么让脚本打印表单比普通的 html 更好或更好。有什么区别?当我输入:

<form><input type="button" value="button" /></form>

或者

<script type="text/javascript">
     $form = $("<form></form>");
     $form.append('<input type="button" value="button" />');
     $('body').append($form);
</script>

如果用户在他的浏览器中禁用了 javascript 怎么办?

为了安全起见,纯 html 和 php 是否足够,或者我应该使用 javascript 来构建和验证注册表单?

4

4 回答 4

4

我将从你的第一个问题开始。
最好用 HTML 制作表单,因为如果禁用 javascript,您的客户在使用您的应用程序时会遇到问题。

秒问题:
最好使用 PHP 验证,因为 javascript 可以被具有基本黑客技能的人愚弄。例如,禁用 JavaScript 后,您的验证脚本将无法工作。

于 2013-08-11T09:05:25.340 回答
1

无需使用 Javascript 生成它,您所做的只是让它变得更加难以维护。当您需要更改表单 html 时,处理 Javascript 字符串文字确实很烦人。

于 2013-08-11T09:05:43.257 回答
1

我以前完全跳过表单标签,它们很丑,你只能有一个动作,你不能嵌套它们。相反,我在例如 onclick 处理程序中使用 ajax 发布,并在必要时在这些成功处理程序中重新加载网页:

var data = {formvar1:3, formvar2: "foo"};
$.post('/foo/bar.php', data, function(webpage)
{
  location.reload();
});

或者如果 ajax 处理程序返回 json:

var data = {formvar1:3, formvar2: "foo"};
$.post('/foo/bar.php', data, function(result)
{
  if (result.success)
  {
    alert("nice work!");
    location.reload();
  }
  else
  {
    alert(result.message);
  }
}, 'json');

哦,我的回答来晚了,所以你可以忽略它。我从不在乎人们禁用 javascript,因为我认为他们是一个神话 btw :)

(值得一提的是,这东西需要包括jquery)

于 2013-08-11T09:56:53.023 回答
0

所以就像我说的,这是防止机器人向您发送垃圾邮件的一种方法。它将阻止大多数机器人。实施此操作后,我再也没有遇到机器人问题

MySQL

CREATE TABLE IF NOT EXISTS `key_validation` (
  `key` varchar(64) NOT NULL,
  `date` varchar(32) NOT NULL,
  UNIQUE KEY `key` (`key`),
  KEY `date` (`date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

PHP REST Web 服务 (getKey.php)

<?php
//file that creates a connection to the database
require "db_connect.php";


if($_GET['mode'] == "get_key") {
  $key = md5(microtime().rand());

  mysql_query("INSERT INTO key_validation (`key`,`date`) VALUES ('$key','".time()."')");

  echo json_encode($key);
  exit();
}

?>

JavaScript

function insertKeyIntoForm(form) {
    $.getJSON('getKey.php?mode=get_key', function(data) {
        $('<input>').attr({
            type: 'hidden',
            id: 'verify_key',
            name: 'verify_key',
            value: data
        }).appendTo(form);
    });
}
insertKeyIntoForm('#myFormId');

PHP File 处理注册

//TODO
//permanently block ip addresses that requests this service more than x number of times a minute

function func_query_first_cell($query) {
    if ($p_result = mysql_query($query)) {
        $result = mysql_fetch_row($p_result);

    }
    return $result[0];
}

      //to make sure is no spammer
  if(func_query_first_cell("SELECT `key` FROM key_validation WHERE `key`='$verify_key'") == "")
    exit();

  else
    db_query("DELETE FROM key_validation WHERE `key`='$verify_key'");
于 2013-08-11T09:40:40.780 回答