Visualizzazione risultati 1 fino 11 di 11

Discussione: Problema con Form contatti

  1. #1
    Guest

    Predefinito Problema con Form contatti

    Buongiorno,
    sto realizzando il mio primo sito, e ieri ho provato ad inserire un semplice form contatti (NOME,EMAIL,OGGETTO,MESSAGGIO)in php,
    ma se eseguo una prova inserendo i dati richiesti dal mio Form ed invio, il risultato è questo:
    Parse error: syntax error, unexpected '@' in /membri/xxxxxxx/mail/invia.php on line 3.

    Qualcuno mi può illuminare su che tipo di errore rappresenta, e come risolverlo.

    Grazie.

  2. #2
    Guest

    Predefinito

    credo che dovresti postare almeno la pagina.php del invio del forum per avere una risposta

  3. #3
    Guest

    Predefinito

    Qui di seguito posto il file invio.php:

    Codice PHP:
    <?php
    // inserisci qui il tuo indirizzo email
    $receiverMail = xxx@libero.it;

    // pulizia dei dati inseriti
    $name = ltrim(rtrim(strip_tags(stripslashes($_POST['name']))));
    $email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
    $subject = ltrim(rtrim(strip_tags(stripslashes($_POST['subject']))));
    $msg = ltrim(rtrim(strip_tags($_POST['msg'])));

    // lettura dell'indirizzo IP
    $ip = getenv(REMOTE_ADDR);

    // formattazione del messaggio ( \n per le messe a capo )
    $msgformat = Messaggio da: $name ($ip)\nEmail: $email\n\n$msg;

    // verifica campi obbligatori
    if(empty($name) || empty($email) || empty($subject) || empty($msg)) {
    echo <
    h3>Il messaggio non è stato inviato</h3><p>Compila tutti i campi obbligatori!</p>;
    }
    // verifica indirizzo email
    elseif(!ereg([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$, $email)) {
    echo <
    h3>Il messaggio non è stato inviato</h3><p>L'indirizzo email indicato non è valido!</p>;
    }
    else {
    // invio del messaggio
    mail($receiverMail, $subject, $msgformat, “From: $name <$email>);
    echo <h3>Il messaggio è stato inviato!</h3><p>Riceverai una risposta il prima possibile!</p>; }
    ?>

    ...e qui posto il codice html, se può servire, per la creazione del form:

    Codice PHP:
    <form method="post" action="mail/invia.php">
    <
    font face="Verdana"><b><font size="2">Nome:<br /></font></b>
    <
    input name="name" size="30" maxlength="40" style="font-weight: 700" /><b><font size="2"><br /><br />
    Email:<br /></font></b>
    <
    input name="email" size="30" maxlength="40" style="font-weight: 700" /><b><font size="2"><br /><br />
    Oggetto:<br /></font></b>
    <
    input name="subject" size="30" maxlength="40" style="font-weight: 700" /><b><font size="2"><br /><br />
    Messaggio:</font></b></font><br /><textarea name="msg" cols="50" rows="6"></textarea><br /><br />
    &
    nbsp;<input type="submit" value="Invia" />
    </
    form>

    Grazie.
    Ultima modifica di dreadnaut : 20-02-2012 alle ore 14.18.04 Motivo: + tag [php] per il codice

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Come puoi vedere dalla colorazione del codice (l'ho aggiunta mettendo un tag [php]), mancano tutte le virgolette attorno alle stringhe.

    Ad esempio non
    Codice PHP:
    // inserisci qui il tuo indirizzo email
    $receiverMail = xxx@libero.it;
    ma:
    Codice PHP:
    // inserisci qui il tuo indirizzo email
    $receiverMail = "xxx@libero.it";
    e così via, ogni volta che hai una stringa, od un echo.

  5. #5
    Guest

    Predefinito

    Ti ringrazio, per la risposta, ma purtroppo penso che non sia questo il problema, perchè ho sbagliato a ricopiare il codice nel messaggio inviato, il file originale invia.php ha tutte le virgoletta di apertura e chiusura delle stringhe.

    Qualche altro consiglio?

    Grazie per la disponibilità.

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Il messaggio di errore nel tuo primo post corrispondeva alla mancanza di virgolette, quindi almeno quelle non c'erano, al momento dell'esecuzione.

    Se ora ti da un messaggio d'errore diverso, qual'è?

    Poi, per sicurezza, come stai editando questi file? Via ftp? Via pannello?

  7. #7
    Guest

    Predefinito

    Allora, sono andato nella mia cartella personale di Altervista GESTIONE FILE, sono andato a rilleggere attentamente il file invia.php e mi sono accorto che al posto di tutte le virgolette c'era la codifica “, penso che sia quella per il carattere speciale delle virgolette.
    Ho risistemato il tutto con le virgolette, e questo è il risultato:

    Codice PHP:
    <?php
    // inserisci qui il tuo indirizzo email
    $receiverMail = "indirizzo.email@providerchenonce.it"; // ocio allo spam!

    // pulizia dei dati inseriti
    $name = ltrim(rtrim(strip_tags(stripslashes($_POST['name']))));
    $email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
    $subject = ltrim(rtrim(strip_tags(stripslashes($_POST['subject']))));
    $msg = ltrim(rtrim(strip_tags($_POST['msg'])));

    // lettura dell'indirizzo IP
    $ip = getenv("REMOTE_ADDR");

    // formattazione del messaggio ( \n per le messe a capo )
    $msgformat = "Messaggio da: $name ($ip)\nEmail: $email\n\n$msg";

    // verifica campi obbligatori
    if(empty($name) || empty($email) || empty($subject) || empty($msg)) {
    echo
    "<h3>Il messaggio non è stato inviato</h3><p>Compila tutti i campi obbligatori!</p>";
    }
    // verifica indirizzo email
    elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
    echo
    "<h3>Il messaggio non è stato inviato</h3><p>L'indirizzo email indicato non è valido!</p>";
    }
    else {
    // invio del messaggio
    mail($receiverMail, $subject, $msgformat, "From: $name <$email>");
    echo
    "<h3>Il messaggio è stato inviato!</h3><p>Riceverai una risposta il prima possibile!</p>"; }
    ?>
    Adesso funziona.
    Grazie mille per i consigli.
    Ultima modifica di dreadnaut : 20-02-2012 alle ore 16.34.05 Motivo: - indirizzo email + tag [php]

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Il messaggio di errore nel tuo primo post corrispondeva alla mancanza di virgolette, quindi almeno quelle non c'erano, al momento dell'esecuzione.

    Se ora ti da un messaggio d'errore diverso, qual'è?

    Poi, per sicurezza, come stai editando questi file? Via ftp? Via pannello?
    Scusa, se non ti ho risposto, ma leggo la tua solo ora.
    Comunque per ora sto gestendo il sito tramite ftp.

    Pensi sia meglio gestire il tutto in altro modo?

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Era solo per assicurarmi che le virgolette non si fossero perse per strada, FTP va benissimo.

  10. #10
    Guest

    Predefinito

    Alcuni consigli:
    • sostituisci tutti i ltrim() e rtrim() con una funzione che fa il lavoro di entrambe: trim();
    • usa preg_match() o fiter_var() al posto di ereg() che è deprecata;
    • non rimuovere i "tags" con strip_tags() perché potresti rimuovere eventuali dati tra virgolette, esempio <questo>, quindi usa htmlspecialchars();
    • aggiungi una condizione su mail() che ne controlli l'effettivo invio, a volte capita che questo non venga effettuato;
    • usa exit() o die() per mostrare il messaggio di avvenuto invio al posto di echo in modo da bloccare lo script per qualsiasi motivo di sicurezza.



  11. #11
    Guest

    Predefinito

    Grazie mille per i consigli.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •