2014-03-31 36 views
-2

我創建了一個聯繫表單,但它不起作用,我不知道爲什麼。我的代碼有什麼問題?這是警告消息:警告:mail()期望參數1是字符串,給定的數組。我試圖從本地主機使用測試郵件服務器工具,我嘗試了一切,但沒有任何反應。如果我沒有弄錯,警告消息說這是$ adminemail的錯誤。用的var_dump它看起來像這樣: 陣列(大小= 1) 'i_email'=>字符串 '[email protected]'(長度= 20)聯繫頁面php mail()不起作用

<?php 
if (isset($_POST['ok'])) { 
    $name   = mysql_real_escape_string(ucwords(strtolower(strip_tags(trim($_POST['name']))))); 
    $email  = mysql_real_escape_string(strtolower(strip_tags(trim($_POST['email'])))); 
    $tel  = mysql_real_escape_string(strtolower(strip_tags(trim($_POST['tel'])))); 
    $subject = mysql_real_escape_string(ucfirst(strtolower(strip_tags(trim($_POST['subject']))))); 
    $message = mysql_real_escape_string(strtolower(strip_tags(trim($_POST['message'])))); 
    $captcha = $_POST['captcha']; 

    if (strlen($name) < 5) 
     $hibak[] = "Wrong name!"; 
    if ((!filter_var($email, FILTER_VALIDATE_EMAIL)) || (strlen($email) < 6)) 
     $hibak[] = "Wrong email!"; 
    if (strlen($tel) < 10) 
     $hibak[] = "Wrong tel!"; 
    if (strlen($subject) < 5) 
     $hibak[] = "Wrong subject!"; 
    if (strlen($message) < 30) 
     $hibak[] = "Min 30 characters long"; 
    if (empty($captcha)) 
     $hibak[] = "Captcha is empty!"; 
    if ($captcha != $_SESSION['captcha']) 
     $hibak[] = "Wrong captcha!"; 
    if (isset($hibak)) { 
     $asd = "<ul>\n"; 
     foreach($hibak as $hiba) { 
      $asd.= "<li>{$hiba}</li>\n"; 
     } 
     $asd.= "</ul>\n"; 
    } 
    else { 

     $sql = "SELECT i_email FROM info WHERE i_id=1"; 
     $eredmeny=mysql_query($sql); 
     $adminemail=mysql_fetch_assoc($eredmeny); 
     $level= "Details of the sender:\n"; 
     $level.= "Name: {$name} \n"; 
     $level.= "E-mail: {$email}\n"; 
     $level.= "Tel: {$tel}\n"; 
     $level.= "Subject: {$subject}\n"; 
     $level.= "Message:{$message}\n"; 
     $fejlec="From: {$email}"."\r\n". 
"Reply-To:{$email}\n"; 

if(mail($adminemail, $subject, $level, $fejresz)){ 
    $asd = "<p><em>Mail sent!</em></p>\n";} 
    else{ 
    $asd="<p><em>Something is wrong!</em></p>\n"; 
    } 
    unset($name); 
    unset($tel); 
    unset($email); 
    unset($captcha); 
    unset($subject); 
    unset($message); 
    } 
} 
?> 


    <div class=\"jobb\"> 
      <form action=\"\" method=\"post\"> 

      <label for=name>Name:</label> 
      <br /> 
      <input type=text id=name name=name /> 
      <br /> 
      <label for=email>E-mail:</label> 
      <br /> 
      <input type=email id=email name=email /> 
      <br /> 
      <label for=tel>Tel:</label> 
      <br /> 
      <input type=tel id=tel name=tel /> 
      <br /> 
      <label for=subject>Subject:</label> 
      <br /> 
      <input type=text id=subject name=subject /> 
      <br /> 
      <label for=message>Message:</label> 
      <br /> 
      <textarea id=message name=message rows=5 cols=30></textarea> 
      <br /> 
      <label for=\"captcha\">Captcha:</label><br /> 
      ".$kod."<br /> 
      <input type=\"text\" id=\"captcha\" name=\"captcha\" required=\"required\" /></p> 
      <input type=\"submit\" id=\"ok\" name=\"ok\" value=\"Send\" />&nbsp;<input type=\"reset\" value=\"Cancel\"/></p> 

      </form> 
      </div> 
+3

它沒有太清楚。你在'mail($ adminemail,$ subject,$ level,$ fejresz)'中爲'$ adminemail'傳遞一個數組,並且郵件需要一個字符串。嘗試將'$ adminemail'更改爲'$ adminemail ['i_email']'。 – j08691

+0

對不起,我的英文不完美。我現在可以理解數組給出的部分。 – darksoul90

回答

2

當誤差表示 - 的第一參數mail()函數應該是一個不是數組的字符串。用這個代替:

mail($adminemail['i_email'], $subject, $level, $fejresz); 

這是因爲mysql_fetch_assoc()獲取一個數組(線索是在函數名稱:assoc命令是短期的關聯數組):

$adminemail=mysql_fetch_assoc($eredmeny); 

你需要得到字符串使用var_dump()時可以看到的索引排列該數組,這可能也是您的字段名稱:

$adminemail['i_email'] 
+0

非常感謝:) – darksoul90