2014-11-21 90 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

相關問題