会话是不必要的.你的基本计划应该是:
>从$_POST获取变量()
>验证表单值.
>创建一个包含通过验证的值的数组.
>重定向到表单时,使用数组填充值.
在我开始使用CodeIgniter之前,我曾经使用if语句来验证并生成如下错误消息:
if ( ! empty($_POST['email'])){
if ($this->verifyInput($_POST['email'], 6)){
$fill['email'] = $_POST['email'];//$fill is the array of values that passed validation
} else $tally++;//$tally keeps a running count of the total number of erors
}
我对$this-> verifyInput进行函数调用,它接受字段值和要执行的验证类型 – 在这种情况下它是6,表示电子邮件.这是我的验证功能:
function verifyInput($input, $type){
if ($type == 0) $pattern = '/^1$/';//just the number 1
elseif ($type == 1) $pattern = '/^[0-9]+$/';//just integers
elseif ($type == 2) $pattern = '/^[A-Za-zÁ-Úá-úàÀÜü]+$/';//just letters
elseif ($type == 3) $pattern = '/^[0-9A-Za-zÁ-Úá-úàÀÜü]+$/';//integers & letters
elseif ($type == 4) $pattern = '/^[A-Za-zÁ-Úá-ú0-9àÀÜü\s()\/\'":\*,.;\-!?$@]{1,1500}$/';//text
elseif ($type == 5) $pattern = '/^[A-Za-zÁ-Úá-úàÀÜü0-9\']+[A-Za-zÁ-Úá-úàÀÜü0-9 \'\-\.]+$/';//name
elseif ($type == 6) $pattern = '/^.+@[^\.].*\.[a-z]{2,}$/';//e-mail
elseif ($type == 7) $pattern = '/^((\(0?[1-9][0-9]\))|(0?[1-9][0-9]))?[ -.]?([1-9][0-9]{3})[ -.]?([0-9]{4})$/';//brazilian phone
if (preg_match($pattern, $input) == 1) return true;
else return false;
}
验证完成后,我使用$fill数组为每个字段预填充表单:
您还应该确保$fill与空值相关联,例如$fill [’email’] =”;或者检查以确保在填充输入标记之前设置了值:
这些只是您可以适应您需求的一般指导原则,但我发现这是一种处理它的便捷方式.