2015-07-04 26 views
0

這似乎是一個很常見的問題,但我看不到找到我的問題的答案。我已經得到了可怕的「調用成員函數verifyInput()上的非對象」致命錯誤。調用一個非對象的成員函數verifyInput()

<?php 

// empty values 
$name = $email = $topic = $message = ""; 
$nameErr = $emailErr = $topicErr = $messageErr = ""; 

// link the name tags in HTML 
$name = $_POST['name']; 
$email = $_POST['email']; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

    /* name if */ 
    if (empty($_POST['name'])) { 
     $nameErr = "&nbsp;* Name is required"; 
    } else { 
     $name = test_input($_POST["name"]); 
    } 

    /* email if */ 
    if (! empty($_POST['email'])) { 
     if ($email->verifyInput($_POST['email'], 6)){ 
      $fill['email'] = $_POST['email']; //$fill is the array of values passed 
     } else { 
      $emailErr = "&nbsp;* Email is incorrect - Try Again"; 
     } 
     } else { 
      $emailErr = "&nbsp;* Email is required"; 
    } 

    // Form content 
    $recipient = "[email protected]"; 
    $subject = "Contact Form"; 
    $formcontent = "4 Days of Fun.ca - 
       \n\n\nFrom: $name \n\nEmail: $email \n\nSubject: $topic 
       \n\n\nMessage: $message"; 
    $mailheader = "From: $email - Subject: $topic \r\n"; 

    //function to send mail 
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
    echo "Thank you for contacting us, $name! \nWe will respond to you soon!"; 

    } 

//function for test_input 
function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

// Validation of Inputs 
function verifyInput($input, $type){ 
    if ($type == 0)  $pattern = '/^1$/';//just the number 1 
     elseif ($type == 1) $pattern = '/^[0-9]+$/';//just integers 
     elseif ($type == 2) $pattern = '/^[A-Za-zÁ-Úá-úàÀÜü]+$/';//just letters 
     elseif ($type == 3) $pattern = '/^[0-9A-Za-zÁ-Úá-úàÀÜü]+$/';//integers & letters 
     elseif ($type == 4) $pattern = '/^[A-Za-zÁ-Úá-ú0-9àÀÜü\s()\/\'":\*,.;\-!?&#[email protected]]{1,1500}$/';//text 
     elseif ($type == 5) $pattern = '/^[A-Za-zÁ-Úá-úàÀÜü0-9\']+[A-Za-zÁ-Úá-úàÀÜü0-9 \'\-\.]+$/';//name 
     elseif ($type == 6) $pattern = '/^[email protected][^\.].*\.[a-z]{2,}$/';//e-mail 
     elseif ($type == 7) $pattern = '/^((\(0?[1-9][0-9]\))|(0?[1-9][0-9]))?[ -.]?([1-9][0-9]{3})[ -.]?([0-9]{4})$/';//brazilian phone 
     if (preg_match($pattern, $input) == 1) return true; 
    else return false; 
} 

?> 

這是錯誤的問題:if ($email->verifyInput($_POST['email'], 6)){但我很困惑......我看着它,到處指出,在IE傳遞的變量$email可能不是一個對象。但是變量在這裏被聲明爲一個對象:$email = $_POST['email'];不是嗎?還是我錯過了一些大而明顯的東西?

我剛開始學習PHP,但是我已經掌握了很多C++的基礎知識,所以我已經得到了很多相似之處......這不是其中之一。

也許我只是不理解->運算符,或者也許它是一個非對象,因爲別的東西?

在此先感謝。

回答

0

$email->verifyInput()會調用該方法(功能)verifyInput()包含在類email,但在這裏我可以看到你的函數不是任何類的成員,因此,如果您需要調用此機能的研究,你只需要改變:

if ($email->verifyInput($_POST['email'], 6)){... 

到:

if (verifyInput($_POST['email'], 6)){... 

和關於你的問題有關->

正如我上面提到的->在實例化類之後使用成員或方法名稱。可能你需要閱讀更多關於PHP的內容,我會建議this course,或者你可以直接跳轉到PHP OOP right here

+0

太棒了!工作完美。我想我也理解了,所以通過在其中放置'$ email',假設'verifyInput'函數是從名爲'email'的類中調用的?而我的功能實際上是全球性的? – PacificFrost

+0

這是完全正確的,我編輯了我的答案,並添加了一些資源,所以你可以更多地瞭解'PHP OOP',歡呼。 – MaveRick

+0

甜,謝謝你的幫助! – PacificFrost

相關問題