2013-07-18 47 views
0

我一直在嘗試解決我的聯繫表格,其中可以通過電子郵件發送數據。但我似乎在開始時有一些錯誤。它在網頁上顯示「Undefined variable」。我只跟隨一個我一直在閱讀的教程,而我還不熟練使用PHP。我爲了使用XAMPP目前運行我的PHP未定義的變量試圖修復我的聯繫表

下面是HTML標記

<html> 

<head> 
<title>Contact Form</title> 
<link rel="stylesheet" href="style.css" /> 
</head> 

<body> 
<h1>Contact Form</h1> 
<p class="error"> There are some misisng fields.</p> 
<?php if($error == true) { ?> 
<?php } if($sent == true) { ?> 
<p class="sent">Thank you for sending your message</p><?php } ?> 

<div class="contactform"> 
<form name="contact" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 

<label for="name">Name:</label> 
<input type="text" name="name" /> 
<label for="email">Email:</label> 
<input type="email" name="email" /> 
<label for="comments">Comments:</label> 
<textarea name="comments"></textarea> 
<input type="submit" name="submit" class="submit" value="submit" /> 
</form> 
</div> 

這裏是PHP代碼

<?php if($_POST['submit']) { 
if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['comments'])) { 
    $error = true; 
} else { 

    $to = "[email protected]"; 

    $name = trim($_POST['name']); 
    $email = trim($_POST['email']); 
    $comments = trim($_POST['comments']); 

    $subject = "Contact Form"; 

    $messages = "Name: $name \r\n Email: $email \r\n Comments: $comments"; 
    $headers = "From:" . $name; 
    $mailsent = mail($to, $subject, $messages, $headers); 

    if($mailsent){ 
     $sent= true; 
    } 
} 
} 
?> 

</body> 
</html> 

取消定義變量

<?php if($error == true) { ?> 

<?php } if($sent == true) { ?> 

if($_POST['submit']) { 
+0

'$ _POST'值是未識別的變量嗎? –

+0

你好Jm請看我編輯的文章 – clestcruz

回答

0

嘗試在使用它之前聲明變量。如果您沒有先傳遞值,PHP會發出通知。

<?php 
$error=false; 
$sent=false; 
if(isset($_POST['submit'])) { 
if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['comments'])) { 
    $error = true; 
} else { 

    $to = "[email protected]"; 

    $name = trim($_POST['name']); 
    $email = trim($_POST['email']); 
    $comments = trim($_POST['comments']); 

    $subject = "Contact Form"; 

    $messages = "Name: $name \r\n Email: $email \r\n Comments: $comments"; 
    $headers = "From:" . $name; 
    $mailsent = mail($to, $subject, $messages, $headers); 

    if($mailsent){ 
     $sent= true; 
    } 
} 
} 
?> 
+0

謝謝,我想我讀的教程並不完整。現在我只需要弄清楚如何通過電子郵件 – clestcruz

+0

NVM傳遞數據。我已經得到它的工作。我剛上傳到一個免費的託管服務器:D – clestcruz

+0

這只是一個通知,因爲未聲明的變量可能會給你垃圾值。但最好的編碼習慣是你在使用它之前先聲明它。免費託管服務器必須已禁用這些通知的錯誤報告。祝你的PHP旅程好運!乾杯:D –

0

這些行:

<?php if($error == true) { ?> 
<?php } if($sent == true) { ?> 

附近出現HTML的頂部,但據我所看到的,一直沒有在這一點上執行PHP,所以$error$sent不會被定義。

這條線:

if($_POST['submit']) { 

是一個值的測試,但除非你的表格已經提交,它也不會被定義。你可以用

if (isset($_POST['submit'])) { 
    // do stuff 
} 
+0

嗯所以基本上我需要把PHP代碼放在最上面? – clestcruz

+0

您需要在頂部添加一些代碼才能確定要執行的操作。基本上你需要將它分成兩部分:if(表單已經提交){發送郵件} else {顯示錶單}。 – 2013-07-18 01:50:27

+0

我試圖用您建議的代碼替換代碼行,似乎我的表單消失或無法顯示。我還是PHP新手,所以我需要做大量的試驗和錯誤 – clestcruz