文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>用PHP会话实现:客户表单输入验证

用PHP会话实现:客户表单输入验证

时间:2007-06-27  来源:windlike

今天看 《PHP & MySQL Web 数据库应用开发指南》,感觉在第八章用“PHP会话实现:客户表单输入验证”思想很好。于是,就将主要代码段记了下来。
表单验证程序功能描述:
客户填写表单,填写完毕后提交页面,服务器验证客户填写的表单数据。(如果验证通过,客户将继续下一步操作; 如果验证不能通过,则发送错误消息给用户,让客户修改表单并重新提交。)
以下开始书中的片段:
改善错误消息
验证脚本检查从客户提交的每个变量。根据字段的目的以不同的严格程度来检查每个字段。通过注册一个关联数组来保存与每个字段关联的错误消息。这样允许错误显示时有更大的灵活性。
首先,我们需要初试化一个会话并注册一个变量来保存一组错误。这通过添加以下代码行到脚本的开头来实现。
// 初试化一个会话
session_start();
// 注册一个错误数组---以防万一
if(!session_is_registered("errors")){
  session_register("errors");
}
// 清除任何可能已经发现的错误
$errors = array();
因为可能在一个会话中调用几次验证脚本,因此需要将以前的记录的所有错误清除掉。这也是设置$errors值为新的空数组的原因。
脚本检查每个变理并在遇到错误时将错误消息添加到关联数组$errors中。错误消息按所检查的字段的名称索引。例如,姓(surname)的验证编码为:
// 验证姓 (Surname)
if(empty($formVars["surname"])){
  // 用户的姓不能为空字符串
  $errors["surname"] = "The surname field cannot be blank.";
}
验证完所有字段后,你可以测试数组$errors的大小来确定是否遇到了错误。数组中只要有错误,你就需要显示它们。
// 现在脚本已经完成了验证,
// 检查是否有错误
if(count($errors)){
  // 有错误。重新定位回客户表单
  header("Location: input.php");
  exit;
}
保存最后输入的值作为会话变量
我们现在开发脚本将字段数据从验证脚本传递回客户输入,以避免有错误发生时的重新输入。通过将用户输入的数据保存在另一个会话变量(关联数组$formVars)来修改脚本。
// 以下代码(紧跟在$errors注册为会话变量之后插入)注册数组$formVars,然后在每个用户输入的变量之间循环,在按变量名称索引的数组中设置一个值。
// 利用POST变量设置一个$formVars数组
// 并利用会话注册
if(!session_is_registered("formVars")){
  session_register("formVars");
}
foreach($HTTP_POST_VARS as $varname => $value){
  $fromVars[$varname] = trim(clean($value,50));
}
显示错误消息
要显示保存在验证脚本的会话变量$errors中的错误,则需要进行更改。我们添加了函数fieldError()来帮助在字段之上显示错误消息。该函数有两个参数:$errors和$fieldName,前者是错误消息的关联数组,后者是数组中的索引。
function fieldError($fieldName, $errors)
{
  if(isset($errors[$fieldName])){
    echo "$errors[$fieldName]";
  }
}
该函数测试已有索引的错误消息是否存在,如果存在,输出一个适当格式的错误消息。当当显示每个元素时,将会调用fieldError()函数,以下是针对first-Name和surname字段的代码:
  First Name:
  
   
    " size="50">
  
               
               
               

相关阅读 更多 +
排行榜 更多 +
jojo的奇妙冒险手机版下载

jojo的奇妙冒险手机版下载

飞行射击 下载
雪糕工厂 v9.87.13.02 安卓版

雪糕工厂 v9.87.13.02 安卓版

休闲益智 下载
雪糕工厂 v9.87.13.02 安卓版

雪糕工厂 v9.87.13.02 安卓版

休闲益智 下载