2017-05-13 3 views
0

Dieses Kontaktformular funktioniert nicht, Bitte kann mir jemand helfen? PS: Ich verstehe nichts in PHPFalsches Argument für foreach() (Kontaktformular)

Unten Kontaktformular Skript.

PHP Warning: Invalid argument für foreach geliefert() in Htdocs/Schläger/MailHandler.php auf Leitung 54

<?php 
    $owner_email='[email protected]'; 
    //SMTP server settings 
    $host = 'smtp.site.com'; 
    $port = '25';//"587"; 
    $username = ''; 
    $password = ''; 

    $subject='A message from your site visitor '; 
    $user_email='';  
    $message_body=''; 
    $message_type='html'; 

    $max_file_size=50;//MB 
    $file_types='/(doc|docx|txt|pdf|zip|rar)$/'; 
    $error_text='something goes wrong'; 
    $error_text_filesize='File size must be less than'; 
    $error_text_filetype='Failed to upload file. This file type is not allowed. Accepted files types: doc, docx, txt, pdf, zip, rar.'; 

    // $private_recaptcha_key='6LeZwukSAAAAACmqrbLmdpvdhC68NLB1c9EA5vzU'; //localhost 


    $use_recaptcha=isset($_POST["recaptcha_challenge_field"]) and isset($_POST["recaptcha_response_field"]); 
    $use_smtp=($host=='' or $username=='' or $password==''); 
    $max_file_size*=1048576; 

    if($owner_email=='' || $owner_email=='#'){ 
     die('Attention, recipient e-mail is not set! Please define "owner_email" variable in the MailHanlder.php file.'); 
    } 

    if(preg_match('/^(127\.|192\.168\.)/',$_SERVER['REMOTE_ADDR'])){ 
     die('Attention, contact form will not work locally! Please upload your template to a live hosting server.'); 
    } 

    if($use_recaptcha){ 
     require_once('recaptchalib.php'); 
     $resp = recaptcha_check_answer ($private_recaptcha_key,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]); 
     if (!$resp->is_valid){ 
      die ('wrong captcha'); 
     } 
    } 

    if(isset($_POST['name']) and $_POST['name'] != ''){$message_body .= '<p>Visitor: ' . $_POST['name'] . '</p>' . "\n" . '<br>' . "\n"; $subject.=$_POST['name'];} 
    if(isset($_POST['email']) and $_POST['email'] != ''){$message_body .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n" . '<br>' . "\n"; $user_email=$_POST['email'];} 
    if(isset($_POST['state']) and $_POST['state'] != ''){$message_body .= '<p>State: ' . $_POST['state'] . '</p>' . "\n" . '<br>' . "\n";} 
    if(isset($_POST['phone']) and $_POST['phone'] != ''){$message_body .= '<p>Phone Number: ' . $_POST['phone'] . '</p>' . "\n" . '<br>' . "\n";} 
    if(isset($_POST['fax']) and $_POST['fax'] != ''){$message_body .= '<p>Fax Number: ' . $_POST['fax'] . '</p>' . "\n" . '<br>' . "\n";} 
    if(isset($_POST['message']) and $_POST['message'] != ''){$message_body .= '<p>Message: ' . $_POST['message'] . '</p>' . "\n";} 
    if(isset($_POST['stripHTML']) and $_POST['stripHTML']=='true'){$message_body = strip_tags($message_body);$message_type='text';} 


try { 
    include "libmail.php"; 

    foreach ($owner_email as $owner_email_item) { 
     $m= new Mail("utf-8"); 
     $m->From($user_email); 
     $m->To($owner_email_item); 
     $m->Subject($subject); 
     $m->Body($message_body,$message_type); 
     //$m->log_on(true); 

     if(isset($_FILES['attachment'])){ 
      if($_FILES['attachment']['size']>$max_file_size){ 
       $error_text=$error_text_filesize . ' ' . $max_file_size . 'bytes'; 
       die($error_text);   
      }else{   
       if(preg_match($file_types,$_FILES['attachment']['name'])){ 
        $m->Attach($_FILES['attachment']['tmp_name'],$_FILES['attachment']['name'],'','attachment'); 
       }else{ 
        $error_text=$error_text_filetype; 
        die($error_text);    
       } 
      }  
     } 
     if(!$use_smtp){ 
      $m->smtp_on($host, $username, $password, $port); 
     } 

     $m->Send(); 
    } 

    die('success'); 

}catch(Exception $mail){ 
    die($mail); 
} 
?> 
+0

Mögliche Duplikat von [Invalid argument für foreach geliefert()] (http://stackoverflow.com/questions/2630013/invalid-argument-supplied-for-foreach) – thewaywewere

Antwort

0

foreach Die auf der Leitung 54 erwartet, dass man es eine Anordnung (Array oder dergleichen Objekt) passieren aber du gibst ihm eine Schnur. Weitere Informationen finden Sie unter PHP Docs.

Auf dem zweiten Zeile ändern $owner_email='[email protected]';-$owner_email=array('[email protected]');

+0

Es funktioniert :) Vielen Dank –

+0

Fühlen Sie sich frei, dies dann als die richtige Antwort zu akzeptieren (klicken Sie auf das Häkchen unter der Abstimmung)! – MasterOdin

Verwandte Themen