编辑:
开发人员打破了路由。它影响了我的页面,导致它在生产时失败,这就是为什么它的行为与使用邮件程序的其他服务器不同。
因此,我们有一个名为$ 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";
}
}
我也试过if(isset($ mailSettings [$ submittedOptionUPPER]){并且这也不起作用。当我print_r $ mailData& $ mailSettings时,两者都与上面完全相同(默认值被正确拉出从我们的配置文件)。
问题是我可以为两个数组执行print_r直接超过eval(isset或in_array)并且它们看起来很好......但是在这个服务器上(并没有我们的其他服务器),代码进入echo&# 34;邮件配置错误。"我不能(对于我的生活),想出来......所以它是StackOverflow的时间。
是否有任何原因并且in_array都会失败(仅在一个特定的服务器上)?
要了解的其他事实......
有什么想法吗?
答案 0 :(得分:3)
您需要使用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);