Ich habe ein tell a friend Script womit ein Seite gleichzeitig an 3 verschiedene Freunde weiterempfehlen kann, es hat schon eine gute Validierung aber die 3 emails an den man weiterempfiehlt dürfen nicht gleich sein:
PHP-Code:
// ------------------------------------- //
// field validation functions start here //
// ------------------------------------- //
// form validation
function form_validate (
){
global $m_fields;
global $m_params;
// proceed
$l_status = TRUE;
if (!validate_field_1($_POST['firstname'], $m_fields['firstname'], '', TRUE)) $l_status = FALSE;
if (!validate_field_1($_POST['lastname'], $m_fields['lastname'], '', TRUE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_address'], $m_fields['email_address'], '', TRUE)) $l_status = FALSE;
if (!validate_checkbox($_POST['send_me'], $m_fields['send_me'])) $l_status = FALSE;
if (!validate_email_address($_POST['email_01'], $m_fields['email_01'], '', FALSE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_01'], $m_fields['email_01'], '', FALSE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_02'], $m_fields['email_02'], '', FALSE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_03'], $m_fields['email_03'], '', FALSE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_04'], $m_fields['email_04'], '', FALSE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_05'], $m_fields['email_05'], '', FALSE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_06'], $m_fields['email_06'], '', FALSE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_07'], $m_fields['email_07'], '', FALSE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_08'], $m_fields['email_08'], '', FALSE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_09'], $m_fields['email_09'], '', FALSE)) $l_status = FALSE;
if (!validate_email_address($_POST['email_10'], $m_fields['email_10'], '', FALSE)) $l_status = FALSE;
if (!validate_field_1($_POST['message'], $m_fields['message'], '', FALSE)) $l_status = FALSE;
if (!validate_field_2($_SERVER['REMOTE_ADDR'], $_POST['ip_address'], $m_fields['ip_address'], 'unknown', FALSE)) $l_status = FALSE;
// loop on subscribed newsletters
$l_count = count($m_params['newsletters']);
for ($l_cnt = 0; $l_cnt < $l_count; $l_cnt++) {
$l_name = "news_" . $l_cnt;
if (!validate_checkbox($_POST[$l_name], $m_fields[$l_name])) $l_status = FALSE;
}
// check that at least one target email address has been provided
if (
$m_fields['email_03'][FIELD_VALUE] == '' &&
$m_fields['email_04'][FIELD_VALUE] == '' &&
$m_fields['email_05'][FIELD_VALUE] == '' &&
$m_fields['email_06'][FIELD_VALUE] == '' &&
$m_fields['email_07'][FIELD_VALUE] == '' &&
$m_fields['email_08'][FIELD_VALUE] == '' &&
$m_fields['email_09'][FIELD_VALUE] == '' &&
$m_fields['email_10'][FIELD_VALUE] == ''
){
$m_fields['email_01'][FIELD_STATUS] = FALSE;
$m_fields['email_01'][FIELD_CLASS] = $m_fields['email_01'][FIELD_ERRORCLASS];
$l_status = FALSE;
}
// exit
return $l_status;
}
// validate field
function validate_field_1 (
&$p_param,
&$p_field,
$p_default,
$p_mandatory
){
$p_field[FIELD_VALUE] = $p_param == '' ? $p_default : $p_param;
$p_field[FIELD_STATUS] = TRUE;
if ($p_mandatory == TRUE) {
$p_field[FIELD_STATUS] = ($p_field[FIELD_VALUE] != "");
if (!$p_field[FIELD_STATUS]) $p_field[FIELD_CLASS] = $p_field[FIELD_ERRORCLASS];
}
// exit
return $p_field[FIELD_STATUS];
}
// validate field
function validate_field_2 (
&$p_param_1,
&$p_param_2,
&$p_field,
$p_default,
$p_mandatory
){
if (isset($p_param_1)) $p_field[FIELD_VALUE] = $p_param_1;
if (isset($p_param_2) && $p_field[FIELD_VALUE] == '') $p_field[FIELD_VALUE] = $p_param_2;
if ($p_field[FIELD_VALUE] == '') $p_field[FIELD_VALUE] = $p_default;
$p_field[FIELD_STATUS] = TRUE;
if ($p_mandatory == TRUE) {
$p_field[FIELD_STATUS] = ($p_field[FIELD_VALUE] != "");
if (!$p_field[FIELD_STATUS]) $p_field[FIELD_CLASS] = $p_field[FIELD_ERRORCLASS];
}
// exit
return $p_field[FIELD_STATUS];
}
// validate field
function validate_field_3 (
&$p_param_1,
&$p_param_2,
&$p_param_3,
&$p_field,
$p_default,
$p_mandatory
){
if (isset($p_param_1)) $p_field[FIELD_VALUE] = $p_param_1;
if (isset($p_param_2) && $p_field[FIELD_VALUE] == '') $p_field[FIELD_VALUE] = $p_param_2;
if (isset($p_param_3) && $p_field[FIELD_VALUE] == '') $p_field[FIELD_VALUE] = $p_param_3;
if ($p_field[FIELD_VALUE] == '') $p_field[FIELD_VALUE] = $p_default;
$p_field[FIELD_STATUS] = TRUE;
if ($p_mandatory == TRUE) {
$p_field[FIELD_STATUS] = ($p_field[FIELD_VALUE] != "");
if (!$p_field[FIELD_STATUS]) $p_field[FIELD_CLASS] = $p_field[FIELD_ERRORCLASS];
}
// exit
return $p_field[FIELD_STATUS];
}
// validate checkbox
function validate_checkbox (
&$p_param,
&$p_field
){
$p_field[FIELD_STATUS] = TRUE;
$p_value = '0';
if (isset($p_param)) $p_field[FIELD_VALUE] = $p_param == '' ? '0' : '1';
// exit
return $p_field[FIELD_STATUS];
}
// validate email address
function validate_email_address (
&$p_param,
&$p_field,
$p_default,
$p_mandatory
){
$p_field[FIELD_STATUS] = TRUE;
$p_field[FIELD_VALUE] = $p_param == '' ? $p_default : $p_param;
// check if optional address is ok
if ($p_field[FIELD_VALUE] != "") {
if (preg_match("/^email_01.value $/ix", $p_field[FIELD_VALUE]) == 0) {
$p_field[FIELD_STATUS] = FALSE;
$p_field[FIELD_CLASS] = $p_field[FIELD_ERRORCLASS];
}
}
else {
if ($p_mandatory == TRUE) {
$p_field[FIELD_STATUS] = FALSE;
$p_field[FIELD_CLASS] = $p_field[FIELD_ERRORCLASS];
}
}
// check if optional address is ok
if ($p_field[FIELD_VALUE] != "") {
if (preg_match("/^[^@\s]+@([-a-z0-9]+\.)+([a-z]{2}|com|de|at|ch|net|edu|org|gov|mil|int|biz|pro|info|arpa|aero|coop|name|museum)$/ix", $p_field[FIELD_VALUE]) == 0) {
$p_field[FIELD_STATUS] = FALSE;
$p_field[FIELD_CLASS] = $p_field[FIELD_ERRORCLASS];
}
}
else {
if ($p_mandatory == TRUE) {
$p_field[FIELD_STATUS] = FALSE;
$p_field[FIELD_CLASS] = $p_field[FIELD_ERRORCLASS];
}
}
// exit
return $p_field[FIELD_STATUS];
}
// ----------------------------------------- //
// html code generation functions start here //
// ----------------------------------------- //
// build error message
function html_build_error_message (
&$p_fields,
&$p_params
){
$l_error = '';
if ($p_fields['firstname'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['firstname'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['lastname'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['lastname'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_address'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_address'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['send_me'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['send_me'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_01'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_01'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_02'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_02'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_03'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_03'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_04'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_04'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_05'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_05'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_06'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_06'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_07'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_07'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_08'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_08'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_09'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_09'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['email_10'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['email_10'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['message'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['message'][FIELD_ERRORTEXT] . "<br>";
if ($p_fields['link'][FIELD_STATUS] == FALSE) $l_error .= $p_fields['link'][FIELD_ERRORTEXT] . "<br>";
// loop on subscribed newsletters
$l_count = count($p_params['newsletters']);
for ($l_cnt = 0; $l_cnt < $l_count; $l_cnt++) {
$l_name = "news_" . $l_cnt;
if ($p_fields[$l_name][FIELD_STATUS] == FALSE) $l_error .= $p_fields[$l_name][FIELD_ERRORTEXT] . "<br>";
}
// exit
return $l_error;
}