【问题标题】:How to validate a form with many input elements in php如何在php中验证具有许多输入元素的表单
【发布时间】:2014-05-06 10:39:50
【问题描述】:

我正在制作一个表单以在网页中发布休假表单,我需要在其他页面中发布输入以处理输入。我需要验证空字段并以安全的方式发布变量。这里我有下面的代码,这个代码只是发布没有任何安全性的变量,它有漏洞。请给出合适的代码。

<?php include "header.php" ?>
<form action="process_leave.php" method="post">
<table>
<tr>
<td style="border-width:0px;">
<table cellpadding="10" rules="all" border="2" style="border-width:2px;border-style:Solid;width:100%;">
<tr >                                       
<FIELDSET  style="width: 1000px; height: 300px;">
<h4 align="left">TYPE OF LEAVE :</h4>
<input type="radio" name="group1" value="OD">ON DUTY<br/>
<input type="radio" name="group1" value="OD">CASUAL LEAVE<br/>
<input type="radio" name="group1" value="OD">MEDICAL LEAVE<br/>
<input type="radio" name="group1" value="OD">LOSS OF PAY<br/>
<input type="radio" name="group1" value="OD">ENCASHMENT LEAVE<br/>
<input type="radio" name="group1" value="OD">VOCATIONAL LEAVE<br/>
<input type="radio" name="group1" value="OD">PERMISSION<br/>
</FIELDSET>
<FIELDSET>
<h4 align="left">DETAILS:</h4>
NO OF DAYS :<input type="text" name="no_of_days"><br><br>
FROM<input type="date" name="from">TO<input type="date" name="to"><br><br>
LEAVE AVAILED:<input type="text" name="avail_leave"><br><br>
REASON FOR LEAVE :<input type="text" name="reason"><br>
<br>
</FIELDSET>
<FIELDSET>
<h4 align="left">ALTERNATE ARRANGEMENTS :</h4>
DATE <input type="date" name="alternate"><br><br>
PERIOD<select name="period">
<option value="1" name="period">1</option>
<option value="2" name="period">2</option>
<option value="3" name="period">3</option>
<option value="4" name=" period">4</option>
<option value="5" name=" period">5</option>
<option value="6" name=" period">6</option>
<option value="7" name=" period">7</option>
<option value="8" name=" period">8</option>
</select><br><br>
SEM:<input type="text" name="semester"><br><br>
FACULTY NAME:<input type="text" name="fac_name"><br><br>
DESIGNATION:<input type="text" name="fac_desg"><br><br>
DEPARTMENT:<input type="text" name="dept"><br><br>
APPROVED BY :<input type="radio" name="group2" >HOD
<input type="radio" name="group2" value="pricipal">PRINCIPAL<br><br>
<input type="submit" value="Submit">
</FIELDSET>
</tr>
</table>
</td>
</tr>
</table>
<input type="hidden" name="m_state"  value="Started" />
 &nbsp;
<input type="hidden" name="m_res"  value="1366" />
</td>
</tr>
</table>
 </form>
</body>
</html>

【问题讨论】:

  • 不错。做一个表格。免费雇用我们,确保您的安全。
  • 您指的是什么“安全漏洞”?这里没有发布 PHP 代码,所以我们没有什么可建议的。一般来说,您希望: 1) 验证每个字段的业务逻辑,包括客户端(良好的用户体验)和服务器端(执行业务逻辑);和 2) 永远不要隐式信任用户输入,并确保在将其用于任何其他上下文(例如数据库查询)之前对其属性进行了清理(基本上将输入视为数据,从不视为可执行代码)。
  • 我需要验证代码,如果表单提交时使用空值,则应该引发错误表示(它是空的)......

标签: javascript php jquery mysql forms


【解决方案1】:

您可以使用 php 的 session_id 类,以更安全地传递 $_POST 变量:

http://php.net/manual/en/function.session-id.php

【讨论】:

    【解决方案2】:

    您必须使用多个功能,例如

    • 使用 php 生成加密密钥并以 隐藏字段。在检查表单数据时,您应该更改它 加密密钥与您生成的密钥匹配。

    • 使用验证码

    • 在将数据插入数据库之前使用 mysqli_real_escape_string()。

    【讨论】:

    • mysql_* 函数已弃用,不应建议使用。请提及使用 mysqli_* 或参数化查询。
    • @我可以吃芝士汉堡。好的
    【解决方案3】:

    输入验证可以通过两种方式完成: 1.客户端 2.服务器端

    1.客户端验证演示:

    Demo

    Source

    2.服务器端验证: -检查每个已发布字段是否为空
    if(isset($_POST['var_name']) &amp;&amp; $_POST['var_name']!=''){}

    -出于安全目的,在 mysql 查询中使用mysql_real_escape_string()

    【讨论】:

    • mysql_* 函数已弃用,不应建议使用。请提及使用 mysqli_* 或参数化查询。
    • 非常感谢..你能用上面的代码为单个输入元素举例解释,这样我就可以完全实现服务器端验证
    猜你喜欢
    • 2020-04-05
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多