РЕДАКТИРОВАТЬ:
Разработчик нарушил маршрутизацию. Это повлияло на мою страницу таким образом, что это привело к сбою в работе, поэтому она действовала иначе, чем другие серверы, использующие почтовую программу.
Итак, у нас есть массив с именем $ mailSettings. Этот массив обрабатывает значения по умолчанию, если новые значения не передаются почтовой программе. Это настроено здесь:
$mailSettings = array(
"TOADDRESS" => $wuMail_Config->DefaultToAddress,
"TONAME" => $wuMail_Config->DefaultToName,
"CC" => $wuMail_Config->DefaultCC,
"BCC" => $wuMail_Config->DefaultBCC,
"SUBJECT" => $wuMail_Config->DefaultSubject,
"MESSAGE" => $wuMail_Config->DefaultMessage,
"HTML" => $wuMail_Config->DefaultHTML,
"FROMADDRESS" => $wuMail_Config->DefaultFromAddress,
"FROMNAME" => $wuMail_Config->DefaultFromName,
"REPLYADDRESS" => $wuMail_Config->DefaultReplyAddress,
"REPLYNAME" => $wuMail_Config->DefaultReplyName
);
Теперь, в следующей части — мы анализируем представленные данные … В этом конкретный В этом случае мы представили только несколько пользовательских полей и полагаемся на значения по умолчанию для остальных.
$mailData = array(
"TOADDRESS" => $email,
"TONAME" => $username,
"SUBJECT" => "Welcome to SiteName! Please verify your email address.",
"MESSAGE" => $message,
"HTML" => $message
);
Итак, мы делаем следующее: мы берем $ mailData и преобразуем каждое имя ключа в заглавную версию. Так что, если они отправят «toAddReSs», он будет оцениваться как «TOADDRESS», все заглавные буквы — в соответствии с массивом $ mailSettings. Мы делаем это здесь …
foreach($mailData as $submittedOption => $submittedValue){
$submittedOptionUPPER = strtoupper($submittedOption);
$submittedOpts[] = $submittedOptionUPPER;
if(in_array($submittedOptionUPPER, $mailSettings)){
$mailSettings[$submittedOptionUPPER] = $data[$submittedOption];
} else {
echo "Mail Configuration Error";
}
}
Я также пытался, если (isset ($ mailSettings [$ submitOptionUPPER]) {и это тоже не работает. Когда я печатаю $ mailData & $ mailSettings, оба точно такие же, как указано выше (значения по умолчанию правильно извлекаются из нашего конфигурационного файла).
Проблема в том, что я могу сделать print_r для обоих массивов ПРАВО НАД Eval (isset или in_array), и они выглядят нормально … но на этом сервере (и ни на одном из наших других серверов) код переходит в эхо «Ошибка конфигурации почты. » Я не могу (на всю жизнь) понять это … и так пришло время StackOverflow.
Есть ли какая-то причина, по которой isset AND in_array может что-то потерпеть (только на одном конкретном сервере)?
Другие факты, чтобы знать …
Есть идеи?
Вам нужно использовать array_key_exists($submittedOptionUPPER, $mailSettings)
или же isset($mailSettings[$submittedOptionUPPER])
проверить ключ, однако я думаю, что вы делаете сводится к следующему:
// covert keys to uppercase
$mailData = array_change_key_case($mailData, CASE_UPPER);
// check if there are keys in $mailData that aren't in $mailSettings
if(array_key_diff($mailData, $mailSettings) {
echo "Mail Configuration Error"; // do something else?
}
// merge $mailData into $mailSettings
$mailSettings = array_merge($mailSettings, $mailData);
Других решений пока нет …