Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 36

Discussione: form invio email con multi scelta

  1. #1
    Guest

    Predefinito form invio email con multi scelta

    Salve a tutti prima di tutto mi scuso per il disturbo e se la richiesta e impossibile mi servirebbe una mano riguardo alla modifica di questo form:
    il primo codice e un form con multi scelta di categorie,e dovrei assegnare una email ad ogni categoria ma non saprei come fare il form e stato creato online visto che non sono un esperto per il momento solo solo 3 categorie come esempio ma ne dovrei inserire molte altre

    il secondo codice e un localizzatore che funziona abbastanza bene unica cosa e che non riesco a centrarlo e renderlo piu piccolo diciamo giusto sotto il primo form "allego sito di test" tanteinfo.altervista.org/

    in piu volevo chiedere se la cosa era possibile visto che questo form dovrei usarlo come sito mobile per far si che una persona mi invia foto e commenti vorrei sapere se possibile allegare nei commenti oppure in un altro modo anche la localizzazione del posto che trova una specie di tasto oppure funzione automatica cioè quando ricevo la mail vorrei ricevere anche dalla persona il posto in cui si trova

    ovviamente la persona conosce bene quindi niente problemi sulla privacy

    scusatemi ancora per le richieste assurde e grazie a tutti

    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Esempio form</title>
    <link rel="stylesheet" type="text/css" href="view.css" media="all">
    <script type="text/javascript" src="view.js"></script>
    
    </head>
    <body id="main_body" >
    <div id="form_container">
    	
      <h1><a>Esempio form</a></h1>
    		<form id="form_724349" class="appnitro" enctype="multipart/form-data" method="post" action="">
    					<div class="form_description">
    			<h2>Esempio form</h2>
    			<p></p>
    		</div>						
    			<ul >
    			
    					<li id="li_4" >
    		<label class="description" for="element_4">Categoria </label>
    		<div>
    		<select class="element select small" id="element_4" name="element_4"> 
    			<option value="" selected="selected"></option>
    <option value="pizzeria@miosito">Pizzeria</option>
    <option value="2" >Bar</option>
    <option value="3" >Ristorante</option>
    
    		</select>
    		</div> 
    		</li>		<li id="li_1" >
    		<label class="description" for="element_1">Titolo </label>
    		<div>
    			<input id="element_1" name="element_1" class="element text medium" type="text" maxlength="255" value=""/> 
    		</div> 
    		</li>		<li id="li_2" >
    		<label class="description" for="element_2">Commento </label>
    		<div>
    			<textarea id="element_2" name="element_2" class="element textarea small"></textarea> 
    		</div> 
    		</li>		<li id="li_3" >
    		<label class="description" for="element_3">Carica Foto/Video </label>
    		<div>
    			<input id="element_3" name="element_3" class="element file" type="file"/> 
    		</div>  
    		</li>
    			
    					<li class="buttons">
    			    <input type="hidden" name="form_id" value="724349" />
    			    
    				<input id="saveForm" class="button_text" type="submit" name="Invio" value="Invio" />
    		</li>
    			</ul>
    		</form>
    	</div>
    </body>
    </html>
    
    <!DOCTYPE html>
    	<html>
    	<head>
    	<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    	<style type="text/css">
    	html { height: 50% }
    	body { height: 100%; margin: 0px; padding: 0px }
    	#map_canvas { height: 50% }
    	</style>
    	<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    
    	<script type="text/javascript">
    	
    	function callback(pos)
    	{
    	var latitudine = pos.coords.latitude;
    	var longitudine = pos.coords.longitude;
    	var precisione = pos.coords.accuracy;
    	initialize_map(latitudine,longitudine, precisione);
    	
    	}
    	
    	function notfound() {
    	
    	document.getElementById("map_canvas").innerHTML = 'Spiacente, non riesco a determinare la tua posizione :(';
    	}
    	
    	function initialize()
    	{
    	
    	
    	if (navigator.geolocation) {
    	
    	var options = {
    	timeout: 10000,
    	enableHighAccuracy: true
    	}
    	
    	navigator.geolocation.getCurrentPosition(callback, notfound, options);
    	} else {
    	
    	alert("Spiacente, il tuo browser non supporta la GeoLocation");
    	
    	}
    	
    	}
    	
    	function initialize_map(latitudine,longitudine,precisione) {
    	var latlng = new google.maps.LatLng(latitudine,longitudine);
    	var titlemarker = "Tu sei qui! <br/>...piu' o meno, con circa " + precisione + "m di scarto :)";
    	var myOptions = {
    	zoom: 17,
    	center: latlng,
    	mapTypeId: google.maps.MapTypeId.ROADMAP
    	};
    	var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    	
    	var infowindow = new google.maps.InfoWindow({
    	content: titlemarker
    	});
    	
    	
    	var marker = new google.maps.Marker({
    	map: map,
    	position: latlng,
    	title: "CIAOO"
    	});
    	
    	google.maps.event.addListener(marker, 'click', function() {
    	infowindow.open(map,marker);
    	});
    	
    	}
    	
    	</script>
    	</head>
    	<body onload="initialize()">
    	<div id="map_canvas" style="width:50%; height:50%"></div>
    	</body>
    	</html>
    Ps: allego anche il resto dei file https://www.dropbox.com/s/ptg2eu4w8ippc4j/form.rar

  2. #2
    Guest

    Predefinito

    Salve a tutti,volevo comunicare che il form dopo lunghe ricerche ci sono riuscito,unico problema che mi resta e la possibilità gi allegare un file al form,spero che un esperto mi posso aiutare,eventualmente posto il form nuovo,grazie

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Ma la seconda pagina a che serve?

    Comunque, per inviare un file guarda qui.

    Ciao!

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Ma la seconda pagina a che serve?

    Comunque, per inviare un file guarda qui.

    Ciao!
    ciao no la seconda pagina non serve piu,era un localizzatore gps da inserire nel form ma poi ho risolto diversamente,adesso mi resta solo come inserire un file nel form,grazie guardo subito

  5. #5
    Guest

    Predefinito

    scusami visto che non sono un esperto mi potresti indicare come aggiungere nel html/php attualmente funzionanti
    il form mi e stato creato da un amica ma si e bloccata riguardo l'inserimento di un file
    grazie

    Codice HTML:
    <!DOCTYPE html>
    <html lang="it">
    <html>
    <head>
    <div id="form_container">
    <link rel="stylesheet" type="text/css" href="view.css" media="all">
    <script type="text/javascript" src="view.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
      <title></title>
      <meta name="description" content="">
      <meta name="keywords" content="">
      <meta name="author" content="RestareInformati">
      <meta name="generator" content="Notepad">
    </head>
    <body>
    <form id="forminvio" method="post" action="inviomodulo.php">
      <fieldset>
    <label>Categoria:
    <select class="element select small" id="categoria" name="categoria" required>
    <option value="pizzeria"> pizzeria</option>
                     <option value="bar"> bar</option>
                     <option value="ristorante"> ristorante</option>
    </select>
       </label>
       <br><br>
    <label>Titolo:
    <input type="text" class="text"  name="titolo" size="40" maxlength="255" id="titolo" required>
    </label>
    <br><br>
    <label>Commento:
    <textarea name="commento" cols="30" rows="5" id="textarea" required></textarea>
    </label>
    <br><br>
    <label>Carica foto/video:
    <input type="file" name="allegato" id="allegato">
    </label>
    <br><br>
    <input type="submit" value="Invia"> <input type="reset" value="Reset">
    <br><br>
    </fieldset>
    </form>
    </body>
    </html>
    Codice PHP:
    <?php
    $messaggio
    ="Messaggio dal sito
    \n Dati del form:
    \n categoria:
    $_POST[categoria]
    \n titolo:
    $_POST[titolo]
    \n commento:
    $_POST[textarea]
    \n ---fine messaggio--"
    ;
    $headers="From:nomesito";
    if (
    $_POST[categoria] == 'pizzeria'){
    if(@
    mail("info@nomesito", "Invio modulo dal sito", $messaggio, $headers)){
    header("Location: confermamodulo.html");
    }
    else {
    echo
    "Errore nell'invio dell'email!";
    header("Location: errore.html");
    }
    }
    elseif (
    $_POST[categoria] == 'bar'){
    if(@
    mail("bar@tuodominio.it", "Invio modulo dal sito", $messaggio, $headers)){
    header("Location: confermamodulo.html");
    }
    else {
    echo
    "Errore nell'invio dell'email!";
    header("Location: errore.html");
    }
    }
    elseif (
    $_POST[categoria] == 'ristorante'){
    if(@
    mail("ristorante@tuodominio.it", "Invio modulo dal sito", $messaggio, $headers)){
    header("Location: confermamodulo.html");
    }
    else {
    echo
    "Errore nell'invio dell'email!";
    header("Location: errore.html");
    }
    }
    else {
    header("Location: erroremail.html");
    }
    ?>

  6. #6
    Guest

    Predefinito

    riguardo html tutto ok il problema e che non capisco come modificare questo
    [sostituire _UPLOADDIR_ con la directory dove si intende caricare il file (per altervista /memri/<tuonick>/<directory nel tuo server> o /membri2i/<tuonick>/<directory nel tuo server>)
    dovrei caricare il form su un server altervista e uno diverso,la cosa e sempre possibile? potresti indicarmi come? grazie
    in piu volevo sapere se potevi indicarmi a che posizione devo inserire questo
    Codice PHP:
    <?
    $uploaddir
    = '_UPLOADDIR_';
    $FILE_MAX_SIZE = '_DIM_';
    if (
    $_FILES['userfile']['size'] < $MAX_FILE_SIZE) {
    if (
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
    print
    "Il file è valido, e inviato con successo.";
    } else {
    print
    "Possibile attacco tramite file upload!";
    }
    } else {
    print
    "Dimensioni del file eccessive, il file non può superare i ".$MAX_FILE_SIZE." bytes.";
    }
    ?>
    Ultima modifica di tanteinfo : 07-11-2013 alle ore 00.22.35

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Quel sorgente devi inserirlo nella pagina "inviomodulo.php".
    invece di _UPLOADDIR_, devi semplicemente indicare la cartella dove vuoi che i file vengano caricati. Ad esempio, se vuoi che i file vengano caricati affianco al file "inviomodulo.php", se non ricordo male la devi settare così:
    Codice PHP:
    $uploaddir = './';
    Se invece la vuoi mettere, partendo sempre dalla posizione dello script "inviomodulo.php", dentro la cartella "nome_cartella", allora penso vada così:
    Codice PHP:
    $uploaddir = './nome_cartella/';

    dovrei caricare il form su un server altervista e uno diverso,la cosa e sempre possibile?
    Dipende dalle impostazioni del server. Normalmente penso che lo script vada benissimo comunque.

    Comunque, importantissimo, dopo aver caricato un file assicurati che non contenga codice malevolo, altrimenti chiunque potrebbe far qualsiasi cosa sul tuo sito. Penso che la cosa migliore per star tranquilli sia modificare i permessi del file caricato (con mkdir()) eliminando i permessi del file di essere "eseguito".

    Ricordati anche di modificare "_DIM_".

    Infine, occhio che al form dovrebbe servire la proprietà
    Codice:
    enctype="multipart/form-data"

    Ciao!
    Ultima modifica di alemoppo : 08-11-2013 alle ore 16.17.39

  8. #8
    Guest

    Predefinito

    Ciao scusami ancora per il disturbo ma come ti dicevo nn sono un grande esperto.


    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Quel sorgente devi inserirlo nella pagina "inviomodulo.php".

    potresti indicarmi a che altezza della pagina? perche se copio il tutto il programma mi rileva un paio di errori.



    invece di _UPLOADDIR_, devi semplicemente indicare la cartella dove vuoi che i file vengano caricati. Ad esempio, se vuoi che i file vengano caricati affianco al file "inviomodulo.php", se non ricordo male la devi settare così:
    Codice PHP:
    $uploaddir = './';
    Se invece la vuoi mettere, partendo sempre dalla posizione dello script "inviomodulo.php", dentro la cartella "nome_cartella", allora penso vada così:
    Codice PHP:
    $uploaddir = './nome_cartella/';
    Dipende dalle impostazioni del server. Normalmente penso che lo script vada benissimo comunque.

    in che senso affianco oppure nella cartella? dopo aver ricevuto la mail con allegato devo cancellare i dati dal server per non far riempire lo spazio?


    Comunque, importantissimo, dopo aver caricato un file assicurati che non contenga codice malevolo, altrimenti chiunque potrebbe far qualsiasi cosa sul tuo sito. Penso che la cosa migliore per star tranquilli sia modificare i permessi del file caricato (con mkdir()) eliminando i permessi del file di essere "eseguito".

    potresti gentilmente essere piu chiaro su come fare?

    Ricordati anche di modificare "_DIM_".

    c'è un limite di mb?

    Infine, occhio che al form dovrebbe servire la proprietà
    Codice:
    enctype="multipart/form-data"
    devo sostituire qui?

    [/HTML]
    </head>
    <body>
    <form id="forminvio" method="post" action="inviomodulo.php">
    <fieldset>
    [/HTML]

    Ciao!
    Scusami ancora per il disturbo

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Ah, ma allora vuoi che ti arrivi una email con allegato il file caricato dall'utente?
    In questo caso, la questione dell'mkdir non dovrebbe essere un problema, perché in effetti ti conviene, dopo aver inviato l'email a te stesso con l'allegato, eliminare il file. Quindi non dovrebbe essere un problema.

    potresti indicarmi a che altezza della pagina? perche se copio il tutto il programma mi rileva un paio di errori.
    Prima di inviare l'email. Se ti da qualche problema scrivi qui il codice per intero e vediamo dov'é l'errore.

    n che senso affianco oppure nella cartella? dopo aver ricevuto la mail con allegato devo cancellare i dati dal server per non far riempire lo spazio?
    Per "affianco", intendo nella stessa cartella in cui è contenuto lo script php. (Da questa frase ho capito ciò che vuoi fare, quindi sì, se i file non ti servono sul sito ti conviene eliminarli, con unlink().)


    potresti gentilmente essere piu chiaro su come fare?
    Più o meno, così:
    Codice PHP:
    mkdir($uploaddir . $_FILES['userfile']['name'], 0744);
    Comunque, per quello che devi fare è meglio eliminare il file per non tenere inutili file nel tuo spazio.


    c'è un limite di mb?
    Nel pannello di controllo puoi scegliere il limite.

    devo sostituire qui?
    Più che sostituire, direi aggiungere .

    Se vuoi inviare un allegato via email, nel modo in cui stai inviando le email non c'é nessun allegato. Quindi dovresti dar un'occhiata su come fare.

    p.s: se il tuo scopo è fare questo per l'uso e non per fini didattici, puoi prendere in considerazione l' "HDD online". Non è proprio quello che stai facendo, ma è simile e ti risparmierebbe tanto tempo.

    Ciao!
    Ultima modifica di alemoppo : 09-11-2013 alle ore 21.58.36

  10. #10
    Guest

    Predefinito

    ciao buona domenica,grazie per la tua gentilezza e disponibilità,guarda ti spiego brevemente quello che vorrei fare,il form deve funzionare cosi:
    Categoria:
    Titolo:
    Commento:
    allega foto:
    invio

    l'utente sceglie la categoria scrive un titolo inserisce un commento allega una foto e la invia
    se per esempio l'utente sceglie la categoria "bar" la mail compresa di allegato mi arriva a bar@miosito.it se invece sceglie "pizzeria" la mail mi arriva a pizzeria@miosito.it ecc ecc quindi diciamo il fatto che le foto devono rimanere anche nel mio spazio server la vedo inutile,forse sarà una cretinata completare il form ma come ti dicevo la mia conoscenza e zero,se la cosa e molto complessa non ti voglio dare ulteriori fastidi,grazie ancora e buona domenica

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Beh, "completare" il form è fattibile, ma purtroppo non ho tempo di farlo. Ti posso però aiutare.
    Come dice la documentazione, se vuoi inserire in una stringa tra doppi apici un array, devi inserirlo tra parentesi graffe.
    Inoltre, cliccando sul primo risultato del link che ti ho dato sopra, avresti trovato questa pagina.

    Adattabdolo un attimo, ho scritto questa bozza:
    (non ho verificato che funzioni)

    Codice PHP:
    <?php
    if(!isset($_POST['categoria'])) //verifico che il form sia stato inviato, controllando ad esempio se c'é $_POST['categoria']
    {
    header("Location: errore.html");
    exit();
    }

    $email['pizzeria'] = 'info@nomesito';
    $email['bar'] = 'bar@tuodominio.it';
    $email['ristorante']= 'ristorante@tuodominio.it';

    $destinatario = $email[$_POST['categoria']];
    if(!
    filter_var($destinatario, FILTER_VALIDATE_EMAIL)) //verifico il destinatario: il visitatore potrebbe inventare una nuova categoria non gestita dallo script
    {
    header("Location: errore.html");
    exit();
    }

    $mittente = 'tanteinfo@altervista.org';
    $oggetto = 'Invio modulo dal sito';
    $messaggio="Messaggio dal sito
    \n Dati del form:
    \n categoria:
    {$_POST['categoria']}
    \n titolo:
    {$_POST['titolo']}
    \n commento:
    {$_POST['textarea']}
    \n ---fine messaggio--"
    ;


    // Valorizzo le variabili relative all'allegato
    $allegato = $_FILES['userfile']['tmp_name'];
    $allegato_type = $_FILES['userfile']['type'];
    $allegato_name = $_FILES['userfile']['name'];

    // Creo 2 variabili che riempirò più avanti...
    $headers = "From: " . $mittente;
    $msg = "";

    // Verifico se il file è stato caricato correttamente via HTTP
    // In caso affermativo proseguo nel lavoro...
    if (is_uploaded_file($allegato))
    {
    // Apro e leggo il file allegato
    $file = fopen($allegato,'rb');
    $data = fread($file, filesize($allegato));
    fclose($file);

    // Adatto il file al formato MIME base64 usando base64_encode
    $data = chunk_split(base64_encode($data));

    // Genero il "separatore"
    // Serve per dividere, appunto, le varie parti del messaggio.
    // Nel nostro caso separerà la parte testuale dall'allegato
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    // Aggiungo le intestazioni necessarie per l'allegato
    $headers .= "\nMIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed;\n";
    $headers .= " boundary=\"{$mime_boundary}\"";

    // Definisco il tipo di messaggio (MIME/multi-part)
    $msg .= "This is a multi-part message in MIME format.\n\n";

    // Metto il separatore
    $msg .= "--{$mime_boundary}\n";

    // Questa è la parte "testuale" del messaggio
    $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= $messaggio . "\n\n";

    // Metto il separatore
    $msg .= "--{$mime_boundary}\n";

    // Aggiungo l'allegato al messaggio
    $msg .= "Content-Disposition: attachment;\n";
    $msg .= " filename=\"{$allegato_name}\"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= $data . "\n\n";

    // chiudo con il separatore
    $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
    header("Location: errore.html");
    exit();
    }

    // Invio la mail
    if (mail($destinatario, $oggetto, $msg, $headers))
    {
    header("Location: confermamodulo.html");
    }else{
    header("Location: errore.html");
    }
    ?>
    Ricordati di inserire
    Codice:
    enctype="multipart/form-data"
    nel form!

    Ciao!
    Ultima modifica di alemoppo : 10-11-2013 alle ore 14.07.52

  12. #12
    Guest

    Predefinito

    grazie ancora,allora al tuo php ho aggiunto solo una mail

    Codice PHP:
    $email['pizzeria'] = 'pizzeria@miodomninio';
    $email['bar'] = 'bar@tuodominio.it';
    $email['ristorante']= 'ristorante@tuodominio.it';
    e nel html aggiunto solo questo

    Codice HTML:
    <form id="forminvio" method="post" enctype="multipart/form-data" action="inviomodulo.php">
      <img alt="" src="banner%20form.png" width="300" height="63"><fieldset>
    html salvato come index.html e il tuo file php salvato come inviomodulo.php il tutto caricato nella root principale

    mi restituisce questo errore

    Fatal error: Call to undefined function: filter_var() in /membri/tanteinfo/inviomodulo.php on line 13

    grazie e scusami ancora

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Hai php 5.2 (o 5.3) attivato? (lo si gestisce dal pannello di controllo).

    Ciao!

  14. #14
    Guest

    Predefinito

    si adesso tutto ok risolto il problema della versione ma adesso mi restituisce "errore"

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Cerca di capire di quale errore si tratta... magari cambia da "errore.html" a "errore1.html" oppure messaggi più esplicativi.. Oppure a scopo di debug elimina i vari redirect e mettici dei
    Codice PHP:
    die('errore x...');
    ..Insomma, cerca di capire dove sta l'errore.

    Ciao!
    Ultima modifica di alemoppo : 10-11-2013 alle ore 19.04.11 Motivo: aggiunto ;

  16. #16
    Guest

    Predefinito

    ci provo anche se x me la vedo difficile :( grazie sempre della disponibilità

  17. #17
    Guest

    Predefinito

    ma se questo codice comunicato da te

    Codice HTML:
     enctype="multipart/form-data"
    non va al posto giusto può non funzionare? può essere questo il problema? potresti gentilmente dirmi dove aggiungere?

    questo e quello originale

    Codice HTML:
    <form id="forminvio" method="post" action="inviomodulo.php">
    Ultima modifica di alemoppo : 10-11-2013 alle ore 19.02.53 Motivo: corretti tag [HTML]

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    come avevi fatto te, ovvero:
    Codice HTML:
    <form id="forminvio" method="post" enctype="multipart/form-data" action="inviomodulo.php">
    Va benissimo.

    ci provo anche se x me la vedo difficile
    Per imparare devi metterci mano al codice.
    Comunque, ovviamente dimmi se hai problemi...

    Ciao!

  19. #19
    Guest

    Predefinito

    ti ringrazio sei di una gentilezza unica e disponibile,riguardo al tuo codice php io ho aggiunto solo la mia email di prova e basta,dovevo configurare altro?

  20. #20
    Guest

    Predefinito

    ti riallego i mio form per un occhio al volo

    Codice HTML:
    <!DOCTYPE html>
    <html lang="it">
    <html>
    <head>
    <div id="form_container">
    <link rel="stylesheet" type="text/css" href="view.css" media="all">
    <script type="text/javascript" src="view.js"></script>
     <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
      <title></title>
      <meta name="description" content="">
      <meta name="keywords" content="">
      <meta name="author" content="RestareInformati">
      <meta name="generator" content="Notepad">
    </head>
    <body>
    <form id="forminvio" method="post" enctype="multipart/form-data" action="inviomodulo.php">
      <img alt="" src="banner%20form.png" width="300" height="63"><fieldset>
    <label>Categoria:&nbsp;
       </label>
       <br>
    <label>
    <select class="element select small" id="categoria" name="categoria" required>
    <option value="pizzeria"> pizzeria</option>
             <option value="bar"> bar</option>
             <option value="ristorante"> ristorante</option>
    </select></label><br>
    
    <label>Titolo:
    <input type="text" class="text"  name="titolo" size="40" maxlength="255" id="titolo" required>
    </label>
    <br><br>
    
    <label>Commento:
    <textarea name="commento" cols="30" rows="5" id="textarea" required></textarea>
    </label>
    <br><br>
    
    <label>Carica foto/video:
    <input type="file" name="allegato" id="allegato">
    </label>
    <br><br>
    
    <input type="submit" value="Invia"> <input type="reset" value="Reset">
    <br><br>
    </fieldset>
    </form>
    </body>
    </html>

    tuo php

    Codice PHP:
    <?php
    if(!isset($_POST['categoria'])) //verifico che il form sia stato inviato, controllando ad esempio se c'é $_POST['categoria']
    {
    header("Location: errore.html");
    exit();
    }

    $email['pizzeria'] = 'pizzeria@tuodominio.it';
    $email['bar'] = 'bar@tuodominio.it';
    $email['ristorante']= 'ristorante@tuodominio.it';

    $destinatario = $email[$_POST['categoria']];
    if(!
    filter_var($destinatario, FILTER_VALIDATE_EMAIL)) //verifico il destinatario: il visitatore potrebbe inventare una nuova categoria non gestita dallo script
    {
    header("Location: errore.html");
    exit();
    }

    $mittente = 'tanteinfo@altervista.org';
    $oggetto = 'Invio modulo dal sito';
    $messaggio="Messaggio dal sito
    \n Dati del form:
    \n categoria:
    {$_POST['categoria']}
    \n titolo:
    {$_POST['titolo']}
    \n commento:
    {$_POST['textarea']}
    \n ---fine messaggio--"
    ;


    // Valorizzo le variabili relative all'allegato
    $allegato = $_FILES['userfile']['tmp_name'];
    $allegato_type = $_FILES['userfile']['type'];
    $allegato_name = $_FILES['userfile']['name'];

    // Creo 2 variabili che riempirò più avanti...
    $headers = "From: " . $mittente;
    $msg = "";

    // Verifico se il file è stato caricato correttamente via HTTP
    // In caso affermativo proseguo nel lavoro...
    if (is_uploaded_file($allegato))
    {
    // Apro e leggo il file allegato
    $file = fopen($allegato,'rb');
    $data = fread($file, filesize($allegato));
    fclose($file);

    // Adatto il file al formato MIME base64 usando base64_encode
    $data = chunk_split(base64_encode($data));

    // Genero il "separatore"
    // Serve per dividere, appunto, le varie parti del messaggio.
    // Nel nostro caso separerà la parte testuale dall'allegato
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    // Aggiungo le intestazioni necessarie per l'allegato
    $headers .= "\nMIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed;\n";
    $headers .= " boundary=\"{$mime_boundary}\"";

    // Definisco il tipo di messaggio (MIME/multi-part)
    $msg .= "This is a multi-part message in MIME format.\n\n";

    // Metto il separatore
    $msg .= "--{$mime_boundary}\n";

    // Questa è la parte "testuale" del messaggio
    $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= $messaggio . "\n\n";

    // Metto il separatore
    $msg .= "--{$mime_boundary}\n";

    // Aggiungo l'allegato al messaggio
    $msg .= "Content-Disposition: attachment;\n";
    $msg .= " filename=\"{$allegato_name}\"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= $data . "\n\n";

    // chiudo con il separatore
    $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
    header("Location: errore.html");
    exit();
    }

    // Invio la mail
    if (mail($destinatario, $oggetto, $msg, $headers))
    {
    header("Location: confermamodulo.html");
    }else{
    header("Location: errore.html");
    }
    ?>
    Ultima modifica di tanteinfo : 10-11-2013 alle ore 20.14.13

  21. #21
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Ad occhio non noto particolari errori. Per vedere cosa non va è necessario capire in che punto si verifica l'errore: è uno dei tanti:
    Codice PHP:
    header("Location: errore.html");
    Come ti ho detto prima, devi "personalizzarli" tutti, del tipo:
    Codice PHP:
    header("Location: errore.html?err=1");
    header("Location: errore.html?err=2");
    /*...etc
    o anche: */
    header("Location: errore.html?err=no_categoria");
    header("Location: errore.html?err=email_invalida");
    //.....etc
    EDIT:
    riguardo al tuo codice php io ho aggiunto solo la mia email di prova e basta,dovevo configurare altro?
    No, devi solo verificare che le email siano corrette per vedere se ti arrivano correttamente. Ma anche se fossero sbagliate, non dovresti ricevere alcun errore php.

    Ciao!
    Ultima modifica di alemoppo : 10-11-2013 alle ore 19.31.13

  22. #22
    Guest

    Predefinito

    allora modificando tutti gli header l'errore e al numero 3 come indicato se può essere utile

    Codice PHP:
    // chiudo con il separatore
    $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
    header("Location: errore.html?err=3");
    exit();
    }

    // Invio la mail
    if (mail($destinatario, $oggetto, $msg, $headers))
    {
    header("Location: confermamodulo.html");
    }else{
    header("Location: errore.html?err=4");
    }
    ?>

  23. #23
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Sì... nel frattempo ho provato anche io, e ho visto l'errore :P

    In pratica, devi sostituire queste tre righe:
    Codice PHP:
    $allegato = $_FILES['userfile']['tmp_name'];
    $allegato_type = $_FILES['userfile']['type'];
    $allegato_name = $_FILES['userfile']['name'];
    con:
    Codice PHP:
    $allegato = $_FILES['allegato']['tmp_name'];
    $allegato_type = $_FILES['allegato']['type'];
    $allegato_name = $_FILES['allegato']['name'];
    Poi, ho notato degli errorini nell'html (ma nulla che pregiudichi il funzionamento):

    • Hai aperto 2 volte il tag <html>:
      Codice HTML:
      <html lang="it">
      <html>
    • Hai messo un div dentro l'head: in quel posto non possono starci dei div!
      Codice HTML:
      <head>
      <div id="form_container">


    Comunque ho provato il tutto e funziona correttamente

    EDIT:

    Ah, sostituisci anche questa riga:
    Codice PHP:
    \n commento: {$_POST['textarea']}
    Con questa:
    Codice PHP:
    \n commento: {$_POST['commento']}
    Ciao!
    Ultima modifica di alemoppo : 10-11-2013 alle ore 20.02.35

  24. #24
    Guest

    Predefinito

    niente anche sostituendo mi da errore :( sono sfortunato

    riguardo questo

    Codice HTML:
    <html lang="it">
    <html>
    cosa devo eliminare?

  25. #25
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Devi eliminarne uno dei due.
    Come non ti funziona? A me funziona correttamente!
    Riscrivimi i codici... (modificando le email per evitarti spam)

    Ciao!

  26. #26
    Guest

    Predefinito

    se puo essere utile adesso l'errore e qui al 2

    Codice PHP:
    $destinatario = $email[$_POST['categoria']];
    if(!
    filter_var($destinatario, FILTER_VALIDATE_EMAIL)) //verifico il destinatario: il visitatore potrebbe inventare una nuova categoria non gestita dallo script
    {
    header("Location: errore.html?err=2");
    exit();

  27. #27
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Allora mi viene da pensare che le email che hai inserito non siano corrette....
    Le email devi inserirle qui:
    Codice PHP:
    $email['pizzeria'] = 'pizzeria@tuodominio.it';
    $email['bar'] = 'bar@tuodominio.it';
    $email['ristorante']= 'ristorante@tuodominio.it';
    Ciao!

  28. #28
    Guest

    Predefinito

    funzionaaaaaaaaaa sono senza parola grazie

    riguarto l'aggiunta di altre email per le categorie le devo inserire qui giusto?

    Codice PHP:
    $email['pizzeria'] = 'info.tutto@email.it';
    $email['bar'] = 'bar@tuodominio.it';
    $email['ristorante']= 'ristorante@tuodominio.it';
    e ovviamente qui nel html

    Codice HTML:
    <select class="element select small" id="categoria" name="categoria" required>
    <option value="pizzeria"> pizzeria</option>
             <option value="bar"> bar</option>
             <option value="ristorante"> ristorante</option>
    </select></label><br>

  29. #29
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

  30. #30
    Guest

    Predefinito

    il tuo php quindi mi fa arrivare l'allegato direttamente alla mail senza che si deposita nel mio spazio web giusto?
    limite mb del file che si puo allegare? riceve tutti i tipi di file giusto?

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •