Help With For Each Loop
Posted: Thu Apr 09, 2009 7:46 pm
This is an excerpt of a PHP form mail script which i intend to modify.
The variable $errors is defined as such :
I then say:
This gives me an output of all errors like so;
Missing Field 'Name'
Missing Field 'Email'
Missing Field 'Verify'
Etc....
Name: [-- Input --]
Email: [-- Input --]
I would like to then take $err and break it up into individual errors which I can place next to each input. Like So....
Name: [-- Input --] Missing Field 'Name'
Email: [-- Input --] Missing Field 'Email'
Can anyone Please Help me? I feel like I am so close I just need a little help, if you have any information that can help me please don't hesitate to post. Thank You!
The variable $errors is defined as such :
Code: Select all
unset($errors);
$errors = array();
if ($verify_method == 'recaptcha') {
@include_once('recaptchalib.php');
$privatekey = $re_private_key;
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
$errors[] = DDFM_INVALIDVER;
}
}
// Get form input and put in array
foreach ($_POST as $key => $i) {
if ($key != "form_submitted") {
if (!is_array($i)) {
$form_input[strtolower($key)] = trim($i);
} else {
$form_input[strtolower($key)] = $i;
}
}
}
$msg_field_sep = ': ';
$msg_field_line_end = "\n\n";
$fsindex = -1;
// Validate input
foreach ($form_struct as $fs) {
if (!isset($form_input[$fs['fieldname']])) {
$form_input[$fs['fieldname']] = '';
}
$fsindex++;
// check for fields used in vars
if (isset($form_input[$fs['fieldname']])) {
$sender_name = ddfm_str_replace($fs['fieldname'], ddfm_stripslashes($form_input[$fs['fieldname']]), $sender_name);
$sender_email = ddfm_str_replace($fs['fieldname'], ddfm_stripslashes($form_input[$fs['fieldname']]), $sender_email);
$email_subject = ddfm_str_replace($fs['fieldname'], ddfm_stripslashes($form_input[$fs['fieldname']]), $email_subject);
}
switch ($fs['type']) {
case 'date':
// type=date|class=|label=|fieldname=|req=(TRUEFALSE)
$t = ddfm_stripslashes($form_input[$fs['fieldname']]);
if ((strtolower($fs['req']) == 'true') && ($t == "")) {
$errors[] = DDFM_MISSINGFIELD . " '" . $fs['label'] . "'";
} else if (ddfm_injection_chars($t)) {
$errors[] = DDFM_INVALIDINPUT . " '" . $fs['label'] . "'";
}
$csv .= str_replace($save_delimiter, ' ', $t) . $save_delimiter;
$mail_message .= $fs['label'] . $msg_field_sep . $t . $msg_field_line_end;
$message_structure = ddfm_str_replace($fs['fieldname'], $t, $message_structure);
$auto_reply_message = ddfm_str_replace($fs['fieldname'], $t, $auto_reply_message);
$sent_message = ddfm_str_replace($fs['fieldname'], ddfm_bsafe($t), $sent_message);
break;
case 'text':
// type=text|class=|label=|fieldname=|max=|req=(TRUEFALSE)|[ver=]|[default=]
$t = ddfm_stripslashes($form_input[$fs['fieldname']]);
if ((strtolower($fs['req']) == 'true') && ($t == "")) {
$errors[] = DDFM_MISSINGFIELD . " '" . $fs['label'] . "'";
} else if (strlen($t) > (int)$fs['max']) {
$errors[] = $fs['max'] . ' ' . DDFM_MAXCHARLIMIT . " '" . $fs['label'] . "'";
} else if (ddfm_injection_chars($t)) {
$errors[] = DDFM_INVALIDINPUT . " '" . $fs['label'] . "'";
} else if ((strtolower($fs['ver']) == 'email') && ((strtolower($fs['req']) == "true") || ($t != ""))) {
if (!dd_is_valid_email($t)) $errors[] = DDFM_INVALIDEMAIL . " '" . $fs['label'] . "'";
} else if ((strtolower($fs['ver']) == 'url') && ((strtolower($fs['req']) == "true") || ($t != ""))) {
if (!ddfm_is_valid_url($t)) $errors[] = DDFM_INVALIDURL . " '" . $fs['label'] . "'";
}
$csv .= str_replace($save_delimiter, ' ', $t) . $save_delimiter;
$mail_message .= $fs['label'] . $msg_field_sep . $t . $msg_field_line_end;
$message_structure = ddfm_str_replace($fs['fieldname'], $t, $message_structure);
$auto_reply_message = ddfm_str_replace($fs['fieldname'], $t, $auto_reply_message);
$sent_message = ddfm_str_replace($fs['fieldname'], ddfm_bsafe($t), $sent_message);
break;
case 'password':
// type=password|class=|label=|fieldname=|max=|req=(TRUEFALSE)|confirm=(TRUEFALSE)
$t = ddfm_stripslashes($form_input[$fs['fieldname']]);
if ((strtolower($fs['req']) == 'true') && ($t == "")) {
$errors[] = DDFM_MISSINGFIELD . " '" . $fs['label'] . "'";
} else if (strlen($t) > (int)$fs['max']) {
$errors[] = $fs['max'] . ' ' . DDFM_MAXCHARLIMIT . " '" . $fs['label'] . "'";
} else if (ddfm_injection_chars($t)) {
$errors[] = DDFM_INVALIDINPUT . " '" . $fs['label'] . "'";
} else if (strtolower($fs['confirm']) == 'true') {
$tc = ddfm_stripslashes($form_input[$fs['fieldname'] . 'c']);
if ($t != $tc) $errors[] = DDFM_NOMATCH . " '" . $fs['label'] . "'";
}
$csv .= str_replace($save_delimiter, ' ', $t) . $save_delimiter;
$mail_message .= $fs['label'] . $msg_field_sep . $t . $msg_field_line_end;
$message_structure = ddfm_str_replace($fs['fieldname'], $t, $message_structure);
$auto_reply_message = ddfm_str_replace($fs['fieldname'], $t, $auto_reply_message);
$sent_message = ddfm_str_replace($fs['fieldname'], ddfm_bsafe($t), $sent_message);
break;
case 'textarea':
case 'widetextarea':
// type=textarea|class=|label=|fieldname=|max=|rows=|req=(TRUEFALSE)|[default=]
$t = ddfm_stripslashes($form_input[$fs['fieldname']]);
if ((strtolower($fs['req']) == 'true') && ($t == "")) {
$errors[] = DDFM_MISSINGFIELD . " '" . $fs['label'] . "'";
} else if (strlen($t) > (int)$fs['max']) {
$errors[] = $fs['max'] . ' ' . DDFM_MAXCHARLIMIT . " '" . $fs['label'] . "'";
}
$csv .= str_replace($save_delimiter, ' ', $t) . $save_delimiter;
$mail_message .= $fs['label'] . $msg_field_sep . $t . $msg_field_line_end;
$message_structure = ddfm_str_replace($fs['fieldname'], $t, $message_structure);
$auto_reply_message = ddfm_str_replace($fs['fieldname'], $t, $auto_reply_message);
$sent_message = ddfm_str_replace($fs['fieldname'], ddfm_bsafe($t), $sent_message);
break;
case 'verify':
// type=verify|class=|label=
if ($verify_method == 'basic') {
$t = ddfm_stripslashes($form_input['fm_verify']);
if ($t == "") {
$errors[] = DDFM_MISSINGVER;
} else if (trim($_COOKIE["ddfmcode"]) == "") {
$errors[] = DDFM_NOVERGEN;
} else if ($_COOKIE["ddfmcode"] != md5(strtoupper($t))) {
$errors[] = DDFM_INVALIDVER;
}
}
break;
case 'checkbox':
// type=checkbox|class=|label=|data=
// (fieldname),(text),(CHECKED),(REQUIRED),
// (fieldname),(text),(CHECKED),(REQUIRED),
// (fieldname),(text),(CHECKED),(REQUIRED)
$data = explode(",", trim($fs['data']));
$tmp_msg = array();
for ($i = 0; $i < count($data); $i+=4) {
$t = '';
if (isset($form_input[$data[$i]])) {
$t = ddfm_stripslashes(trim($form_input[$data[$i]]));
}
if ((strtolower($data[$i+3]) == 'true') && ($t == "")) {
$errors[] = DDFM_MISSINGFIELD . " '" . $fs['label'] . "'";
}
if ($t != "") $tmp_msg[] = $t;
$message_structure = ddfm_str_replace($data[$i], $t, $message_structure);
$auto_reply_message = ddfm_str_replace($data[$i], $t, $auto_reply_message);
$sent_message = ddfm_str_replace($data[$i], ddfm_bsafe($t), $sent_message);
}
$csv .= str_replace($save_delimiter, ' ', implode(', ', $tmp_msg)) . $save_delimiter;
$mail_message .= $fs['label'] . $msg_field_sep . implode(', ', $tmp_msg) . $msg_field_line_end;
break;
case 'radio':
// type=radio|class=|label=|fieldname=|req=|[default=]|data=
// (text),(text),(text),(text)
$t = ddfm_stripslashes(trim($form_input[$fs['fieldname']]));
if ((strtolower($fs['req']) == 'true') && ($t == "")) {
$errors[] = DDFM_MISSINGFIELD . " '" . $fs['label'] . "'";
}
$csv .= str_replace($save_delimiter, ' ', $t) . $save_delimiter;
$mail_message .= $fs['label'] . $msg_field_sep . $t . $msg_field_line_end;
$message_structure = ddfm_str_replace($fs['fieldname'], $t, $message_structure);
$auto_reply_message = ddfm_str_replace($fs['fieldname'], $t, $auto_reply_message);
$sent_message = ddfm_str_replace($fs['fieldname'], ddfm_bsafe($t), $sent_message);
break;
case 'select':
// type=select|class=|label=|fieldname=|multi=(TRUEFALSE)|data=
// (#group),(text),(text),(#group),(text),(text)
$data = explode(",", trim($fs['data']));
if (strtolower($fs['multi']) != 'true') {
$t = ddfm_stripslashes($form_input[$fs['fieldname']]);
$first_item = $data[0];
if ((strtolower($fs['req']) == 'true') && (($t == "") || ($t == $first_item))) {
$errors[] = DDFM_MISSINGFIELD . " '" . $fs['label'] . "'";
}
$csv .= str_replace($save_delimiter, ' ', $t) . $save_delimiter;
$mail_message .= $fs['label'] . $msg_field_sep . $t . $msg_field_line_end;
$message_structure = ddfm_str_replace($fs['fieldname'], $t, $message_structure);
$auto_reply_message = ddfm_str_replace($fs['fieldname'], $t, $auto_reply_message);
$sent_message = ddfm_str_replace($fs['fieldname'], ddfm_bsafe($t), $sent_message);
} else { // multi = true
$t = (array)$form_input[$fs['fieldname']];
if ((count($t) == 1) && ($t[0] == '')) {
unset($t[0]);
}
if ((strtolower($fs['req']) == 'true') && (count($t) == 0)) {
$errors[] = DDFM_MISSINGFIELD . " '" . $fs['label'] . "'";
}
$tmp_msg = array();
foreach ($t as $tt) {
if ($tt != "") $tmp_msg[] = $tt;
}
$csv .= str_replace($save_delimiter, ' ', implode(', ', $tmp_msg)) . $save_delimiter;
$mail_message .= $fs['label'] . $msg_field_sep . implode(', ', $tmp_msg) . $msg_field_line_end;
$message_structure = ddfm_str_replace($fs['fieldname'], implode(', ', $tmp_msg), $message_structure);
$auto_reply_message = ddfm_str_replace($fs['fieldname'], implode(', ', $tmp_msg), $auto_reply_message);
$sent_message = ddfm_str_replace($fs['fieldname'], ddfm_bsafe(implode(', ', $tmp_msg)), $sent_message);
}
break;
case 'file':
// type=file|class=|label=|fieldname=|[req=]|[allowed=1,2,3]
if ((strtolower($fs['req']) == 'true') && (($_FILES[$fs['fieldname']]['name'] == ""))) {
$errors[] = DDFM_MISSINGFILE . " '" . $fs['label'] . "'";
}
$allowed = array();
if (trim($fs['allowed']) != "") {
$allowed = (array)explode(",", trim(strtolower($fs['allowed'])));
}
if (($_FILES[$fs['fieldname']]['name'] != "") && ((int)$_FILES[$fs['fieldname']]['size'] == 0)) {
$errors[] = DDFM_FILETOOBIG . ' ' . $_FILES[$fs['fieldname']]['name'];
} else if ($_FILES[$fs['fieldname']]['tmp_name'] != "") {
if (($_FILES[$fs['fieldname']]['error'] == UPLOAD_ERR_OK) && ($_FILES[$fs['fieldname']]['size'] > 0)) {
$origfilename = $_FILES[$fs['fieldname']]['name'];
$filename = explode(".", $_FILES[$fs['fieldname']]['name']);
$filenameext = $filename[count($filename) - 1];
unset($filename[count($filename) - 1]);
$filename = implode(".", $filename);
$filename = substr($filename, 0, 15) . "." . $filenameext;
$file_ext_allow = TRUE;
if (count($allowed) > 0) {
$file_ext_allow = FALSE;
for ($x = 0; $x < count($allowed); $x++) {
if (strtolower($filenameext) == strtolower($allowed[$x])) {
$file_ext_allow = TRUE;
}
}
}
if ($file_ext_allow) {
if((int)$_FILES[$fs['fieldname']]['size'] < $max_file_size) {
$attached_files[$attached_index]['file'] = $_FILES[$fs['fieldname']]['name'];
$attached_files[$attached_index]['tmpfile'] = $_FILES[$fs['fieldname']]['tmp_name'];
$attached_files[$attached_index]['content_type'] = $_FILES[$fs['fieldname']]['type'];
$attached_index++;
$csv .= str_replace($save_delimiter, ' ', $_FILES[$fs['fieldname']]['name']) . $save_delimiter;
if (!$attach_save) {
$mail_message .= DDFM_ATTACHED . $msg_field_sep . $_FILES[$fs['fieldname']]['name'] . "\n\n";
}
$message_structure = ddfm_str_replace($fs['fieldname'], $_FILES[$fs['fieldname']]['name'], $message_structure);
$auto_reply_message = ddfm_str_replace($fs['fieldname'], $_FILES[$fs['fieldname']]['name'], $auto_reply_message);
$sent_message = ddfm_str_replace($fs['fieldname'], $_FILES[$fs['fieldname']]['name'], $sent_message);
} else {
$errors[] = DDFM_FILETOOBIG . ' ' . $_FILES[$fs['fieldname']]['name'];
}
} else {
$errors[] = DDFM_INVALIDEXT . ' ' . $_FILES[$fs['fieldname']]['name'];
}
} else {
$errors[] = DDFM_UPLOADERR . ' ' . $_FILES[$fs['fieldname']]['name'];
}
}
$message_structure = ddfm_str_replace($fs['fieldname'], '', $message_structure);
$auto_reply_message = ddfm_str_replace($fs['fieldname'], $t, $auto_reply_message);
$sent_message = ddfm_str_replace($fs['fieldname'], ddfm_bsafe($t), $sent_message);
break;
case 'selrecip':
// type=selrecip|class=|label=|data=(select),User1,user1@domain.com,User2 etc..
$data = explode(",", trim($fs['data']));
$t = ddfm_stripslashes($form_input['fm_selrecip']);
if (($t == "") || ($t == $data[0])) {
$errors[] = DDFM_MISSINGFIELD . " '" . $fs['label'] . "'";
} else {
for ($i = 1; $i < count($data); $i+=2) {
if ($data[$i] == $t) {
$sel_recip = trim($data[$i+1]);
}
}
}
break;
}
}
// make sure no un-used fieldnames are left in template
foreach ($form_struct as $fs) {
$message_structure = ddfm_str_replace($fs['fieldname'], '', $message_structure);
$auto_reply_message = ddfm_str_replace($fs['fieldname'], '', $auto_reply_message);
$sent_message = ddfm_str_replace($fs['fieldname'], '', $sent_message);
}
if (ddfm_injection_chars($sender_name)) $errors[] = DDFM_INVALIDINPUT;
if (ddfm_injection_chars($sender_email)) $errors[] = DDFM_INVALIDINPUT;
if (ddfm_injection_chars($email_subject)) $errors[] = DDFM_INVALIDINPUT;
Code: Select all
if ($errors) {
$o .= '<div class="ddfmwrap"><div class="ddfmerrors">' . DDFM_ERRORMSG . '</div>';
$o .= '<div class="errorlist">';
foreach ($errors as $err) {
$o .= $err . '<br/>';
}
$o .= '</div><div style="clear:both;"><!-- --></div></div>';
Missing Field 'Name'
Missing Field 'Email'
Missing Field 'Verify'
Etc....
Name: [-- Input --]
Email: [-- Input --]
I would like to then take $err and break it up into individual errors which I can place next to each input. Like So....
Name: [-- Input --] Missing Field 'Name'
Email: [-- Input --] Missing Field 'Email'
Can anyone Please Help me? I feel like I am so close I just need a little help, if you have any information that can help me please don't hesitate to post. Thank You!