使用php显示提交后错误消息的逻辑方法 //处理单独的表单分区帖子 //-->派别名称 如果(isset($_POST['派系名称]])){ $unsani_派系_名称=$_职位['派系]; $new_partition_name=str_replace(“,”,“,$unsani_partition_name”); $partition\u name=mysql\u real\u escape\u字符串($new\u partition\u name); $partition_name=preg_replace('/\s\s+/','$partition_name);//去除多余的空白 $partition\u name=stripslashes($partition\u name);//从name中删除斜杠 //除去特殊字符,除了:&$美元(^-) $partition\u name=preg\u replace('/[^a-z0-9\s&$\^\(\)-]/i',''.$partition\u name); $string\u length=strlen($section\u name); 如果($string_length20){ echo'错误:属性名称必须介于1-20个字符之间。'; }否则{ $sql=mysql\u查询(“选择“.TBL\u USERPROPBANKS.”其中prop\u name='$prop\u name'”; $num\u rows=mysql\u num\u rows($sql); 如果($num_rows>0){ echo'错误:存在同名银行'; }否则{ mysql_查询(“UPDATE”.TBL_USERPROPBANKS.”设置prop_name='$prop_name',其中prop_id='$bankid'); 标题(“位置:bank_cp.php?bankid=“.$bankid.”§ion=settings”); } }
我正在用上面的方法解决我的错误。 (在你看来)最合乎逻辑的方式是什么:使用php显示提交后错误消息的逻辑方法 //处理单独的表单分区帖子 //-->派别名称 如果(isset($_POST['派系名称]])){ $unsani_派系_名称=$_职位['派系]; $new_partition_name=str_replace(“,”,“,$unsani_partition_name”); $partition\u name=mysql\u real\u escape\u字符串($new\u partition\u name); $partition_name=preg_replace('/\s\s+/','$partition_name);//去除多余的空白 $partition\u name=stripslashes($partition\u name);//从name中删除斜杠 //除去特殊字符,除了:&$美元(^-) $partition\u name=preg\u replace('/[^a-z0-9\s&$\^\(\)-]/i',''.$partition\u name); $string\u length=strlen($section\u name); 如果($string_length20){ echo'错误:属性名称必须介于1-20个字符之间。'; }否则{ $sql=mysql\u查询(“选择“.TBL\u USERPROPBANKS.”其中prop\u name='$prop\u name'”; $num\u rows=mysql\u num\u rows($sql); 如果($num_rows>0){ echo'错误:存在同名银行'; }否则{ mysql_查询(“UPDATE”.TBL_USERPROPBANKS.”设置prop_name='$prop_name',其中prop_id='$bankid'); 标题(“位置:bank_cp.php?bankid=“.$bankid.”§ion=settings”); } },php,logic,validation,Php,Logic,Validation,我正在用上面的方法解决我的错误。 (在你看来)最合乎逻辑的方式是什么: 计算错误的数量 并在我的版面的一个单独部分中回显/打印它们,以便在列表中显示每个错误消息 目前我所能想到的就是将空值分配给唯一的变量,如果它不符合我的验证要求,则用唯一的错误消息填充它(将有20多个不同的错误).对此有什么想法吗?我会创建一个空数组,将错误推送到该数组上,然后简单地从中生成一个字符串并显示它 //deal with individual form section posts //-->Faction N
目前我所能想到的就是将空值分配给唯一的变量,如果它不符合我的验证要求,则用唯一的错误消息填充它(将有20多个不同的错误).对此有什么想法吗?我会创建一个空数组,将错误推送到该数组上,然后简单地从中生成一个字符串并显示它
//deal with individual form section posts
//-->Faction Name
if(isset($_POST['factionname'])){
$unsani_faction_name = $_POST['faction'];
$new_faction_name = str_replace(",", "", $unsani_faction_name);
$faction_name = mysql_real_escape_string($new_faction_name);
$faction_name = preg_replace('/\s\s+/', ' ', $faction_name);//strips excess white space
$faction_name = stripslashes($faction_name);//strips slashes from name
//remove special chars except: "& $ £ ^ - ( )"
$faction_name = preg_replace('/[^a-z0-9\s£&$\^\(\)-]/i', '', $faction_name);
$string_length = strlen($faction_name);
if($string_length < 0 || $string_length > 20) {
echo '<strong>Error:</strong> Property name needs to be between 1-20 characters. ';
}else {
$sql = mysql_query("SELECT * FROM ".TBL_USERPROPBANKS." WHERE prop_name='$prop_name'");
$num_rows = mysql_num_rows($sql);
if ($num_rows > 0) {
echo '<strong>Error:</strong> Bank with the same name in existance. ';
}else {
mysql_query("UPDATE ".TBL_USERPROPBANKS." SET prop_name='$prop_name' WHERE prop_id='$bankid'");
header("Location: bank_cp.php?bankid=".$bankid."§ion=settings");
}
}
$errors=array();
...
如果($string_length<0 | |$string_length>20){
$errors[]='错误:属性名称必须介于1-20个字符之间。';
}
...
如果($num_rows>0){
$errors[]='错误:存在同名银行';
}
//在显示错误的地方放低
回波内爆(“
”,$errors);
这与你的问题无关,但是你从派别名称中删除字符的借口是什么?如果是用户提供的东西,并显示给他们,你应该考虑允许任何和所有字符在没有人为限制的情况下使用。我不希望用户使用我不想显示的字符。网站?它向网站上的所有用户显示。我应该允许所有字符吗?我将检查此方法!我将在对其进行一点操作后再与您联系:)经过测试,符合我的喜好。答案已接受。但是,一个快速更改,“内爆”只接受两个参数。我如何让某些东西像假设的:echo一样工作内爆(,$errors, );?echo'。内爆(“ ,$errors)。“ ”
当然,如果有变化,可以在数组元素的根上进行迭代。
$errors = array();
...
if($string_length < 0 || $string_length > 20) {
$errors[] = '<strong>Error:</strong> Property name needs to be between 1-20 characters. ';
}
...
if($num_rows > 0) {
$errors[] = '<strong>Error:</strong> Bank with the same name in existance. ';
}
// lower in a place you display the errors
echo implode('<br />', $errors);