Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 08-02-10, 15:11   #1 (permalink)
User
 
Data di registrazione: Feb 2010
Messaggi: 21
Problema form php...ricevo una mail vuota

Avrei bisogno di aiuto se possibile....ho creato un form sul mio sito con relativa pagina .php per l'invio,fino qui tutto ok,la mail viene spedita ma una volta arrivata e aperta i campi richiesti sono tutti vuoti,ho gia provato una decina di volte a compilare tutti i campi ma il risultato e' sempre uguale...una mail con tutti i campi vuoti...cosa sbaglio?
gf233 non in linea   Rispondi citando
Vecchio 08-02-10, 15:33   #2 (permalink)
User
 
L'avatar di miopc
 
Data di registrazione: Feb 2010
Messaggi: 13
Eh, se non posti il tuo script non ci è possibile trovare l'errore..
miopc non in linea   Rispondi citando
Vecchio 08-02-10, 16:02   #3 (permalink)
User
 
Data di registrazione: Feb 2010
Messaggi: 21
Scusami e' vero...

codice php

<?php
/* INVIO SEMPLICE */
$destinatario = "miamail";
$oggetto = "Email inviata dal sito";
$messaggio = "Citta: $Citta2\n";
$messaggio .= "Mare: $Mare\n";
$messaggio .= "Montagna: $Montagna\n";
$messaggio .= "Lago: $Lago\n";
$messaggio .= "Citta: $Citta\n";
$messaggio .= "Provincia: $Provincia\n";
$messaggio .= "Nome H: $NomeH\n";
$messaggio .= "Categoria: $Categoria\n";
$messaggio .= "Periodo offerta: $Periodo\n";
$messaggio .= "Da euro: $Da\n";
$messaggio .= "Sito internet: $Sito\n";
$messaggio .= "Email: $Email\n";
$messaggio .= "Nome Responsabile: $Nome\n";

$da = $email;
$intestazioni = "From: $da";
mail($destinatario,$oggetto,$messaggio,$intestazio ni);
?>



questo invece il form html

<form action="invia.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<fieldset>
<legend>Info</legend>
<h3>Compila tutti i dati </h3>
<p>Posizione
---&gt;
<input type="radio" name="radio" id="Citta2" value="Citta2" tabindex="10" />
<label for="Citta2">Città </label>
<input type="radio" name="radio" id="Mare" value="Mare" tabindex="20" />
<label for="Mare">Mare</label>
<input type="radio" name="radio" id="Montagna" value="Montagna" tabindex="30" />
<label for="Montagna">Montagna</label>
<input type="radio" name="radio" id="Lago" value="Lago" tabindex="40" />
<label for="Lago">Lago</label>
</p>

<p>
<label for="Citta"> Città </label>
<input type="text" name="Citta" id="Citta" tabindex="50" />
</p>

<p>
<label for="Provincia">Provincia</label>
<input type="text" name="Provincia" id="Provincia" tabindex="60" />
</p>


<p>
<label for="NomeH">Nome H</label>
<input type="text" name="NomeH" id="NomeH" tabindex="70" />
</p>
<p>
<label for="Categoria">Categoria</label>
<select name="Categoria" size="1" id="Categoria" accesskey="1" tabindex="2">
<option value="2">2</option>
<option value="2.5">2.5</option>
<option value="3">3</option>
<option value="3.5">3.5</option>
<option value="4">4</option>
<option value="4.5">4.5</option>
<option value="5">5</option>
</select>
</p>
<p>
<label for="Periodo">Periodo offerta dal/al</label>
<input type="text" name="Periodo" id="Periodo" tabindex="80" />
<label for="Da">Da €/notte</label>
<input type="text" name="Da" id="Da"tabindex="90" />
</p>
<p>
<label for="Sito">Sito internet Hotel</label>
<input type="text" name="Sito" id="Sito" tabindex="100" />
<label for="Email">Email</label>
<input type="text" name="Email" id="Email" tabindex="1100" />
</p>
<p>
<label for="Nome"> Nome Responsabile</label>
<input type="text" name="Nome" id="Nome" tabindex="120" />
</p>


<p>&nbsp;</p>
<p>
<label for="Invia"></label>
<input type="submit" name="Invia" id="Invia" value="Invia" tabindex="130" />
</p>
</fieldset>
</form>
gf233 non in linea   Rispondi citando
Vecchio 08-02-10, 16:08   #4 (permalink)
User
 
L'avatar di miopc
 
Data di registrazione: Feb 2010
Messaggi: 13
Proprio al volo (non ho manco letto tutto il post) di chiedo di controllare se veramente hai la variabile $intestazioni "spezzata" in 2.

mail($destinatario,$oggetto,$messaggio,$intestazio ni);
miopc non in linea   Rispondi citando
Vecchio 08-02-10, 16:11   #5 (permalink)
User
 
