• User Attivo

    Ciao gigi grazie per la risposta. Allora i form che uso sono due in uno ho provato questo metodo:

    
    $nome="";
    $cognome="";
    $email="";
    $cell="";
    $eta="";
    
    

    ecc,ecc... E poi

    
    if(isset($_POST['nome'])){ $nome = $_POST['nome']; }
    if(isset($_POST['cognome'])){ $cognome = $_POST['cognome']; }
    if(isset($_POST['email'])){ $nome = $_POST['email']; }
    if(isset($_POST['cell'])){ $cell = $_POST['cell']; }
    if(isset($_POST['eta'])){ $eta = $_POST['eta']; }
    
    

    Terminando poi con l'invio di tutto.
    Sull altro form ho provato il metodo che mi hai gentilmente suggerito tu...tutti e due funzionano ma stranamente in tutti e due mi riportano l'errore sulla stessa riga
    [20-Apr-2015 15:34:16 Europe/London] PHP Notice: Undefined variable: messaggio in /home/user/public_html/noindex/miosito/action.php on line 140

    La riga in questione è una semplice teext area per le note aggiuntive facoltative

    
    Note: $note\n ";
    
    

    Non si trova nella parte dove riceve la variabile dal post, si trova nella parte dove compone il messaggio con tutte le variabili...
    Sai da cosa potrebbe dipendere?


  • User Attivo

    Inoltre dal provider mi han detto che per evitare gli errrori che dopo un po disabilitano il servizio mail (), non dovrei usare mail php ma usare smtp.....:?


  • User Attivo

    L'errore ti dice cosa non va, è lo stesso del precedente: hai richiamato una variabile non definita. Devi crearla comunque se la utilizzi, o fare un check.

    Occhio, scrivere:
    $nome="";
    if(isset($_POST['nome'])){ $nome = $_POST['nome']; }

    è come scrivere semplicemente:
    $nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : '';

    Qui definisci una variabile a seconda della condizione iniziale (isset($_POST['nome'])), dopo il ? hai l'assegnazione della variabile, se vera (esiste) gli dai il valore inviato, se no (dopo i : l'assegnazione se è falsa, cioè se non esiste il $_POST relativo) gli da valore "".

    L'uso di mail() sembra dare problemi di sicurezza, per questo potrebbero bloccarlo.
    Puoi provare una delle classi già in rete per riformulare il tuo invio di mail.
    Dai un occhiata qui:


  • User Attivo

    Grazie, ma per l'smtp dovrò studiare un po' , ora non saprei proprio come utilizzarle queste classi :mmm:
    Per l'errore invece me lo da sia con il tuo metodo sia con l'altro.
    Questa è la riga che causa il problema ed in cui ho usato la funzione da te suggerrita

    $note = (isset($_POST['note'])) ? trim($_POST['note']) : '';
    

    Sulle altre variabili con il tuo metodo non da più errori, ma su questa textarea continua a dare errore...solo in questa.


  • User Attivo

    Vedi questa è l'ultima riga che compone il messaggio. Se la lascio così

    Note: $note";
    

    Mi da errore solo sulla riga 140
    Se lo scrivo così

    Note: $note
    ";
    

    Mi da errore sia sulla riga 140 che 141


  • User Attivo

    Questo è il codice della action
    [PHP]<?php

    $nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : '';
    $cognome = (isset($_POST['cognome'])) ? trim($_POST['cognome']) : '';
    $email = (isset($_POST['email'])) ? trim($_POST['email']) : '';
    $cell = (isset($_POST['cell'])) ? trim($_POST['cell']) : '';
    $eta = (isset($_POST['eta'])) ? trim($_POST['eta']) : '';
    $genitore = (isset($_POST['genitore'])) ? trim($_POST['genitore']) : '';
    $regione = (isset($_POST['regione'])) ? trim($_POST['regione']) : '';
    $citta = (isset($_POST['citta'])) ? trim($_POST['citta']) : '';
    $cap = (isset($_POST['cap'])) ? trim($_POST['cap']) : '';
    $provincia = (isset($_POST['provincia'])) ? trim($_POST['provincia']) : '';
    $sesso = (isset($_POST['sesso'])) ? trim($_POST['sesso']) : '';
    $occupazione = (isset($_POST['occupazione'])) ? trim($_POST['occupazione']) : '';
    $note = (isset($_POST['note'])) ? trim($_POST['note']) : '';
    $to = "miamail.com";
    $messaggio.="$nome ha inviato i suoi dati dal sito.
    I suoi dati sono:\n
    Nome: $nome\n
    Cognome: $cognome\n
    Email: $email\n
    Cellulare: $cell\n
    Eta: $eta Genitore: $genitore\n
    Regione: $regione Citta: $citta\n
    Cap: $cap Provincia: $provincia\n
    Sesso: $sesso\n
    Occupazione attuale: $occupazione\n
    Note: $note
    ";
    if (mail($to,"$cognome $nome",$messaggio,"From: $email\n")) {
    echo "Dati inviati correttamente, grazie $nome!";
    } else {
    echo "Si è verificato un problema. Non preoccuparti, inviaci Nome Cognome Cellulare ed Età a: miamail.com Grazie.";
    }

    ?>[/PHP]


  • User Attivo

    Se fai un echo di $note che ti dice?
    Se elimini il richiamo nel $messaggio ?


  • User Attivo

    Se lo elimno dal messaggio da errore alla linea precedente...... :arrabbiato:


  • User Attivo

    Il fatto è che da errore dove lascio la chiusura del messaggio ";
    Se metto la chiusura in una riga da sola da errore in quella riga


  • User Attivo

    Ora ho tolto il punto da
    [PHP]$messaggio.="$nome ha inviato
    [/PHP]
    e non mi da più l'errore...per ora.
    Poteva essere quello il problema o andava lasciato?


  • User Attivo

    oh madonnina....ora il form funziona, non da errore sul file di log, ma lascia il campo email vuoto e lo sostituisce con il nome.....


  • User Attivo

    No ok sistemato il problema.
    Ora mi rimane solo il dubbio di quel punto che ho tolto, andava lasciato?


  • User Attivo

    Non l'avevo notato, effettivamente era un problema. Nel senso che il punto serve per aggiungere ad una variabile già dichiarata del contenuto. Tu la variabile messaggio non l'avevi dichiarata prima, quindi andava in errore. Giusto toglierlo.

    Esempio di utilizzo:
    $descrizione = "Orologio ";
    $descrizione .= "in oro ";
    $descrizione .= "20 carati";

    echo $descrizione; // Output: Orologio in oro 20 carati

    Occhio: se hai aggiornamenti a distanza di tempo così breve, puoi utilizzare la funzione "modifica" dell'ultimo post già inviato per evitare di allungare la discussione e i post presenti con messaggi mono-riga. 😄

    Credo hai risolto. Se hai intenzione di lavorare molto con PHP, ripassa le basi (ogni tanto toccherebbe anche a me che ho queste sviste), perché trick come quello del punto sono molto utili (così come considerare che esistono anche altri tipi di concatenazioni).

    Buona fortuna!


  • User Attivo

    Ahahahahahha sì in effetti ho scritto un po' "alla whatsapp" giustissima osservazione! 😄
    Ah bene a sapersi l'utilizzo del punto nelle variabili.
    Sì in effetti dovrei studiacchiare un po' le basi.....
    Grazie mille gigi per le dritte ed il tempo.
    Ciao alla prossima grazie!