2012-08-28 56 views
3

我正在學習PHP,並有一本書,其中有很多的例子和練習英寸我正在做的是關於發送電子郵件。我複製的代碼爲信,但我得到一個錯誤:錯誤在嘗試發送電子郵件的PHP

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\website2\www\sendscript.php on line 6 

這究竟是爲什麼,任何想法?

這裏是我的PHP腳本:

<?php 
    if(($_POST['sender_name']=="")||($_POST['sender_email']=="")||($_POST['message']=="")){ 
     header("Location: sendemail.html"); 
     exit; 
    } 

    $email = "Sender's name:\t$_POST['sender_name']\n"; 
    $email .= "Sender's email:\t$_POST['sender_email']\n"; 
    $email .= "Message:\t$_POST['message']\n"; 
    $to = "[email protected]"; 
    $subject = "did script work?"; 
    $mailheaders = "From: Stafford King"; 
    $mailheaders .= "Reply to: $_POST['sender_email']\n"; 
    mail($to, $subject, $email, $mailheaders); 
?> 
<html> 
    <head></head> 
    <body> 
     <h1>Email sent!</h1> 
    </body> 
</html> 

這裏是我的電子郵件輸入形式:

<html> 
    <head></head> 
    <body> 
    <form method = "post" action = "sendscript.php"> 
     <p><strong>Your name:</strong><br /> 
     <input type = "text" name = "sender_name" size = "30"</p> 
     <p><strong>Your email address:</strong><br /> 
     <input type = "text" name = "sender_email" size = "30"</p> 
     <p><strong>Message:</strong><br /> 
    <textarea name = "message" cols = "30" rows = "5" wrap = "virtual"></textarea></p> 
     <p><input type = "submit" name = "submit" value = "send email"></p> 
    </form> 
    </body> 
</html> 

謝謝你們:)

+0

不要吝嗇OP的夢想,但這個問題不值得票。這是一個簡單的解析/語法錯誤。如果OP使用了合適的IDE,我們都不會看到這個問題,因爲它永遠不會是一個問題。 – Matt

+0

它是我選擇我使用的,本網站的重點是提問。如果我使用了IDE,那麼它就會突出顯示紅色並給出相同的錯誤。所以閉嘴 – imulsion

+0

這也是你的特權,使用螺絲刀的對接端將釘子推入木頭。它有效,但這並不意味着你做得對。 – Matt

回答

9

你需要用大括號中的數組變量{}或串聯它們在字符串內:

OPTION 1

$email = "Sender's name:\t{$_POST['sender_name']}\n"; 

OPTION 2

$email = "Sender's name:\t" . $_POST['sender_name'] . "\n"; 

注:

使用IDE的如Dreamweaver(許可費)上,NetBeans或者Eclipse(包括開源&免費)會立即抓住這一點。嘗試其中之一,而不是記事本或記事本++。

+0

選項2,選項2 ... – gd1

+1

@ gd1都是有效的,但(正如您正確指出的那樣)選項2是首選。 – Matt

+0

它的工作! :) 謝謝! – imulsion

1
$email = "Sender's name:\t$_POST['sender_name']\n"; 

無法很好地解決。使用

$email = "Sender's name:\t{$_POST['sender_name']}\n"; 

代替。另外,您也可以串聯或使用sprintf

$email = "Sender's name:\t" . $_POST['sender_name'] . "\n"; 
$email = sprintf("Sender's name:\t%s\n", $_POST['sender_name']); 
0

你需要分割你的連接:

$email = "Sender's name:\t" . $_POST['sender_name'] . "\n"; 
$email .= "Sender's email:\t" . $_POST['sender_email'] . "\n"; 
$email .= "Message:\t" . $_POST['message'] . "\n"; 

PHP不能解析它,因爲它是現在。

0

將大括號中的變量包裹起來或將它們從雙引號中取出將有助於電子郵件的正文,但不能解決您的解析錯誤。你郵件標題似乎被搞砸了。你需要在每行的末尾加上「\ n」。將第一個$ mailheader任務更改爲:$mailheaders = "From: Stafford King\n";