php表单的验证详解

在PHP网站开发建设中,用户注册、登录,留言等等是必不可少的一些实用功能,用户提交的信息数据都是通过form表单提交,然而提交的数据难免会有这样或者那样的错误,不管是有心还是无意,为了保证数据的完整性、安全性,PHP form表单验证是过滤数据的必不可少的环节。大理石平台怎么样

 

首先我们对用户所有提交的数据都通过 PHP 的 htmlspecialchars() 函数处理。把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 < 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。

当用户提交表单时,我们将做以下两件事情,:

使用 PHP trim() 函数去除用户输入数据中不必要的字符 (如:空格,tab,换行)。

使用PHP stripslashes()函数去除用户输入数据中的反斜杠 (\)

必须字段

字段 验证规则
Name 必需。必须包含字母和空格。
E-mail 必需。必须包含有效的电子邮件地址(包含 @ 和 .)。
Website 可选。如果选填,则必须包含有效的 URL。
Comment 可选。多行输入字段(文本框)。

上述字段是必须的,不能为空。

格式匹配

1、匹配姓名

“/^[a-zA-Z ]*$/”

只允许空格和字母,”^”表示开头,”$”表示结尾,[a-zA-Z ]表示a-z或者A-Z或者空格中的一个字符。

其实例代码如下:

1

2

3

4

5

6

$name = test_input($_POST["name"]);

if (!preg_match("/^[a-zA-Z ]*$/",$name)) {

 $nameErr = "只允许字母和空格!";

}

?>

2、匹配E-mail

“/([\w-]+\@[\w-]+.[\w-]+)/”

“\w”匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’;

+匹配前面的子表达式一次或多次;

“-“匹配”-“。

3、匹配URL

“/\b(?:(?:https?|ftp):\/\/|www.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i”

保留表单中的值

在用户点击提交按钮后,为确保字段值是否输入正确,我们在HTML的input元素中插添加PHP脚本, 各字段名为: name, email, 和 website。 在评论的 textarea 字段中,我们将脚本放于 标签之间。 PHP脚本输出值为: $name, $email, $website, 和 $comment 变量。

例如如下的代码:

1

2

3

4

Name: <input type="text" name="name" value="">

E-mail: <input type="text" name="email" value="">

Website: <input type="text" name="website" value="">

Comment: <textarea name="comment" rows="5" cols="40">php echo $comment;?>textarea>

来一个PHP表单验证完整实例,其代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

  "utf-8">

  form

  

// 定义变量并默认设置为空值

$nameErr = $emailErr = $genderErr = $websiteErr = "";

$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")

{

  if (empty($_POST["name"]))

  {

    $nameErr = "名字是必需的";

  }

  else

  {

    $name = test_input($_POST["name"]);

    // 检测名字是否只包含字母跟空格

    if (!preg_match("/^[a-zA-Z ]*$/",$name))

    {

      $nameErr = "只允许字母和空格";

    }

  }

  if (empty($_POST["email"]))

  {

    $emailErr = "邮箱是必需的";

  }

  else

  {

    $email = test_input($_POST["email"]);

    // 检测邮箱是否合法

    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))

    {

      $emailErr = "非法邮箱格式";

    }

  }

  if (empty($_POST["website"]))

  {

    $website = "";

  }

  else

  {

    $website = test_input($_POST["website"]);

    // 检测 URL 地址是否合法

    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website))

    {

      $websiteErr = "非法的 URL 的地址";

    }

  }

  if (empty($_POST["comment"]))

  {

    $comment = "";

  }

  else

  {

    $comment = test_input($_POST["comment"]);

  }

  if (empty($_POST["gender"]))

  {

    $genderErr = "性别是必需的";

  }

  else

  {

    $gender = test_input($_POST["gender"]);

  }

}

function test_input($data)

{

  $data = trim($data);

  $data = stripslashes($data);

  $data = htmlspecialchars($data);

  return $data;

}

?>

PHP 表单验证实例

class="error">* 必需字段。

"post" action="PHP_SELF"]);?>">

  名字: "text" name="name" value="">

  class="error">* echo $nameErr;?>

  

  E-mail: "text" name="email" value="">

  class="error">* echo $emailErr;?>

  

  网址: "text" name="website" value="">

  class="error">echo $websiteErr;?>

  

  备注:

  

  性别:

  "radio" name="gender" if (isset($gender) && $gender=="female") echo "checked";?>  value="female">女

  "radio" name="gender" if (isset($gender) && $gender=="male") echo "checked";?>  value="male">男

  class="error">* echo $genderErr;?>

  

  "submit" name="submit" value="Submit">

echo "

您输入的内容是:

";

echo $name;

echo "
"
;

echo $email;

echo "
"
;

echo $website;

echo "
"
;

echo $comment;

echo "
"
;

echo $gender;

?>

以上这些将展示如何安全地处理 PHP 表单。对 HTML 表单数据进行适当的验证对于防范黑客和垃圾邮件很重要!

你可能感兴趣的:(php表单的验证详解)