Revision 618
Added by thorn almost 17 years ago
view.php | ||
---|---|---|
44 | 44 |
|
45 | 45 |
// Function for generating an optionsfor a select field |
46 | 46 |
if (!function_exists('make_option')) { |
47 |
function make_option(&$n) { |
|
47 |
function make_option(&$n, $k, $values) {
|
|
48 | 48 |
// start option group if it exists |
49 | 49 |
if (substr($n,0,2) == '[=') { |
50 | 50 |
$n = '<optgroup label="'.substr($n,2,strlen($n)).'">'; |
51 | 51 |
} elseif ($n == ']') { |
52 | 52 |
$n = '</optgroup>'; |
53 | 53 |
} else { |
54 |
$n = '<option value="'.$n.'">'.$n.'</option>'; |
|
54 |
if(in_array($n, $values)) |
|
55 |
$n = '<option selected="selected" value="'.$n.'">'.$n.'</option>'; |
|
56 |
else |
|
57 |
$n = '<option value="'.$n.'">'.$n.'</option>'; |
|
55 | 58 |
} |
56 | 59 |
} |
57 | 60 |
} |
58 | 61 |
// Function for generating a checkbox |
59 | 62 |
if (!function_exists('make_checkbox')) { |
60 | 63 |
function make_checkbox(&$n, $idx, $params) { |
61 |
$field_id = $params[0]; |
|
62 |
$seperator = $params[1]; |
|
64 |
$field_id = $params[0][0];
|
|
65 |
$seperator = $params[0][1];
|
|
63 | 66 |
//$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator; |
64 |
$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'['.$idx.']" value="'.$n.'">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator; |
|
67 |
if(in_array($n, $params[1])) |
|
68 |
$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'['.$idx.']" value="'.$n.'" checked="checked">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator; |
|
69 |
else |
|
70 |
$n = '<input class="field_checkbox" type="checkbox" id="'.$n.'" name="field'.$field_id.'['.$idx.']" value="'.$n.'">'.'<font class="checkbox_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = !document.getElementById(\''.$n.'\').checked;">'.$n.'</font>'.$seperator; |
|
65 | 71 |
} |
66 | 72 |
} |
67 | 73 |
// Function for generating a radio button |
... | ... | |
70 | 76 |
$field_id = $params[0]; |
71 | 77 |
$group = $params[1]; |
72 | 78 |
$seperator = $params[2]; |
73 |
$n = '<input class="field_radio" type="radio" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'">'.'<font class="radio_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = true;">'.$n.'</font>'.$seperator; |
|
79 |
if($n == $params[3]) |
|
80 |
$n = '<input class="field_radio" type="radio" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'" checked="checked">'.'<font class="radio_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = true;">'.$n.'</font>'.$seperator; |
|
81 |
else |
|
82 |
$n = '<input class="field_radio" type="radio" id="'.$n.'" name="field'.$field_id.'" value="'.$n.'">'.'<font class="radio_label" onclick="javascript: document.getElementById(\''.$n.'\').checked = true;">'.$n.'</font>'.$seperator; |
|
74 | 83 |
} |
75 | 84 |
} |
76 | 85 |
// Generate temp submission id |
... | ... | |
161 | 170 |
} |
162 | 171 |
if($field['type'] == 'textfield') { |
163 | 172 |
$vars[] = '{FIELD}'; |
164 |
$values[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" value="'.$value.'" class="textfield" />';
|
|
173 |
$values[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" value="'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'" class="textfield" />';
|
|
165 | 174 |
} elseif($field['type'] == 'textarea') { |
166 | 175 |
$vars[] = '{FIELD}'; |
167 |
$values[] = '<textarea name="field'.$field_id.'" id="field'.$field_id.'" class="textarea">'.$value.'</textarea>';
|
|
176 |
$values[] = '<textarea name="field'.$field_id.'" id="field'.$field_id.'" class="textarea">'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'</textarea>';
|
|
168 | 177 |
} elseif($field['type'] == 'select') { |
169 | 178 |
$vars[] = '{FIELD}'; |
170 | 179 |
$options = explode(',', $value); |
171 |
array_walk($options, 'make_option'); |
|
180 |
array_walk($options, 'make_option', (isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:array()));
|
|
172 | 181 |
$field['extra'] = explode(',',$field['extra']); |
173 | 182 |
$values[] = '<select name="field'.$field_id.'[]" id="field'.$field_id.'" size="'.$field['extra'][0].'" '.$field['extra'][1].' class="select">'.implode($options).'</select>'; |
174 | 183 |
} elseif($field['type'] == 'heading') { |
... | ... | |
179 | 188 |
} elseif($field['type'] == 'checkbox') { |
180 | 189 |
$vars[] = '{FIELD}'; |
181 | 190 |
$options = explode(',', $value); |
182 |
array_walk($options, 'make_checkbox',array($field_id,$field['extra']));
|
|
191 |
array_walk($options, 'make_checkbox', array(array($field_id,$field['extra']),(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:array())));
|
|
183 | 192 |
$options[count($options)-1]=substr($options[count($options)-1],0,strlen($options[count($options)-1])-strlen($field['extra'])); |
184 | 193 |
$values[] = implode($options); |
185 | 194 |
} elseif($field['type'] == 'radio') { |
186 | 195 |
$vars[] = '{FIELD}'; |
187 | 196 |
$options = explode(',', $value); |
188 |
array_walk($options, 'make_radio',array($field_id,$field['title'],$field['extra']));
|
|
197 |
array_walk($options, 'make_radio', array($field_id,$field['title'],$field['extra'], (isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:'')));
|
|
189 | 198 |
$options[count($options)-1]=substr($options[count($options)-1],0,strlen($options[count($options)-1])-strlen($field['extra'])); |
190 | 199 |
$values[] = implode($options); |
191 | 200 |
} elseif($field['type'] == 'email') { |
192 | 201 |
$vars[] = '{FIELD}'; |
193 |
$values[] = '<input type="text" name="field'.$field_id.'" onChange="return checkmail(this.form.field'.$field_id.')" id="field'.$field_id.'" maxlength="'.$field['extra'].'" class="email" />'; |
|
202 |
$values[] = '<input type="text" name="field'.$field_id.'" onChange="return checkmail(this.form.field'.$field_id.')" id="field'.$field_id.'" value="'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:'').'" maxlength="'.$field['extra'].'" class="email" />';
|
|
194 | 203 |
$java_mailcheck .= 'onChange="return checkmail(this.form'.$field_id.'" '; |
195 | 204 |
} |
205 |
if(isset($_SESSION['field'.$field_id])) unset($_SESSION['field'.$field_id]); |
|
196 | 206 |
if($field['type'] != '') { |
197 | 207 |
echo str_replace($vars, $values, $field_loop); |
198 | 208 |
} |
... | ... | |
351 | 361 |
// Create blank "required" array |
352 | 362 |
$required = array(); |
353 | 363 |
|
364 |
// Captcha |
|
365 |
if($use_captcha) { |
|
366 |
if(isset($_POST['captcha']) AND $_POST['captcha'] != ''){ |
|
367 |
// Check for a mismatch |
|
368 |
if(!isset($_POST['captcha']) OR !isset($_SESSION['captcha']) OR $_POST['captcha'] != $_SESSION['captcha']) { |
|
369 |
$captcha_error = $MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA']; |
|
370 |
} |
|
371 |
} else { |
|
372 |
$captcha_error = $MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA']; |
|
373 |
} |
|
374 |
} |
|
375 |
if(isset($_SESSION['captcha'])) { unset($_SESSION['captcha']); } |
|
376 |
|
|
354 | 377 |
// Loop through fields and add to message body |
355 | 378 |
// Get list of fields |
356 | 379 |
$query_fields = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_form_fields WHERE section_id = '$section_id' ORDER BY position ASC"); |
... | ... | |
359 | 382 |
// Add to message body |
360 | 383 |
if($field['type'] != '') { |
361 | 384 |
if(!empty($_POST['field'.$field['field_id']])) { |
385 |
if(isset($captcha_error)) $_SESSION['field'.$field['field_id']] = $_POST['field'.$field['field_id']]; |
|
362 | 386 |
if($field['type'] == 'email' AND $admin->validate_email($_POST['field'.$field['field_id']]) == false) { |
363 | 387 |
$email_error = $MESSAGE['USERS']['INVALID_EMAIL']; |
364 | 388 |
} |
... | ... | |
379 | 403 |
} |
380 | 404 |
} |
381 | 405 |
} |
382 |
|
|
383 |
// Captcha |
|
384 |
if($use_captcha) { |
|
385 |
if(isset($_POST['captcha']) AND $_POST['captcha'] != ''){ |
|
386 |
// Check for a mismatch |
|
387 |
if(!isset($_POST['captcha']) OR !isset($_SESSION['captcha']) OR $_POST['captcha'] != $_SESSION['captcha']) { |
|
388 |
$captcha_error = $MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA']; |
|
389 |
} |
|
390 |
} else { |
|
391 |
$captcha_error = $MESSAGE['MOD_FORM']['INCORRECT_CAPTCHA']; |
|
392 |
} |
|
393 |
} |
|
394 |
if(isset($_SESSION['captcha'])) { unset($_SESSION['captcha']); } |
|
395 |
|
|
406 |
|
|
396 | 407 |
// Addslashes to email body - proposed by Icheb in topic=1170.0 |
397 | 408 |
// $email_body = $wb->add_slashes($email_body); |
398 | 409 |
|
Also available in: Unified diff
Module form: user supplied input isn't lost on captcha-failure anymore