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

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
 
Beh, a questo punto, se non hai la possibilità di accedere al file php.ini per modificare i dati del server SMTP che la funzione mail() sfrutta, tanto vale appoggiarti ad una classe come PHPMailer, che consente anche l'invio di e-mail in HTML con una procedura semplicissima.
 
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?
 
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?
 
prova a concatenare:
PHP:
mail($destinatario,$oggetto,$name,$email,$richiesta.$citta_regioni);
 
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!
 
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.
 
è 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
 

Discussioni simili