problemi con invio PHP

101south

Nuovo Utente
6 Giu 2010
20
0
0
Salve, sono alle prime armi con i Form e naturalmente ho qualche problema.
In una prima pagina PHP ("Ordine") ho inserito il Form, con 3 input name e una textarea (piú il pulsante Submit).
Sin qui tutto bene... Alla pagina dove rimanda ("Ordine_Inviato") va anche lì tutto bene, senonchè al mio indirizzo di posta non arriva niente, anzi alla fine della pagina di rimando appaiono stringhe di errore, che riporto qua di seguito.
Non so capire da dove deriva l'errore. Ho allegato il file coi codici PHP dei Form iniziale e e della pagina di approdo.
Spero possiate darmi una mano...


Notice: Undefined variable: nome in C:\Program Files\EasyPHP-5.3.2i\www\Centri commerciali\Ordine_Inviato.php on line 304

Notice: Undefined variable: richiesta in C:\Program Files\EasyPHP-5.3.2i\www\Centri commerciali\Ordine_Inviato.php on line 305

Notice: Undefined variable: citta_regioni in C:\Program Files\EasyPHP-5.3.2i\www\Centri commerciali\Ordine_Inviato.php on line 306

Notice: Undefined variable: email in C:\Program Files\EasyPHP-5.3.2i\www\Centri commerciali\Ordine_Inviato.php on line 308

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files\EasyPHP-5.3.2i\www\Centri commerciali\Ordine_Inviato.php on line 311
 

Allegati

lotus

Utente Attivo
5 Mag 2009
543
8
0
Ciao, innanzitutto per lo script ordine inviato ho identificato i seguenti errori:

PHP:
$oggetto = "Ordine centri commerciali";

$messaggio = "Nome: $name\n";
$messaggio .= "Lista richiesta: $richiesta\n";
$messaggio .= $citta_regioni;

$da = $email;
$intestazioni = "From: $da";
che, tra l'altro, ti vengono anche indicati negli errori da te riportati. Nello specificom fai riferimento a variabili che non esistono. La variabile $name non esiste nel tuo file php, mentre esiste
PHP:
$_POST['name']
e lo stesso vale per tutte le altre variabili non trovate.

Poi c'è il problema della funzione mail, adibita ad inviare email che probabilmente non è stat configurata all'interno del php.ini e che, quindi, non funziona correttamente.
Quì troverai info ulteriori:
http://forum.mrwebmaster.it/php/22574-abilitare-server-php-invio-mail.html

Ciao, Ciro
 

101south

Nuovo Utente
6 Giu 2010
20
0
0
Ok, tralasciamo per un attimo l'ultimo errore relativo alla configurazione della mail.
Se io ho 4 label (name, email, richiesta, citta_regioni), per fare arrivare il testo compilato nei vari campi in un'email, dovrei scrivere su "Ordine_Inviato.php":

<?php

$destinatario = "[email protected]";

$_POST['name'];
$_POST['email'];
$_POST['richiesta'];
$_POST['citta_regioni'];

?>

Così funzionerebbe? E per inserire un oggetto nelle email che riceverei, in modo da identificarle?
Giusto per capire bene, la stringa dopo "POST" (['name'];['email'], etc.), deve corrispondere all' "input name" dell'altro PHP?
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
dovrebbe essere qualcosa come:
PHP:
$destinatario = "[email protected]";
$nome = $_POST['name'];
$email = $_POST['email'];
......
 

101south

Nuovo Utente
6 Giu 2010
20
0
0
Eccomi qua. Ho aggiornato così il php Invio, come da voi indicato:

----------------------------------------------------------------------------------

$destinatario = "[email protected]";

$oggetto = "Ordine centri commerciali";

$name = $_POST['name'];
$email = $_POST['email'];
$richiesta = $_POST['richiesta'];
$citta_regioni = $_POST['citta_regioni'];


mail($destinatario,$oggetto,$name,$email,$richiesta,$citta_regioni);

----------------------------------------------------------------------------------

Appare tuttavia il seguente errore:

Warning: mail() expects at most 5 parameters, 6 given in C:\Program Files\EasyPHP-5.3.2i\www\Centri commerciali\Ordine_Inviato.php on line 310

La linea 310 è appunto: mail($destinatario,$oggetto,$name,$email,$richiesta,$citta_regioni);?>

Intuisco che non posso inserire più di 5 parametri, ma come faccio se io ne ho proprio 6?
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Una bella googlata riguardao alla funzione mail del PHP non guasterebbe. Prova a vedere QUI
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
prova a concatenare:
PHP:
mail($destinatario,$oggetto,$name,$email,$richiesta.$citta_regioni);
 

101south

Nuovo Utente
6 Giu 2010
20
0
0
Ha funzionato! Cavolo, ma l'unica differenza tra la stringa consigliata, ovvero
mail($destinatario,$oggetto,$name,$email,$richiesta.$citta_regioni);

e quella mia precedente
mail($destinatario,$oggetto,$name,$email,$richiesta,$citta_regioni);

è il punto "." al posto della virgola "," dopo "richiesta"... Chissa perché.. e chissà quale principio si nasconde dietro.
Ora posso concentrarmi sull'invio dell'email, poichè questo errore appare ancora:

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\EasyPHP-5.3.2i\www\Centri commerciali\Ordine_Inviato.php on line 310

Grazie!
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
C'è una grande differenza tra un punto ed una virgola. In PHP il punto è l'operatore di concatenazione per le stringhe per cui:

PHP:
mail($destinatario, $oggetto, $name, $email, $richiesta, $citta_regioni);
nel caso precedente stai passando 6 parametri alla funzione mail(), così invece:

PHP:
mail($destinatario, $oggetto, $name, $email, $richiesta.$citta_regioni);
ne stai passandro 5 in quanto $richiesta e $citta_regioni sono concatenati e quindi da considerare un'unica stringa.
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
è il punto "." al posto della virgola "," dopo "richiesta"... Chissa perché.. e chissà quale principio si nasconde dietro.
La funzione mail richiede 5 parametri, concatenando l'ultimo al penultimo con "." gli ultimi 2 diventano uno solo

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\EasyPHP-5.3.2i\www\Centri commerciali\Ordine_Inviato.php on line 310
devi aprire il php.ini e modificare queste righe:
PHP:
[mail function]
; For Win32 only.
SMTP = smtp.tiscali.it (oppure l'smtp della tua connessione)

; For Win32 only.
sendmail_from [email protected]
salva, riavvia easyPHP e riprova