PDA

View Full Version : [html] Help!! Ho implementato il mailto nel form con la condizione "post"


cos1950
24-03-2015, 18:42
ho provato a spedire il form di prova compilato, ma all'indirizzo email non arriva niente.
Dipende dal fatto che sul sito utilizzato dal server non c'è un servizio di posta elettronica?

8lall0
24-03-2015, 20:03
Posta il codice, se puoi.

cos1950
24-03-2015, 20:17
Posta il codice, se puoi.





<span>Puoi inviare un messaggio compilando il form sottostante:</span>
<br><br>
<form id=”contact” action="mailto:fpes2003@libero.it" method=”post”>
<div>
<label for=”nome”>nome: </label>
<div class=”input-cont”><input type=”text” id=”nome” name=”nome”></div>
<label for=”email”>email: </label>
<div class=”input-cont”><input type=”text” id=”email” name=”email”></div>
<label for=”message”>messaggio: </label>
<div class=”textarea-cont”><textarea id=”message” name=”message” rows=9 cols=20></textarea></div>
<button type=”submit” id=”go” value=”invia”>invia</button>
</div>
</form>


l'ho copiato così da un sito...

OoZic
24-03-2015, 20:37
non puo' funzionare.

per mandare una mail ti serve una parte server side (php,python,java,javascript,ruby,whatever....) che riceve la richiesta e invia la mail.

dal client (browser) non puoi mandare mail.

cos1950
24-03-2015, 20:45
non puo' funzionare.

per mandare una mail ti serve una parte server side (php,python,java,javascript,ruby,whatever....) che riceve la richiesta e invia la mail.

dal client (browser) non puoi mandare mail.

ma i form compilati sui siti, non hanno un codice html nel file client? Altrimenti a che serve dire implementa il form in html? Pensavo che dal momento che il file html risiede su un server, il server stesso intercetta la richiesta partita dal file html e spedisce la mail concatenando i text compilati nel form... ovviamente è il lato server che attua la cosa, ma tutto parte dal file html visualizzato dal browser (pensavo)

OoZic
24-03-2015, 21:39
ma i form compilati sui siti, non hanno un codice html nel file client? Altrimenti a che serve dire implementa il form in html? Pensavo che dal momento che il file html risiede su un server, il server stesso intercetta la richiesta partita dal file html e spedisce la mail concatenando i text compilati nel form... ovviamente è il lato server che attua la cosa, ma tutto parte dal file html visualizzato dal browser (pensavo)

funziona cosi, spiegato a parole molto molto semplici:
sul tuo server c'e' un file form.html raggiungibile all'indirizzo www.miosito.it/form.html

il tuo browser chiama il server e gli chiede quel file (HTTP GET form.html)

il server invia quel file al tuo browser

nell'istante che il file e' stato completamente trasferito la connessione client-server viene chiusa

il tuo browser una volta scaricato tutto il file comincia a leggerlo e fare il rendering

il rendering e' il processo che ti fa vedere a schermo il codice html interpretato, ovvero il risultato non il codice sorgente.

il tuo form ha come action "mailto:email@example.com" vuol dire che alla pressione del submit il tuo browser (quindi lato client) cerca di eseguire l'azione "mailto:"

se hai un programma di posta elettronica quell'azione viene associata all'aprire iil programma di posta con aperta una nuova email indirizzata a "email@example.com" con all'interno i campi del tuo form compilati

dopo di che, dal tuo programma di posta invii la mail.

quindi quello che NON fa quel codice html e' inviare una mail alla pressione del submit.

per inviare una mail alla pressione del submit dovresti mettere come azione una risorsa lato server (ad esempio www.miosito.it/send_email.php) che riceve i dati del tuo form inviati con il metodo POST/GET (meglio POST) e invia la mail lato server preoccupandosi di tutto.

il modo in cui avviene e' che il tuo browser effettua una chiamata HTTP (POST ad es) ed invia il contenuto del tuo form.

il server riceve questa chiamata con i dati ed esegue l'azione lato server, in questo caso di inviare la mail, ritornando poi al browser qualcosa (una conferma, un errore, un redirect...boh)

quando il browser riceve questa risposta la connessione si chiude di nuovo.



Leggi anche qui:
http://stackoverflow.com/questions/12626940/mailto-on-submit-button

cos1950
25-03-2015, 10:01
sempre gentile e puntuale.
Fatti passi avanti... la mail viene recapitata, ci sono le intestazioni dei vari campi, ma i campi sono vuoti il codice del file mail.php è il seguente:



<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>invio form mail</title>
</head>
<body>
<?php

// L'INDIRIZZO DEL DESTINATARIO DELLA MAIL
$to = "fpes2003@libero.it";

// IL SOGGETTO DELLA MAIL
$subject = "Modulo richiesta info";

// COSTRUZIONE DEL CORPO DEL MESSAGGIO

$body = "Contenuto del modulo:\n\n";
$body .= "Dati personali ;\nnome: ".trim(stripslashes($_POST["nome"])) . "\n";

$body .= "cognome: " . trim(stripslashes($_POST["cognome"])) . "\n";

$body .= "Città: " . trim(stripslashes($_POST["city"])) . "\n";

