這似乎是一個很常見的問題,但我看不到找到我的問題的答案。我已經得到了可怕的「調用成員函數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 = " * 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 = " * Email is incorrect - Try Again";
}
} else {
$emailErr = " * 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++的基礎知識,所以我已經得到了很多相似之處......這不是其中之一。
也許我只是不理解->
運算符,或者也許它是一個非對象,因爲別的東西?
在此先感謝。
太棒了!工作完美。我想我也理解了,所以通過在其中放置'$ email',假設'verifyInput'函數是從名爲'email'的類中調用的?而我的功能實際上是全球性的? – PacificFrost
這是完全正確的,我編輯了我的答案,並添加了一些資源,所以你可以更多地瞭解'PHP OOP',歡呼。 – MaveRick
甜,謝謝你的幫助! – PacificFrost