Data di registrazione: Feb 2010
Messaggi: 21
no,non e' spezzata...avro' combinato io qualcosa nel copia incolla....la mail arriva ma con tutti i campi vuoti.grazie
gf233 non in linea   Rispondi citando
Vecchio 08-02-10, 16:19   #6 (permalink)
User
 
L'avatar di miopc
 
Data di registrazione: Feb 2010
Messaggi: 13
Ok, mi ci volevano 3 secondi in più per svelare l'arcano (che tanto arcano poi non è!).

Quando passi una variabile da un form con method="post", nella pagina php di destinazione (in questo caso invia.php) le variabili hanno il nome preceduto da $_POST['value'].

Praticamente i tuoi dati del form fanno parte dell'array $_POST che viene passato a invia.php

Così per esempio il valore relativo a:
Quote:
<input type="radio" name="radio" id="Citta2" value="Citta2" tabindex="10" />
in invia.php sarà espresso dalla variabile

$_POST['Citta2'] e non semplicemente $Citta2

Per far funzionare il tutto basta assegnare il valore alle variabili, all'inizio dello script php, così:

$Citta2 = $_POST['Citta2'];

Attenzione pero' che uno script così è un invito a nozze per hackers e compagnia bella!
Dovresti filtrare ogni valore in entrata sui tuoi scripts PHP, controllando il tipo di variabile ma ancora meglio usando sempre espressioni regolari!


aggiungo:
quando le cose non funzionano fai sempre un rapido debug preventivo. Se la mail arriva vuota, probabilmente le variabili sono vuote.
Controlla che le variabili abbiano dei valori con un:

echo $nome_variabile;
die;

Ultima modifica di miopc : 08-02-10 16:22.
miopc non in linea   Rispondi citando
Vecchio 08-02-10, 16:41   #7 (permalink)
User
 
Data di registrazione: Feb 2010
Messaggi: 21
grazie 1000!sei stato gentilissimo!!
PS.che rischi corro se questi hacker decidono di prendermi di mira?
gf233 non in linea   Rispondi citando
Vecchio 08-02-10, 16:48   #8 (permalink)
User
 
L'avatar di miopc
 
Data di registrazione: Feb 2010
Messaggi: 13
Bhe i rischi che corri sono proporzionali alla complessità del tuo sito e a la quantità e qualità di informazioni che vi sono presenti.

Se non filtri la tua variabile post, chiunque può "iniettare" del codice all'interno del tuo server.

Per questo è sempre buona norma usare lo stripslashes se non magic_quotes non è attivo, o filtrare con eregi e l'espressione regolare che ti interessa (es. solo lettere e numeri).

Per una discussione più approfondita su questo argomento sono sicuro che qualche moderatore appena vedrà il thread ti saprà consigliare la sezione adatta del forum.

La sicurezza in PHP è una questione di cruciale importanza, che ogni programmatore deve tenere in considerazione prima di scrivere qualsiasi righetta di codice.
miopc non in linea   Rispondi citando
Vecchio 08-02-10, 18:22   #9 (permalink)
User
 
Data di registrazione: Feb 2010
Messaggi: 21
ma e' un lavoro grosso da fare nel mio caso ,filtrare le variabili?intendo dire e' complesso perche sono alle prime armi...grazie ancora
gf233 non in linea   Rispondi citando
Vecchio 09-02-10, 08:51   #10 (permalink)
User
 
Data di registrazione: Feb 2010
Messaggi: 21
Ho provato cosi...ma non funziona e ho provato anche togliendo $Citta2= lasciando solo $_POST['Citta2']; ...la mail arriva compilata ma con tutti i campi attaccati e non si capisce niente,praticamente la mail che arriva non ha tutti i campi divisi ma e' una frase unica,non legge i campi penso.


<?php
/* INVIO SEMPLICE */
$destinatario = "mia mail";
$oggetto = "Email inviata dal sito";
$Citta2 = $_POST['Citta2'];
$Mare = $_POST['Mare'];
$Montagna = $_POST['Montagna'];
$Lago = $_POST['Lago'];
$Citta = $_POST['Citta'];
$Provincia = $_POST['Provincia'];
$NomeH = $_POST['NomeH'];
$Categoria = $_POST['Categoria'];
$Periodo = $_POST['Periodo'];
$Da = $_POST['Da'];
$Sito = $_POST['Sito'];
$Email = $_POST['Email'];
$Nome = $_POST['Nome'];

$da = $email;
$intestazioni = "From: $da";
mail($destinatario,$oggetto,$messaggio,$intestazio ni);
?>
gf233 non in linea   Rispondi citando
Vecchio 09-02-10, 15:41   #11 (permalink)
User
 