$body .= "email: " . trim(stripslashes($_POST["email"])) . "\n";


$body .= "messaggio: " . trim(stripslashes($_POST["message"])) . "\n";

// INVIO DELLA MAIL

if(@mail($to, $subject, $body)) { // SE L'INOLTRO E' ANDATO A BUON FINE...

echo "La mail è stata inoltrata con successo.";

} else {// ALTRIMENTI...

echo "Si sono verificati dei problemi nell'invio della mail.";}?>

</body>
</html>



il form è incluso in un file html che si chiama psi0.html e si trova nella stessa cartella dove si trova mail.php; i nomi delle variabili sono identici "nome", "cognome", ecc...

wingman87
25-03-2015, 10:42
Se l'html è all'incirca quello del tuo scorso post controlla le virgolette (") dei vari attributi perché non sono quelli corretti.

cos1950
25-03-2015, 11:06
Se l'html è all'incirca quello del tuo scorso post controlla le virgolette (") dei vari attributi perché non sono quelli corretti.

Si, era quello l'errore. Risolto, grazie... a wing e OoZic

cos1950
29-03-2015, 11:53
Il codice seguente immaginatelo prima della chiusura del body:



<table align=right><td>

<script type="text/javascript">
var photos = "00.jpg";
var x = 0;

</script>

<input onclick="x=(x==1) 0 : 1; photos='0'+x+'.jpg';document.getElementbyId('myBody').style='background-image:url(photos);';" type="button" value="Cambia sfondo" /></td></table>





dovrebbe switchare lo sfondo di u na pagina tra 2 possibili sfondi 00.jpg e 01.jpg

perchè non funziona :D

wingman87
29-03-2015, 13:22
Ti ho segnato in rosso le correzioni:


<table align=right><td>

<script type="text/javascript">
var photos = "00.jpg";
var x = 0;

</script>

<input onclick="x=(x==1) ? 0 : 1; photos='0'+x+'.jpg';document.getElementById('myBody').style='background-image:url(&quot;'+photos+'&quot;)';" type="button" value="Cambia sfondo" /></td></table>

cos1950
29-03-2015, 15:06
Ti ho segnato in rosso le correzioni:


<table align=right><td>

<script type="text/javascript">
var photos = "00.jpg";
var x = 0;

</script>

<input onclick="x=(x==1) ? 0 : 1; photos='0'+x+'.jpg';document.getElementById('myBody').style='background-image:url(&quot;'+photos+'&quot;)';" type="button" value="Cambia sfondo" /></td></table>



Sicuro che è tutto ok? Non funziona... toglie il background esistente, ma non mette l'altro... sembra errato il riferimento a photos.
L'operatore ternario!! Un buon conoscitore di C K&R come me non dovrebbe fare errori simili :D

wingman87
29-03-2015, 16:45
Dovrebbe andare, l'ho messo in jsfiddle per provare:
https://jsfiddle.net/frt0v2pc/
Ho aggiunto solo un alert perché non avevo le immagini.
Sei sicuro che la seconda immagine ci sia? Se clicchi di nuovo il bottone torna il vecchio sfondo?

MicheleRaponi
29-03-2015, 22:18
Prova: https://jsfiddle.net/mu8L6yrL/

cos1950
30-03-2015, 07:47
Dovrebbe andare, l'ho messo in jsfiddle per provare:
https://jsfiddle.net/frt0v2pc/
Ho aggiunto solo un alert perché non avevo le immagini.
Sei sicuro che la seconda immagine ci sia? Se clicchi di nuovo il bottone torna il vecchio sfondo?

Prova: https://jsfiddle.net/mu8L6yrL/

Ha funzionato, grazie... però mi chiedo, dal momento che ancora non mi è chiara la logica generale, se devo implementare diverse proprietà dell'elemento (in questo caso il body) come si fa?
Cioè qui era solo 1 proprietà, il background-image, ma se assieme voglio cambiare background-color e background-size?

MicheleRaponi
30-03-2015, 08:03
Qui era solo 1 proprietà, il background-image, ma se assieme voglio cambiare background-color e background-size?

La proprietà background è una scorciatoia per impostare in un'unica riga i valori di altre proprietà inerenti allo sfondo. Puoi impostare una o più tra le seguenti proprietà: background-attachment, background-color, background-image, background-position, background-repeat..

Qui c'è la documentazione: https://developer.mozilla.org/en-US/docs/Web/CSS/background

Il modo corretto per settare i valori di diverse proprietà tramite js (colore, immagine di sfondo, posizione e ripetizione) e col metodo abbreviato puoi vederlo qui: http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_style_background

OoZic
30-03-2015, 19:42
il modo corretto e' usare il css con classi e con javascript aggiungere o rimuovere queste classi.

MicheleRaponi
30-03-2015, 20:05
il modo corretto e' usare il css con classi e con javascript aggiungere o rimuovere queste classi.

Senz'altro, ma ho risposto alla precisa domanda di cos1950:

Cioè qui era solo 1 proprietà, il background-image, ma se assieme voglio cambiare background-color e background-size?

relativa al metodo da lui utilizzato, l'oggetto style e le varie proprietà.

;)