当试图在Beginner级别的PHP上编写这个视频教程时,我遇到了一个问题。我有问题让它为我工作。当我尝试在浏览器中加载项目时,出现这个错误,指出问题出现在我的代码的第44行中的mailprocess.php文件中。我错误所在的代码行44是if语句的开头:if (isset($$item) && !$empty($$item))
致命错误:函数名称必须是字符串
但是,当教师在做视频教程的时候也做同样的事,对他来说工作正常。所以我不明白为什么它不适合我。我也有问题让我的复制/粘贴代码在这里的代码块格式工具正确格式为了张贴它,所以请耐心与我,如果它不完全对齐,因为我是新的,真的努力尝试学习,我发现PHP相当困难。任何帮助,以获得这个为我工作将不胜感激。
这里是我得到的错误的浏览器输出:
这是我mailprocess.php文件和代码:
<?php
$suspect = false;
$pattern = '/Content-Type:|Bcc:|Cc:/i'; //Perl compatible reg-x to filter
$empty = false;
function isSupect($val, $pattern, &$suspect) {
if (is_array($val)) {
foreach ($val as $item) {
isSuspect($item, $pattern, $suspect);
}
}else {
if (preg_match($pattern, $val)) {
$suspect = true;
}
}
isSuspect($_POST, $pattern, $suspect);
}
if (!$suspect) {
foreach ($_POST as $key => $value) {
$temp = is_array($value) ? $value : trim($value); //removes white space
if (empty($temp) && in_array($key, $required)) {
$missing[] = $key;
$$key = '';
} elseif (in_array($key, $expected)) {
$$key = $temp;
}
}
}
if (!$suspect && !$empty['$email']) {
$validemail = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
if ($validemail) {
$headers .= "\r\nReply-to: $validemail";
} else {
$errors['email'] = true;
}
}
if (!$suspect && !$missing && !$errors){
$message = ' ';
foreach ($expected as $item) {
if (isset($$item) && !$empty($$item)){
$val = $$item;
} else {
$val = 'Not selected';
}
if (is_array($val)){
$val = implode(', ', $val);
}
$item = str_replace(array('_', '-'), '', $item);
$message .= ucfirst($item) . ": $val\r\n\r\n";
}
$message = wordwrap($message, 70);
$mailSent = true;
}
这里是什么教练有他的代码:
谢谢matwr,修复它:) – 2014-11-22 12:29:56
不客气。 – matwr 2014-11-22 15:04:30