2017-05-13 1 views
0

Ce formulaire ne fonctionne pas, Svp, Quelqu'un pourrait m'aider? PS: Je ne comprends rien à phpArgument invalide fourni pour foreach() (Formulaire de contact)

Ci-dessous le script du formulaire de contact.

PHP Warning: Invalid argument supplied for foreach() dans htdocs/chauve-souris/MailHandler.php sur la ligne 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

double possible de [Invalid argument supplied for foreach()] (http://stackoverflow.com/questions/2630013/invalid-argument-supplied-for-foreach – thewaywewere

Répondre

0

La foreach en ligne 54 attend que vous passez un tableau (ou tableau comme objet) mais vous passez une chaîne. Voir le PHP Docs pour plus d'informations.

Sur votre deuxième ligne, changer $owner_email='[email protected]';-$owner_email=array('[email protected]');

+0

Ça marche :) Merci beaucoup –

+0

N'hésitez pas à accepter cela comme la bonne réponse (cliquez sur la coche sous le vote)! – MasterOdin