我尝试在初级PHP上编写此视频教程时遇到了问题。我无法让它为我工作。当我尝试在浏览器中加载项目时,我收到此错误,指出问题出现在mailprocess.php文件中我的代码的第44行。我的代码第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;
}
以下是教师在他的代码中的内容:
答案 0 :(得分:0)
if (isset($$item) && !$empty($$item))
应该是
if (isset($$item) && !empty($$item))
!$ empty()。
答案 1 :(得分:-1)
这只是一个错字。你有额外的美元符号。
只需在$
之后移除美元符号!
即可
改变这个
if (isset($$item) && !$empty($$item))
TO
if (isset($$item) && !empty($$item))