function ShowError($error_code, $error_mesg, $b_user_error, $b_alerted = false, $a_item_list = array(), $s_extra_info = "") { global $SPECIAL_FIELDS, $SPECIAL_MULTI, $SPECIAL_VALUES; global $aServerVars, $aStrippedFormVars; // // Testing with PHP 4.0.6 indicates that sessions don't always work. // So, we'll also add the error to the URL, unless // PUT_DATA_IN_URL is false. // SetSession("FormError", $error_mesg); SetSession("FormErrorInfo", $s_extra_info); SetSession("FormErrorCode", $error_code); SetSession("FormErrorItems", $a_item_list); SetSession("FormIsUserError", $b_user_error); SetSession("FormAlerted", $b_alerted); SetSession("FormData", array()); $bad_url = $SPECIAL_VALUES["bad_url"]; $bad_template = $SPECIAL_VALUES["bad_template"]; $this_form = $SPECIAL_VALUES["this_form"]; if (IsAjax()) { JSON_Result("ERROR", array("ErrorCode" => $error_code, "UserError" => $b_user_error, "ErrorMesg" => $error_mesg, "Alerted" => $b_alerted, "ErrorItems" => $a_item_list)); ZapSession(); } elseif (!empty($bad_url)) { $a_params = array(); if (PUT_DATA_IN_URL) { $a_params[] = "this_form=" . urlencode("{$this_form}"); $a_params[] = "bad_template=" . urlencode("{$bad_template}"); $a_params[] = "error=" . urlencode("{$error_mesg}"); $a_params[] = "extra=" . urlencode("{$s_extra_info}"); $a_params[] = "errcode=" . urlencode("{$error_code}"); $a_params[] = "isusererror=" . ($b_user_error ? "1" : "0"); $a_params[] = "alerted=" . ($b_alerted ? "1" : "0"); $i_count = 1; foreach ($a_item_list as $s_item) { $a_params[] = "erroritem{$i_count}=" . urlencode("{$s_item}"); $i_count++; } } else { $a_sess_data = GetSession("FormData"); $a_sess_data["this_form"] = "{$this_form}"; $a_sess_data["bad_template"] = "{$bad_template}"; SetSession("FormData", $a_sess_data); // // tell the bad_url to look in the session only // $a_params[] = "insession=1"; } // // Add the posted data to the URL so that an intelligent // $bad_url can call the form again // foreach ($aStrippedFormVars as $s_name => $m_value) { // // skip special fields // $b_special = false; if (in_array($s_name, $SPECIAL_FIELDS)) { $b_special = true; } else { foreach ($SPECIAL_MULTI as $s_multi_fld) { $i_len = strlen($s_multi_fld); if (substr($s_name, 0, $i_len) == $s_multi_fld) { $i_index = (int) substr($s_name, $i_len); if ($i_index > 0) { $b_special = true; break; } } } } if (!$b_special) { if (PUT_DATA_IN_URL) { if (is_array($m_value)) { foreach ($m_value as $s_value) { $a_params[] = "{$s_name}" . '[]=' . urlencode(substr($s_value, 0, MAXSTRING)); } } else { $a_params[] = "{$s_name}=" . urlencode(substr($m_value, 0, MAXSTRING)); } } else { $a_sess_data = GetSession("FormData"); if (is_array($m_value)) { $a_sess_data["{$s_name}"] = $m_value; } else { $a_sess_data["{$s_name}"] = substr($m_value, 0, MAXSTRING); } SetSession("FormData", $a_sess_data); } } } // // Now add the authentication data, if any // if (isset($aServerVars["PHP_AUTH_USER"]) && $aServerVars["PHP_AUTH_USER"] !== "" || isset($aServerVars["PHP_AUTH_PW"]) && $aServerVars["PHP_AUTH_PW"] !== "") { if (PUT_DATA_IN_URL) { if (isset($aServerVars["PHP_AUTH_USER"])) { $a_params[] = "PHP_AUTH_USER="******"PHP_AUTH_USER"]); } if (isset($aServerVars["PHP_AUTH_PW"])) { $a_params[] = "PHP_AUTH_PW=" . urlencode($aServerVars["PHP_AUTH_PW"]); } if (isset($aServerVars["PHP_AUTH_TYPE"])) { $a_params[] = "PHP_AUTH_TYPE=" . urlencode($aServerVars["PHP_AUTH_TYPE"]); } } else { $a_sess_data = GetSession("FormData"); if (isset($aServerVars["PHP_AUTH_USER"])) { $a_sess_data["PHP_AUTH_USER"] = $aServerVars["PHP_AUTH_USER"]; } if (isset($aServerVars["PHP_AUTH_PW"])) { $a_sess_data["PHP_AUTH_PW"] = $aServerVars["PHP_AUTH_PW"]; } if (isset($aServerVars["PHP_AUTH_TYPE"])) { $a_sess_data["PHP_AUTH_TYPE"] = $aServerVars["PHP_AUTH_TYPE"]; } SetSession("FormData", $a_sess_data); } } $bad_url = AddURLParams($bad_url, $a_params, false); Redirect($bad_url, GetMessage(MSG_FORM_ERROR)); } else { if (!empty($bad_template)) { $a_specs = array("fmerror" => htmlspecialchars("{$error_mesg}"), "fmerrorcode" => htmlspecialchars("{$error_code}"), "fmfullerror" => htmlspecialchars("{$error_mesg}") . "\n" . htmlspecialchars("{$s_extra_info}"), "fmerrorextra" => htmlspecialchars("{$s_extra_info}")); for ($i_count = 1; $i_count <= 20; $i_count++) { $a_specs["fmerroritem{$i_count}"] = ""; } $i_count = 1; foreach ($a_item_list as $s_item) { $a_specs["fmerroritem{$i_count}"] = htmlspecialchars($s_item); $i_count++; } $s_list = ""; foreach ($a_item_list as $s_item) { $s_list .= "<li>" . htmlspecialchars($s_item) . "</li>"; } $a_specs["fmerroritemlist"] = $s_list; if (ShowErrorTemplate($bad_template, $a_specs, $b_user_error)) { return; } } $s_text = GetMessage(MSG_ERROR_PROC); if ($b_user_error) { $s_text .= $error_mesg . "\n" . FixedHTMLEntities($s_extra_info); } else { global $SERVER; if ($b_alerted) { $s_text .= GetMessage(MSG_ALERT_DONE, array("SERVER" => $SERVER)); } else { $s_text .= GetMessage(MSG_PLS_CONTACT, array("SERVER" => $SERVER)); } $s_text .= GetMessage(MSG_APOLOGY, array("SERVER" => $SERVER)); } CreatePage($s_text, GetMessage(MSG_FORM_ERROR), false); // // the session data is not needed now // ZapSession(); } }
function ShowError($error_code, $error_mesg, $b_user_error, $b_alerted = false, $a_item_list = array(), $s_extra_info = "") { global $SPECIAL_FIELDS, $SPECIAL_MULTI, $SPECIAL_VALUES, $aSessionVars, $aStrippedFormVars; // // Testing with PHP 4.0.6 indicates that sessions don't always work. // So, we'll also add the error to the URL, unless // PUT_DATA_IN_URL is false. // $aSessionVars["FormError"] = $error_mesg; $aSessionVars["FormErrorInfo"] = $s_extra_info; $aSessionVars["FormErrorCode"] = $error_code; $aSessionVars["FormErrorItems"] = $a_item_list; $aSessionVars["FormIsUserError"] = $b_user_error; $aSessionVars["FormAlerted"] = $b_alerted; $aSessionVars["FormData"] = array(); $bad_url = $SPECIAL_VALUES["bad_url"]; $bad_template = $SPECIAL_VALUES["bad_template"]; $this_form = $SPECIAL_VALUES["this_form"]; if (!empty($bad_url)) { $a_params = array(); $a_params[] = "this_form=" . urlencode("{$this_form}"); $a_params[] = "bad_template=" . urlencode("{$bad_template}"); if (PUT_DATA_IN_URL) { $a_params[] = "error=" . urlencode("{$error_mesg}"); $a_params[] = "extra=" . urlencode("{$s_extra_info}"); $a_params[] = "errcode=" . urlencode("{$error_code}"); $a_params[] = "isusererror=" . ($b_user_error ? "1" : "0"); $a_params[] = "alerted=" . ($b_alerted ? "1" : "0"); $i_count = 1; foreach ($a_item_list as $s_item) { $a_params[] = "erroritem{$i_count}=" . urlencode("{$s_item}"); $i_count++; } } else { // // tell the bad_url to look in the session only // $a_params[] = "insession=1"; } // // Add the posted data to the URL so that an intelligent // $bad_url can call the form again // foreach ($aStrippedFormVars as $s_name => $m_value) { // // skip special fields // $b_special = false; if (in_array($s_name, $SPECIAL_FIELDS)) { $b_special = true; } else { foreach ($SPECIAL_MULTI as $s_multi_fld) { $i_len = strlen($s_multi_fld); if (substr($s_name, 0, $i_len) == $s_multi_fld) { $i_index = (int) substr($s_name, $i_len); if ($i_index > 0) { $b_special = true; break; } } } } if (!$b_special) { if (PUT_DATA_IN_URL) { if (is_array($m_value)) { foreach ($m_value as $s_value) { $a_params[] = "{$s_name}" . '[]=' . urlencode(substr($s_value, 0, MAXSTRING)); } } else { $a_params[] = "{$s_name}=" . urlencode(substr($m_value, 0, MAXSTRING)); } } else { if (is_array($m_value)) { $aSessionVars["FormData"]["{$s_name}"] = $m_value; } else { $aSessionVars["FormData"]["{$s_name}"] = substr($m_value, 0, MAXSTRING); } } } } $bad_url = AddURLParams($bad_url, $a_params, false); Redirect($bad_url); } else { if (!empty($bad_template)) { $a_specs = array("fmerror" => htmlspecialchars("{$error_mesg}"), "fmerrorcode" => htmlspecialchars("{$error_code}"), "fmfullerror" => htmlspecialchars("{$error_mesg}") . "\n" . htmlspecialchars("{$s_extra_info}"), "fmerrorextra" => htmlspecialchars("{$s_extra_info}")); $i_count = 1; foreach ($a_item_list as $s_item) { $a_specs["fmerroritem{$i_count}"] = htmlspecialchars($s_item); $i_count++; } $s_list = ""; foreach ($a_item_list as $s_item) { $s_list .= "<li>" . htmlspecialchars($s_item) . "</li>\n"; } $a_specs["fmerroritemlist"] = $s_list; if (ShowTemplate($bad_template, $a_specs)) { return; } } $s_text = GetMessage(MSG_ERROR_PROC); if ($b_user_error) { $s_text .= $error_mesg . "\n" . $s_extra_info; } else { if ($b_alerted) { $s_text .= GetMessage(MSG_ALERT_DONE); } else { $s_text .= GetMessage(MSG_PLS_CONTACT); } $s_text .= GetMessage(MSG_APOLOGY); } CreatePage($s_text); // // the session data is not needed now // ZapSession(); } }