Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    29

    Piccole curiosità php mail

    Ciao ragazzi! Ho trovato in rete un codice php da implementare per creare un riquadro per inviare le mail. Solo che non sto riuscendo ad impostare alcuni campi come obbligatori ed altri no, sareste così gentili da aiutarmi? Vi ringrazio infinitamente per l'aiuto!!!!

    mail.php

    Codice PHP:
    <?php
    include 'functions.php';
    if (!empty(
    $_POST)){
      
    $data['success'] = true;  $_POST  multiDimensionalArrayMap('cleanEvilTags'$_POST);  $_POST  multiDimensionalArrayMap('cleanData'$_POST);
      
    //your email adress   $emailTo ="mail"; //"mail";
      //from email adress  $emailFrom ="mail"; //"mail";
      //email subject  $emailSubject = "form";
      
    $name $_POST["name"];  $email $_POST["email"];  $comment $_POST["comment"];  $birth $_POST["birth"];  $prov $_POST["prov"];  $city $_POST["city"];  $pho $_POST["pho"];  $imp $_POST["imp"];  if($name == "")   $data['success'] = false;  if (!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i"$email))    $data['success'] = false;

     if(
    $comment == "")   $data['success'] = false;
     if(
    $data['success'] == true){
      
    $message "Nome & Cognome: $name<br>  Email: $email<br>  Messaggio: $comment <br>  Data di nascita: $birth <br>  Provincia: $prov <br>  Città: $city <br>  Telefono: $pho <br>  Importo: $imp";

      
    $headers "MIME-Version: 1.0" "\r\n";   $headers .= "Content-type:text/html; charset=utf-8" "\r\n";   $headers .= "From: <$emailFrom>" "\r\n";  mail($emailTo$emailSubject$message$headers);
      
    $data['success'] = true;  echo json_encode($data);}}
    Vorrei che tutti i campi fossero obbligatori tranne comment
    Ultima modifica di ginebria; 25-08-2015 a 12:03

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, ho modificato così
    Codice PHP:
    <?phpinclude 'functions.php';
    if (
    $_POST){
      
    $data['success'] = true;   $_POST  multiDimensionalArrayMap('cleanEvilTags'$_POST);   $_POST  multiDimensionalArrayMap('cleanData'$_POST);    $error false;  $obbligatori = array('name','email','birth');//e tutti quelli che non possono mancare  foreach ($$obbligatori as $fieldName) {      if( !$_POST[$fieldName] || trim($_POST[$fieldName])=='' ) $data['success'] = false;//al primo campo mancante qualcosa e' stato omesso  }
      //Qui metti i controlli particolari tipo email o altri formati
      
    if (!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i"$email)) $data['success'] = false;
      
    $name $_POST["name"];  $email $_POST["email"];    $birth $_POST["birth"];  $prov $_POST["prov"];  $city $_POST["city"];  $pho $_POST["pho"];  $imp $_POST["imp"];
    $comment $_POST["comment"];
     if(
    $data['success'] == true){  $message "Nome & Cognome: $name<br>  Email: $email<br>  Messaggio: $comment <br>  Data di nascita: $birth <br>  Provincia: $prov <br>  Città: $city <br>  Telefono: $pho <br>  Importo: $imp";  $headers "MIME-Version: 1.0" "\r\n";   $headers .= "Content-type:text/html; charset=utf-8" "\r\n";   $headers .= "From: <$emailFrom>" "\r\n";  mail($emailTo$emailSubject$message$headers);  $data['success'] = true;  echo json_encode($data);}
    }
    empty() usato su un array non serve, è per variabili.
    Il solo controllo di POST se esiste o meno va bene.

    In $obbligatori metti la lista di quelli che non devono mancare.
    Poi metti tutti i controlli particolari.

    PS
    non so come gestisci l'errore lato utente ma cosi' com'e' vedo che senza POST o con errore non torni nulla come json

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    29
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Ciao, ho modificato così
    Codice PHP:
    <?phpinclude 'functions.php';
    if (
    $_POST){
      
    $data['success'] = true;   $_POST  multiDimensionalArrayMap('cleanEvilTags'$_POST);   $_POST  multiDimensionalArrayMap('cleanData'$_POST);    $error false;  $obbligatori = array('name','email','birth');//e tutti quelli che non possono mancare  foreach ($$obbligatori as $fieldName) {      if( !$_POST[$fieldName] || trim($_POST[$fieldName])=='' ) $data['success'] = false;//al primo campo mancante qualcosa e' stato omesso  }
      //Qui metti i controlli particolari tipo email o altri formati
      
    if (!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i"$email)) $data['success'] = false;
      
    $name $_POST["name"];  $email $_POST["email"];    $birth $_POST["birth"];  $prov $_POST["prov"];  $city $_POST["city"];  $pho $_POST["pho"];  $imp $_POST["imp"];
    $comment $_POST["comment"];
     if(
    $data['success'] == true){  $message "Nome & Cognome: $name<br>  Email: $email<br>  Messaggio: $comment <br>  Data di nascita: $birth <br>  Provincia: $prov <br>  Città: $city <br>  Telefono: $pho <br>  Importo: $imp";  $headers "MIME-Version: 1.0" "\r\n";   $headers .= "Content-type:text/html; charset=utf-8" "\r\n";   $headers .= "From: <$emailFrom>" "\r\n";  mail($emailTo$emailSubject$message$headers);  $data['success'] = true;  echo json_encode($data);}
    }
    empty() usato su un array non serve, è per variabili.
    Il solo controllo di POST se esiste o meno va bene.

    In $obbligatori metti la lista di quelli che non devono mancare.
    Poi metti tutti i controlli particolari.

    PS
    non so come gestisci l'errore lato utente ma cosi' com'e' vedo che senza POST o con errore non torni nulla come json
    Ciao! Ti ringrazio davvero di cuore per il tuo aiuto prezioso. Purtroppo però, utilizzando il nuovo file php, non vengono più inviate le mail. Forse i codici che ho scaricato da internet prevedevano quelle cose che mi hai modificato gentilmente? Comunque c'è anche questo file che ha a che fare con le mail. C'è un modo per andare ad impostare solo "comment" come facoltativo? Grazie!!!

    altro file: functions.php
    Codice PHP:
    <?php
    // Strips nasty tags from code..function cleanEvilTags($data) {  $data = preg_replace("/javascript/i", "javascript",$data);  $data = preg_replace("/alert/i", "alert",$data);  $data = preg_replace("/about:/i", "about:",$data);  $data = preg_replace("/onmouseover/i", "onmouseover",$data);  $data = preg_replace("/onclick/i", "onclick",$data);  $data = preg_replace("/onload/i", "onload",$data);  $data = preg_replace("/onsubmit/i", "onsubmit",$data);  $data = preg_replace("/<body/i", "&lt;body",$data);  $data = preg_replace("/<html/i", "&lt;html",$data);  $data = preg_replace("/document\./i", "document.",$data);  $data = preg_replace("/<script/i", "&lt;script",$data);  return strip_tags(trim($data));}
    // Cleans output data..function cleanData($data) {  $data = str_replace(' & ', ' &amp; ', $data);  return (get_magic_quotes_gpc() ? stripslashes($data) : $data);}
    function multiDimensionalArrayMap($func,$arr) {  $newArr = array();  if (!empty($arr)) {    foreach($arr AS $key => $value) {      $newArr[$key] = (is_array($value) ? multiDimensionalArrayMap($func,$value) : $func($value));    }  }  return $newArr;}

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    29
    (messaggio inviato per errore)

  5. #5
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, non se fai copia incolla direttamente ma cosi' come ho postato, ho notato che c'e' un errore all'inizio sull'include di functions.php (<?phpincude... tutto attaccato)
    codice:
    include 'functions.php';if ($_POST) {    $data ['success'] = true;    $_POST = multiDimensionalArrayMap ( 'cleanEvilTags', $_POST );    $_POST = multiDimensionalArrayMap ( 'cleanData', $_POST );    $error = false;    $obbligatori = array (            'name',            'email',            'birth'     ); // e tutti quelli che non possono mancare foreach ($$obbligatori as $fieldName) { if( !$_POST[$fieldName] || trim($_POST[$fieldName])=='' ) $data['success'] = false;//al primo campo mancante qualcosa e' stato omesso }                                                                                                                                                                                                                         // Qui metti i controlli particolari tipo email o altri formati    if (! preg_match ( "/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email ))        $data ['success'] = false;    $name = $_POST ["name"];    $email = $_POST ["email"];    $birth = $_POST ["birth"];    $prov = $_POST ["prov"];    $city = $_POST ["city"];    $pho = $_POST ["pho"];    $imp = $_POST ["imp"];    $comment = $_POST ["comment"];    if ($data ['success'] == true) {        $message = "Nome & Cognome: $name<br>  Email: $email<br>  Messaggio: $comment <br>  Data di nascita: $birth <br>  Provincia: $prov <br>  Città: $city <br>  Telefono: $pho <br>  Importo: $imp";        $headers = "MIME-Version: 1.0" . "\r\n";        $headers .= "Content-type:text/html; charset=utf-8" . "\r\n";        $headers .= "From: <$emailFrom>" . "\r\n";        mail ( $emailTo, $emailSubject, $message, $headers );        $data ['success'] = true;        echo json_encode ( $data );    }}
    Controlla o comunque fammi sapere che errori ti da lo script. Riesce a verificare fin dove si blocca al suo interno?
    EDIT. ho tolto i tag php perchè escono nel post attaccati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.