2014-11-21 62 views
2

当试图在Beginner级别的PHP上编写这个视频教程时,我遇到了一个问题。我有问题让它为我工作。当我尝试在浏览器中加载项目时,出现这个错误,指出问题出现在我的代码的第44行中的mailprocess.php文件中。我错误所在的代码行44是if语句的开头:if (isset($$item) && !$empty($$item))致命错误:函数名称必须是字符串

但是,当教师在做视频教程的时候也做同样的事,对他来说工作正常。所以我不明白为什么它不适合我。我也有问题让我的复制/粘贴代码在这里的代码块格式工具正确格式为了张贴它,所以请耐心与我,如果它不完全对齐,因为我是新的,真的努力尝试学习,我发现PHP相当困难。任何帮助,以获得这个为我工作将不胜感激。

这里是我得到的错误的浏览器输出: enter image description here

这是我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; 
    } 

这里是什么教练有他的代码: enter image description here

回答

0
if (isset($$item) && !$empty($$item)) 

应该

if (isset($$item) && !empty($$item)) 

上!$空()只是一个错字。

+0

谢谢matwr,修复它:) – 2014-11-22 12:29:56

+0

不客气。 – matwr 2014-11-22 15:04:30

-1

这只是一个错字。你有额外的美元符号。
只需在!之后删除美元符号$
更改此
if (isset($$item) && !$empty($$item))
TO
if (isset($$item) && !empty($$item))

+1

不是。这是可变变量名称 – 2014-11-21 20:30:40

+0

对不起Tourmash,但这就是教练在他的代码中的内容(见最后一张图片),他这样做的原因是他把它变成了一个“变量变量”。 – 2014-11-21 20:31:40

+0

我已修复,对不起,我不知道这个PHP功能。 现在的答案应该有所帮助:) – Toumash 2014-11-21 20:35:10

相关问题