Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新显示有错误的PHP表单_Php - Fatal编程技术网

重新显示有错误的PHP表单

重新显示有错误的PHP表单,php,Php,我有十几个功能齐全的脚本,它们使用heredoc语句来显示HTML,包括例如$errors[field\u name],但这种几乎相同的脚本会导致POST错误,如 “注意:第162行register.php中的未定义索引:user_password” 当用户在需要8个以上字符时输入5个字符的密码时,验证函数将填充$errors['password'],表单将与验证错误一起重新显示 看不出我在这个引导式表单中缺少了什么。$errors数组是全局数组,我可以强制显示错误,因此我知道错误已初始化,但我

我有十几个功能齐全的脚本,它们使用heredoc语句来显示HTML,包括例如
$errors[field\u name]
,但这种几乎相同的脚本会导致POST错误,如

“注意:第162行register.php中的未定义索引:user_password”

当用户在需要8个以上字符时输入5个字符的密码时,验证函数将填充
$errors['password']
,表单将与验证错误一起重新显示

看不出我在这个引导式表单中缺少了什么。
$errors
数组是全局数组,我可以强制显示错误,因此我知道错误已初始化,但我会不断获取

“注意:未定义索引”

$fields=数组('user\u name'、'user\u email'、'user\u password'、'user\u password2');
函数显示形式($string='')
{
全局$error\u token、$cfg、$fields、$form、$errors、$s、$token、$validation\u status;
$error_message='';
开关($\u服务器['REQUEST\u METHOD'])
{
案例“POST”:
//验证失败,请重新显示表单
$autofocus='';
foreach($fields作为$field){
$$field=htmlentities(get_cgi_var($field),ENT_引号,'UTF-8');
//引导警报标记中的wrap错误
$errors[$field]=!empty($errors[$field])?“”。htmlentities($errors[$field],ENT_引号,'UTF-8'):“”;
//调试,强制过早显示错误。
//echo!empty($errors[$field])?“”.htmlentities($errors[$field],ENT_引号,'UTF-8')。':“empty

”; } 打破 案例“GET”: 违约: $autofocus='autofocus'; foreach($fields作为$field){ $$字段=“”; $errors[$field]=''; } $error_token=''; 打破 }; foreach($fields作为$field){ $validation_status[$field]=空($errors[$field])?“has success”:“has error”; } $self=self; 打印 _HTML); }; 这是你的问题:

default:
    $autofocus = 'autofocus';
    foreach($fields as $field){
        $$field = ''; // <------------------
        $errors[$field] = '';
    }
    $error_token = '';
    break;
默认值:
$autofocus='autofocus';
foreach($fields作为$field){

$$field='';//这会生成一个未定义的索引错误吗?我认为这些错误仅在访问数组时生成,尽管我承认我从未使用过变量…
$errors
是一个数组,而您的foreach在
默认值
开关的情况下是迭代
$fields
并设置e
$field
作为
$errors
数组上的键,空字符串作为值。稍后在构建
\u HTML\u
的代码中,您将尝试像这样使用键
$errors[用户密码]
但是,这不起作用,因为您的键入没有生成任何键。因此,是的,简短的回答,您的键入可能会导致未定义的索引…请尝试我的回答/建议,一定要让我们知道它是否起作用。如果不起作用-我怀疑故障在其他地方…
$$field
不是键入;OP正在创建一个变量。在这种情况下,他是初始化名为
$user\u name
$user\u email
,等等的变量。他还用这些相同的值初始化
$errors
数组。我认为有两个问题。一个是Chrome browser不断提供先前测试的结果“提交,因此显示非真实结果。在从
!empty()
切换到
isset()
以评估
$errors[$field]后,主要问题似乎自行纠正了。”
。将计算机置于睡眠状态几个小时后,通过使用任何一种方法进行评估,表单似乎都能按计划工作。我讨厌计算机。小精灵,缓存问题,现在不知道确切的问题是什么。
default:
    $autofocus = 'autofocus';
    foreach($fields as $field){
        $$field = ''; // <------------------
        $errors[$field] = '';
    }
    $error_token = '';
    break;