• Super User

    @silvio said:

    ho un form con un campo mail.
    usando il semplice echo, se inserisco un indirizzo sbagliato mi dice "indirizzo sbagliato" in una nuova pagina bianca.
    ma come fare perchè la dicitura "indirizzo sbagliato" compaia nella stessa pagina del form?
    ho provato con fopen ma non riesco ad ottenere alcun risultato.
    vi ringrazio.

    silviocome vorresti fare con fopen? fopen apre dei files! Per fare il tutto il controllo senza l'invio in una nuova pagina, devi usare javascript. Se vuoi ti sposto di sezione!


  • User

    fopen ho letto che apre anche un url, perciò cercavo di fargli aprire una pagina identica alla pagina del form aggiungendo una linea di codice php (echo "$email non è un'indirizzo email valido";).
    comunque io sono un principiante numero uno (sono due giorni che mi cimento con il php), se il mio problema si può risolvere solamente con javascript spostami pure nella sezione javascript.
    ti ringrazio.


  • Super User

    @silvio said:

    fopen ho letto che apre anche un url, perciò cercavo di fargli aprire una pagina identica alla pagina del form aggiungendo una linea di codice php (echo "$email non è un'indirizzo email valido";).
    comunque io sono un principiante numero uno (sono due giorni che mi cimento con il php), se il mio problema si può risolvere solamente con javascript spostami pure nella sezione javascript.
    ti ringrazio.SI, ma sono sempre files! Quindi anche in questo caso non ti potrebbe aiutare. Invecedevi fare un controllo sul campo email ( se lo fai con php devi fare un redirect del form tramite una pagine che si occuperà del controllo, sennò in javascript puoi mostrare un alert che avverta l'utente dell'inesattezza della email )

    In PHP devi usare un controllo con le regex, ( anche in js ) esse sono molto importanti: studiale ( ci metterai un bel pò di tempo ma ne varrà la pena ) insieme alle altre cose. Ecco un esempio funzionante di quello che ti serve

    function checkMail( $m ) {
    $r = "([a-z0-9]+[._-]?){1,3}([a-z0-9])*";
    $r = "/(?i)^{$r}@{$r}.[a-z]{2,6}$/";
    return preg_match($r, $m);
    }


  • User

    grazie peter. vedrò di studiarmelo il tuo esempio.
    pensavo semplicemente di poter usare una riga al posto di echo in modo da visualizzare una nuova pagina html a mio piacimento (anzichè la pagina bianca automaticamente visualizzata dal comando echo).
    tutto qua.

    <?php

    if(!$risultato = ereg("^[^@ ]+@[^@ ]+.[^@ .]+$", $email)){
    echo "$email non è un'indirizzo email valido.";

    }else
    ...


  • Super User

    @silvio said:

    grazie peter. vedrò di studiarmelo il tuo esempio.
    pensavo semplicemente di poter usare una riga al posto di echo in modo da visualizzare una nuova pagina html a mio piacimento (anzichè la pagina bianca automaticamente visualizzata dal comando echo).
    tutto qua.

    <?php

    if(!$risultato = ereg("^[^@ ]+@[^@ ]+.[^@ .]+$", $email)){
    echo "$email non è un'indirizzo email valido.";

    }else
    ...
    PaTeR != PETER

    lol :D:D:D

    non capisco cosa vuoi dire... tu cosa vorresti fare esattamente? potrei essermi sbagliato nell'interpretazione della tua richiesta!


  • User

    io ho questo file php:

    <?php

    if(!$risultato = ereg("^[^@ ]+@[^@ ]+.[^@ .]+$", $email)){
    echo "$email non è un'indirizzo email valido.";

    }else
    ...

    ?>

    se inserisco un'indirizzo email non valido in un form di una pagina html che richiama il file php qui sopra, mi si apre una pagina bianca con scritto in alto a sx ".. non è un'indirizzo email valido."
    io non voglio che si apra la pagina bianca.
    voglio o che me lo scriva direttamente sulla stessa pagina del form o su un'altra pagina html di struttura-grafica identica a quella del form.
    è possibile?
    scusami se non riesco a spiegarmi meglio.


  • Super User

    ok ora ho capito! 😄

    Devi fare tutto in javascript, ora ti sposto 😄


  • Super User

    Ciao Silvio, se posti il codice della pagina html con il form, e il codice dello script php diventa piu' semplice capire dove bisogna modificare qualcosa.

    :ciauz:


  • User

    da quello che ho capito, fai dalla pagina del form un header a una pagina di controllo e da qui un altro header alla pagina a cui si deve accedere ,questa è una cosa semplice , se ho capito quello che vuoi fare

    Ciao


  • User

    penso anch'io sia un problema semplice da risolvere, ma molto probabilmente (causa la mia ignoranza) non riesco a spiegarmi bene.
    intanto vi posto i codici della pagina html e dello script php.

    <HTML>

    <HEAD><TITLE>Form</TITLE></HEAD>
    <BODY>

             <form action="form.php" method="post">
             <TABLE><TBODY>
              <TR>
                <TD>**Inserisci i tuoi dati:**
                </TD>
    

    <TD width=180></TD><TD width=120></TD></TR>
    <tr>
    <TD width=120></TD><td width=180></td>
    <td width=180></td><TD width=120></TD>
    </tr>
    <tr>
    <TD width=120></TD><td width=180>Nome:</td>
    <td width=180 align=right><input type="text" size="33" maxlength="50" name="fielda"></td><TD width=120></TD>
    </tr>
    <tr>
    <TD width=120></TD><td width=180>Cognome:</td>
    <td width=180 align=right><input type="text" size="33" maxlength="50" name="fieldb"></td><TD width=120></TD>
    </tr>
    <tr>
    <TD width=120></TD><td width=180>Soprannome:</td>
    <td width=180 align=right><input type="text" size="33" maxlength="50" name="fieldc"></td><TD width=120></TD>
    </tr>
    <tr>
    <TD width=120></TD><td width=180>Paese:</td>
    <td width=180 align=right><input type="text" size="33" maxlength="50" name="fieldd"></td><TD width=120></TD>
    </tr>
    <tr>
    <TD width=120></TD><td width=180>Città:</td>
    <td width=180 align=right><input type="text" size="33" maxlength="50" name="fielde"></td><TD width=120></TD>
    </tr>
    <tr>
    <TD width=120></TD><td width=180></td>
    <td width=180 align=right>
    <input type="submit" value="Invia"></td><TD width=120></TD>
    </tr>

    </TBODY></TABLE></form>
    </BODY></HTML>

    <?php

    $messaggio.="Dati:\n\nNome: $fielda\nCognome: $fieldb\nSoprannome: $fieldc\nPaese: $fieldd\nCittà: $fielde\n";
    $destinatario= "indirizzo email";
    $oggetto="## Dati ##";
    $intestazioni="From: $fielda\n";
    mail($destinatario,$oggetto,$messaggio,$intestazioni);
    echo "dati inviati";

    ?>

    provo a spiegarvi di nuovo il problema.
    innanzitutto quello che ho postato sopra funziona, ossia io compilo il form premo invia e all'indirizzo che ho qui sopra omesso arriva l'email con i vari campi che avevo precedentemente inserito.
    dov'è il problema? il problema è la pagina bianca che salta fuori dopo che ho premuto invio con scritto "dati inviati" (echo "dati inviati").
    è possibile invece di far aprire allo script una pagina bianca, fargli aprire una pagina identica a quella che contiene il form? oppure, è possibile far si che "dati inviati" compaia nella stessa pagina del form, chennesò sotto o accanto al pulsante "invia"?
    in poche parole io non voglio che compaia la pagina bianca e voglio che si rimanga "all'interno del sito". ossia premo invio è mi compare di nuovo una pagina del sito (non bianca) oppure si rimanga sulla stessa pagina dove premuto "invia" compare da qualche parte la scritta "dati inviati".
    spero di essere stato abbastanza chiaro questa volta e comunque vada vi ringrazio per l'attenzione.

    silvio


  • User

    ho cambiato: echo "dati inviati";
    con: header("location: http://www.blablabla.it");
    ma il problema sussiste.
    www.blablabla.it è la pagina dove si trova il form.
    devo fare l'header ad un'altra pagina identica a quella che contiene il form ma con scritto "dati inviati"?
    è così che si risolve il problema?

    silvio


  • User

    AH se vuoi che la scritta compaia nella stessa pagina del form usa il cotrutto (dico in php,avevo letto in queste pagine qualche cosa in php malgrado la sezione)):
    if (isset($_POST['nome_del_tasto_submit'])) {
    fai avvenire i controlli che ti servono

    }

    form in html e ricorda di lasciare action='' oppure il link della stessa pagina in cui è il form 🙂

    Ciao


  • User

    scusami albertorrr ma non ho capito un fico secco.
    cos'è che dovrei fare? cosa dovrei cambiare perchè compaia la scritta "dati inviati" (nella pagina del form) una volta premuto il tasto invia e ricaricata la pagina?

    <?php

    $messaggio.="Dati:\n\nNome: $fielda\nCognome: $fieldb\nSoprannome: $fieldc\nPaese: $fieldd\nCittà: $fielde\n";
    $destinatario= "indirizzo email";
    $oggetto="## Dati ##";
    $intestazioni="From: $fielda\n";
    mail($destinatario,$oggetto,$messaggio,$intestazioni);
    header("location: http://www.paginadelform.it");

    ?>