Newsgroup: it.comp.www.php
Titolo: Form Mail

Ciao All,
ho provato a fare un semplicissimo form per mandare le mail.
Ho creato il form nella mia pagina principale: index.php e posto i dati 
raccolti alla pagina sendamail.php, dove oltre alla funzione mail ho 
aggiunto un 
echo("Grazie");
Visualizzando la pagina con il browser, apparentemente tutto funziona, e 
arrivo alla scritta "Grazie". Ma le mail non vengono mai inviate. Ho 
provato a cambiare i campi facendo vari tentativi, copiando le soluzioni di 
piu' esempi trovati in rete, ma nisba.
Le pagine girano sul mio server Apache casalingo, su connessione ADSL con 
IP statico.
DOMANDA: occorre settare qualche paramentro in Apache affinche' sia in 
grado di spedire le mail, o e' tutto gia' implicito e allora il problema 
sta da qualche altra parte??
Grazie ciao

vedi questo script funziona, io lo sto usando:
<?php
if(!isset($to)) {
                $to = "yourname@yoursite";
}
if(!isset($form)) {
                  $form = "Site Contact";
}
if(!isset($email)) {
                 $email = "My form";
}
############################################################################
###
# for more info
$today = gmdate ( "M d Y H:i:s" );
############################################################################
###
function print_form($array, $body) {
 if(gettype($array)=="array") {
  while (list($index, $sub) = each($array)) {
   $index = ereg_replace("\*", "", $index);
   $index = ereg_replace("_", " ", $index);
   $body = $body . $index . ": " . $sub . "\n\n";
  }
 }else{
  $body = $body . $array;
 }
 return $body;
}
function check_input($array){
 global $HTTP_REFERER;
 $valid = 1;
 if(gettype($array)=="array") {
  while (list($index, $subarray) = each($array) ) {
   if(ereg("\*", $index) && (($subarray == "") || ($subarray == " "))) {
    $index = ereg_replace("\*", " ", $index);
    $index = ereg_replace("_", " ", $index);
    echo"<p>There is a problem with your submission. The field <b>$index</b>
is required, please <a href=\"$HTTP_REFERER\">go back</a> and fill in the
form. (Or press the back button on your browser)</p>";
    $valid = 0;
    return 0;
    exit;
   }elseif(eregi("email", $index)){
if(ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_
`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $subarray)){
     $email_check = 1;
    }else{
     $index = ereg_replace("\*", " ", $index);
     echo"<p>There is a problem with your submission. The E-mail address you
provided, <b>$subarray</b>, does not appear to be valid, please <a
href=\"$HTTP_REFERER\">go back</a> and give a valid address. (Or press the
back button on your browser)</p>";
     return 0;
     exit;
    }
   }else{
    $email_check = 10;
   }
  }
  if($valid == "1" && ($email_check == "1" || $email_check == "10")) {
   return 1;
  }else{
   return 0;
  }
 }
}
if ($submit) {
 reset($HTTP_POST_VARS);
 if(check_input($HTTP_POST_VARS)) {
  $info ="At $today, a visitor to your site submited the form '$form'.\n\n";
  if($REMOTE_HOST == " " || $REMOTE_HOST == "") {
   $host = "IP only";
  }else{
   $host = "$REMOTE_HOST";
  }
  $body = print_form($HTTP_POST_VARS, $info) . "\n\nThe user who submited
this form was: $REMOTE_ADDR ($host using $HTTP_USER_AGENT)";
  mail($to, $form, $body, "From:$email\n");
  echo"<p>Your submission has been approved and sent!</p>";
 }else{
  echo"<p>Validation failed!</p>";
 }
}else{
?>
<?php
}
echo"bla bla";
?>

 vedi questo script funziona, io lo sto usando:
Ho fatto il copia&incolla in un file mailform.php  e mi da questo errore:
Parse error: parse error, expecting `T_PAAMAYIM_NEKUDOTAYIM' or `'('' in 
/var/www/html/mailform.php on line 5
Comunque il form che uso io, molto piu' semplice, funziona in tutto tranne 
nel mandare effettivamente la mail.
Io penso che, essendo il server il mio stesso pc a casa, funzionante sul'IP 
statico della mia connessione ADSL, quando mando una mail con il PHP il 
provider di destinazione la cestini considerandola una fake mail.
Immagino che tu invece hai caricato il tuo form su un sito su un server 
"ufficiale", giusto?
Per poter mandare mail dovrei dire ad Apache di usare l'SMTP di Aruba, il 
mio provider. DOMANDA: e' possibile fare una cosa del genere?
ciao grazie comunque 

 wrote in message
9m05a8$bms$1...@fe2.cs.interbusiness.it...


/var/www/html/mailform.php on line 5
Alla linea cinque, si aspettava un qualche simbolo grafico due volte (?).
Oltre a questo, vedo che Zeev Suraski non ha resistito alla tentazione, e
ha messo un codice di errore in ebraico.
ROFL.
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.

 Lě devi impostare adeguatamente il server della posta.
Non mi e' chiara una cosa: se io inserisco il path di sendmail in php.ini 
(decommentando l'apposita riga) il PHP automaticamente comincia a usare 
sendmail?
Ho letto un po' di cose in giro, ma non ci ho capito un granche'.... alcuni 
infatti chiamano sendmail col comando popen().... ma allora a che serve 
settarlo in php.ini????