Data di registrazione: Feb 2010
Messaggi: 21
Ragazzi ce nessuno che mi puo aiutare?graziee
gf233 non in linea   Rispondi citando
Vecchio 10-02-10, 10:11   #12 (permalink)
User
 
L'avatar di miopc
 
Data di registrazione: Feb 2010
Messaggi: 13
Quote:
gf233 Visualizza il messaggio
Ho provato cosi...ma non funziona e ho provato anche togliendo $Citta2= lasciando solo $_POST['Citta2']; ...la mail arriva compilata ma con tutti i campi attaccati e non si capisce niente,praticamente la mail che arriva non ha tutti i campi divisi ma e' una frase unica,non legge i campi penso.


<?php
/* INVIO SEMPLICE */
$destinatario = "mia mail";
$oggetto = "Email inviata dal sito";
$Citta2 = $_POST['Citta2'];
$Mare = $_POST['Mare'];
$Montagna = $_POST['Montagna'];
$Lago = $_POST['Lago'];
$Citta = $_POST['Citta'];
$Provincia = $_POST['Provincia'];
$NomeH = $_POST['NomeH'];
$Categoria = $_POST['Categoria'];
$Periodo = $_POST['Periodo'];
$Da = $_POST['Da'];
$Sito = $_POST['Sito'];
$Email = $_POST['Email'];
$Nome = $_POST['Nome'];

$da = $email;
$intestazioni = "From: $da";
mail($destinatario,$oggetto,$messaggio,$intestazio ni);
?>
Bhe la devi impaginare..

Se non vuoi fare una email HTML devi usare \n per una nuova linea e/o \t per una tabulazione.
miopc non in linea   Rispondi citando
Vecchio 10-02-10, 14:03   #13 (permalink)
User
 
Data di registrazione: Nov 2007
Messaggi: 288
Ti compilo solo la prima riga per avere un minimo di sicurezza, poi le altre le fai da solo.
Codice PHP:
$messaggio "Citta: ".htmlentities($_POST['Citta2'])."\n"
__________________
Matriz
matmattia non in linea   Rispondi citando
Vecchio 10-02-10, 14:42   #14 (permalink)
User
 
Data di registrazione: Feb 2010
Messaggi: 21
perfetto,grazie 1000 ragazzi!!!!!!!!!!!!!!!!!!!!!!
gf233 non in linea   Rispondi citando
Vecchio 03-02-12, 17:50   #15 (permalink)
User Newbie
 
Data di registrazione: Feb 2012
Ubicazione: Matera
Messaggi: 2
Salve a tutti sono nuovo del forum e soprattutto di linguaggio php. Leggendo questa discussione ho notato che il form in questione è molto simile al mio, il mio è ancora più semplice. Nonostante abbia seguito i consigli citati quando mi invia la mail, invece di tutti i campi:nome,città,email e testo del messaggio, mi arriva solo il testo del messaggio..Dove sbaglio?

Vi posto il codice:

Html

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
<style type="text/css">
<!--
#form1 {
width: 500px;
margin-left: 150px;
margin-top: 50px;
}
#form1 fieldset {
margin-left: 10px;
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
background-color: #09F;
color: #FFF;
padding: 20px;
}
#form1 fieldset legend {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
text-transform: uppercase;
}
#form1 fieldset #submit {
margin-left: 400px;
padding: 0px;
}
#form1 fieldset #invia {
margin-left: 400px;
}
-->
</style>
</head>
<body>
<form action="invia.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<fieldset>
<legend>Informazione di registrazione</legend>
<p>
<label for="nome">Nome</label>
<input type="text" name="nome" id="nome" tabindex="10" />
</p>
<p>
<label for="citta">Città</label>
<input type="text" name="citta" id="citta" tabindex="20" />
</p>
<p>
<label for="email">Email</label>
<input type="text" name="email" id="email" tabindex="30" />
</p>
<p>&nbsp;</p>
</fieldset>
<fieldset>
<legend></legend>
<legend>IL tuo Messaggio</legend>
<p>
<label>
<textarea name="testo" cols="50" rows="5" id="testo"></textarea>
</label>
</p>
</p>
<input type="submit" name="invia" id="invia" value="Invia" />

</p>
</fieldset>
</form>
</body>
</html>


PHP



<?php


$destinatario = "mia@email.it";
$oggetto = "email";

$messaggio = "nome: ".htmlentities($_POST['nome']);
$messaggio = "citta: ".htmlentities($_POST['citta']);
$messaggio = "Email: ".htmlentities($_POST['email']);
$messaggio = "testo: ".htmlentities($_POST['testo']);

$da = $email ;
$intestazioni = "From: $da";

mail($destinatario,$oggetto,$messaggio,$intestazio ni);

?>

Grazie mille per l'attenzione(se ci sarà )

Saluti
ifrank non in linea   Rispondi citando
Rispondi


Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 15:21.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.