Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    form php - i messaggi non arrivano!

    Salve a tutti, ho inserito un form in una pagina (a seguito il codice). compilando tutti i campi e cliccando su invia compare: messaggio inviato con successo!
    ma in realtà questo messaggio non arriva mai!!
    ho implementato lo stesso identico form su un altro sito e lì...funziona!! per me è un mistero, spero che qualcuno possa darmi qualche dritta e ringrazio anticipatamente!
    ecco il codice. la pagina in questione si chiama "richiesta_info.php"


    <?php
    // default
    $output = "";
    $send_ok = false;

    if(isset($_POST['submit']))
    {
    // inizializzare le variabili
    $mail = !empty($_POST['mail']) ? $_POST['mail'] : "";
    $name = !empty($_POST['name']) ? $_POST['name'] : "";
    $subject = !empty($_POST['subject']) ? $_POST['subject'] : "";
    $text = !empty($_POST['text']) ? $_POST['text'] : "";

    $ip = $_SERVER['REMOTE_ADDR'];

    // definizione dei campi obbligatori
    if($name == '') $output .= "<li style='color:#E7B43E'><span style='font-size:12px'>Inserire il Nome!</span>";
    // verifica sintassi corretta per email
    $muster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+.[a-zA-Z]{2,4}$/";
    if(!preg_match($muster, $mail)) $output .= "<li style='color:#E7B43E'><span style='font-size:12px'>Inserire un Email valido!</span>";
    if($subject == '') $output .= "<li style='color:#E7B43E'><span style='font-size:12px'>Inserire il Soggetto!</span>";
    if($text == '') $output .= "<li style='color:#E7B43E'><span style='font-size:12px'>Inserire il Testo di messaggio!</span>";

    $to = "il_mio_indirizzo_email@xxx.it";

    $message = "Hai ricevuto una e-mail da: ".$name.", ".$mail.".
    ";
    $message .= "Messaggio:
    ".$text."

    ";
    $message .= "IP: ".$ip."
    ";
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $message .= " Nome: $name ";
    $message .= " Mail: $mail ";
    $headers .= "From: Richieste Web <web@emca2.it>";
    $headers .= "Reply-To: $to\r\n";

    if($output == "")
    {
    if(mail($to, $subject,$message, $headers)){
    $output = "<p style='color:#FF7A0F; padding-bottom:150px'><span style='font-size:20px'>Messaggio inviato con successo!</p></span>";
    $send_ok = true;
    }
    else
    {
    $output = "<p style='color:#EF9200'>Ci sono stati degli errori nell'invio della e-mail!</p>";
    }
    }
    }
    ?>

    <?
    $titolo='richiesta info';
    $idimage="img/contatti.jpg";
    include('include/header.php');
    ?>


    <link href="css/formOK.css" rel="stylesheet" type="text/css" />

    <div id="testo">

    <h1>richiesta informazioni</h1>



    <?php if($send_ok == false): ?>
    <?php echo "<span style='color:red;'><ul class='tuocss'>".$output."[/list]</span>" ?>
    <form id="formail" method="post" action="richiesta_info.php">

    <p class="piccolo">Tutti i campi sono obbligatori</p>


    <div id="risposta">
    </div>


    Nome</p>
    <input type="text" id="name" name="name" value="<?php echo isset($_POST['submit']) && $_POST['name'] != "" ? $_POST['name'] : ""; ?>" />



    E-mail</p>
    <input type="text" id="mail" name="mail" value="<?php echo isset($_POST['submit']) && $_POST['mail'] != "" ? $_POST['mail'] : ""; ?>" />



    Oggetto</p>
    <input type="text" id="subject" name="subject" value="<?php echo isset($_POST['submit']) && $_POST['subject'] != "" ? $_POST['subject'] : ""; ?>" />



    Messaggio</p>
    <textarea id="text" name="text" rows="9" cols="20"><?php echo isset($_POST['submit']) && $_POST['text'] != "" ? $_POST['text'] : ""; ?></textarea>


    <input type="submit" name="submit" value="" class="inviaform"/>
    </form>
    <?php else: ?>
    <?php echo "<span style='color:green;'>".$output."</span>" ?>
    <?php endif; ?>
    {mirimadesign}

  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    la funzione mail() di PHP funziona (scusa il gioco di parole) solo se nel server è installato un MTA che per fartela breve consente a quella macchina di inviare messaggi di posta, è probabile che nel primo server dove hai provato non sia installato per cui l'email non può essere inviata, altre ragioni potrebbero essere legate a Firewall che bloccano l'invio del messaggio.

    Comunque se lo stesso codice funziona su una macchina e non su un altra le ragioni non sono da ricercare nel codice, che evidentemente funziona, ma sulla configurazione della macchina.

  3. #3
    grazie per la tua risposta...ma quindi cosa dovrei fare? devo contattare il server..cambiare server?? dovrei caricare il sito da un'altra parte...?

    grazie
    {mirimadesign}

  4. #4
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    le strade sono tante, innanzi tutto contatterei il server per verificare se hanno installato un MTA tipo sendmail o se hanno intenzione di farlo, se ti dicono che non c'è e non ci sarà neanche in fututo hai diverse strade, puoi usare le funzioni di PHP per autenticarti al tuo ISP e inviare da li, puoi usare le funzioni IMAP per inviare da una casella IMAP .... oppure naturalmente puoi anche cambiare server

  5. #5
    l'unico concetto che ho capito è "puoi cambiare server"
    il resto ("usare le funzioni di PHP per autenticarti al tuo ISP e inviare da li, puoi usare le funzioni IMAP per inviare da una casella IMAP") è praticamente materia oscura per me!!
    se puoi delucidarmi, bene (se la cosa non è troppo lunga e complicata insomma)....altrimenti opterò per il cambiamento di server in ogni caso ti ringrazio!!
    {mirimadesign}

  6. #6
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    non è complicato, ma bisogna prima capire come funziona l'invio della posta.

    Facciamo un passo indietro e dimenticati del sito per un attimo, quando tu dal tuo PC di casa apri outlook e invii un messaggio sei propenso a credere che sia il tuo computer che invia quel messaggio, in realtà non è così, non potrebbe farlo perchè non è un mailserver, per cui quello che fa è semplicemente collegarsi al mailserver del tuo ISP (l'operatore telefonico che ti fornisce l'ADSL) il quale verifica se sei un loro cliente e se è così invia per te il messaggio.

    Se ti è capitato di configurare un account su Outlook avari impostato un server SMTP .... ecco quello è l'indirizzo del mailserver al quale il tuo PC chiede di inviare per conto tuo il messaggio.

    Il tuo operatore telefonico ha 2 modi per verificare se sei un loro cliente, alcuni controllano semplicemente se la linea da cui ti collegi è 'di loro proprieta' (passatemi il termine esemplificativo) altri ti chiedono di autenticarti con user e password, i quali dovranno essere impostati appunto nella configurazione dell'account di Outlook.

    Ora possiamo ritornare al sito, PHP ha alcune funzioni che ti consentono di 'chiamare' un qualsiasi mailserver e inviare da li, per cui tu usando le credenziali che ti ha dato il tuo fornitore di ADSL (se te le ha date) potresti inviare email dal tuo sito come se le stessi inviando dal tuo PC di casa.

    Per quanto riguarda IMAP il discorso è più o meno identico con l'unica differrenza che anzicè utilizzare il protocollo SMTP usi il protocollo IMAP per comunicare con il mailserver.

    Quindi il concetto è che nel caso il server su cui si trova il tuo sito non sia in grado di inviare posta puoi anche fare in modo che i tuoi script si colleghino ad un mailserver remoto e facciano l'invio da quest'ultimo.

    Detto questo però io ti consiglio prima di fare qualsiasi cosa di contattare l'assistenza del server per chiedere se effettivamente nel server sia installato un MTA e in caso negativo se si possa installare spiegandole che hai uno script con la funzione mail() di PHP che sembra non effettuare l'invio, può anche essere che loro abbiano procedure particolari per l'invio delle mail dai siti; poi naturalmente se hai problemi a 'tradurre' la risposta puoi postarla qua e io o qualcun'altro ti daremo una mano.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.