自从更新到php7.1后,我在联系人表单上收到了一个错误。降级不是一种选择。有什么解决方案吗?我尝试了一些我发现的东西,但似乎不起作用。
我得到的消息是"警告:'name'中的非法字符串偏移",它对表单中的所有值(名称、电子邮件、消息…(都这样做。
<?php
require_once("classes/phpmailer/class.phpmailer.php");
$smarty_mail = new Smarty;
$smarty_mail->template_dir = 'templates/mail';
$smarty_mail->compile_dir = 'pages/templates_c';
if ( isset($_POST['submit']) )
{
$error = '';
print_r($error);
if (!trim($_POST['name'])) $error['name']=true;
if (!check_email($_POST['email'])) $error['email']=true;
if (!trim($_POST['message'])) $error['message']=true;
if (!isset($_POST['privacypolicy'])) $error['privacypolicy']=true;
$_POST['name'] = stripslashes($_POST['name']);
$_POST['message'] = stripslashes($_POST['message']);
if (!$error)
{
$contact = $_POST;
$contact['ip'] = $_SERVER['REMOTE_ADDR'];
$contact['host'] = gethostbyaddr( $contact['ip']);
$smarty_mail->assign("contact", $contact);
$message = $smarty_mail->fetch("mail_contact.tpl.html");
$subject = "contactformulier";
if( sendemail(MAIL_FROM_NAME, MAIL_FROM, $_POST['name'], $_POST['email'], $subject, $message, "HTML", "", ""))
{
$smarty->assign("send", true);
}
}
$smarty->assign("error",$error);
$smarty->assign("set", $_POST);
}
$main_content_template = "contact.tpl.html";
?>
$error = '';
毫无意义。您将$error
初始化为一个字符串,但随后您将其访问为一个数组:
$error['name']=true;
可能是
$error = array();
相反。