diff options
author | Dries Buytaert <dries@buytaert.net> | 2006-03-12 09:28:12 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2006-03-12 09:28:12 +0000 |
commit | 2a3e3b2fedf6eff17e083d27e4c5e371c18b628d (patch) | |
tree | 1f03df692f4aaa2574f267586097156a6318b210 /includes | |
parent | 7d9217fc20bf82d119a13e2c09406f4d0e30e935 (diff) | |
download | brdo-2a3e3b2fedf6eff17e083d27e4c5e371c18b628d.tar.gz brdo-2a3e3b2fedf6eff17e083d27e4c5e371c18b628d.tar.bz2 |
- Patch #53480 by chx et al: clean and harden form_builder for various types of posted elements.
Diffstat (limited to 'includes')
-rw-r--r-- | includes/form.inc | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/includes/form.inc b/includes/form.inc index 9ad1e79dc..e028edbd7 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -323,12 +323,24 @@ function form_builder($form_id, $form) { $form['#ref'] = &$ref; if (!isset($form['#value'])) { if ($posted) { - if (isset($edit)) { - $form['#value'] = $edit; // normal element - $form['#needs_validation'] = TRUE; + switch ($form['#type']) { + case 'checkbox': + $form['#value'] = isset($edit) ? $form['#return_value'] : 0; + break; + case 'select': + $form['#value'] = isset($edit) ? $edit : array(); + break; + case 'textfield': + if (isset($edit)) { + $form['#value'] = str_replace(array("\r", "\n"), '', $edit); + } + break; + default: + if (isset($edit)) { + $form['#value'] = $edit; + } } - elseif (isset($form['#return_value'])) { - $form['#value'] = '0'; // checkbox unchecked + if (isset($form['#value'])) { $form['#needs_validation'] = TRUE; } } |