Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Controlli campi form

  1. #1

    Controlli campi form

    Salve a tutti

    Ho un form php (smtp, il sito è sotto windows server) funzionante e tutto, ma purtroppo privo di qualsiasi controllo (campi vuoti, indirizzo mail, solo caratteri alfanumerici etc..).

    Qualche buon'anima può aiutarmi spiegandomi come inserire tali controlli su questi campi?
    Vi posto il codice (davvero misero) dello script che possiedo.

    codice:
    <?php  require "email.php";  
    
    $mail = new EMail; 
    $mail->Username = '**************'; 
    $mail->Password = '******';  
    
    $mail->SetFrom($_POST["mail"]);		// Name is optional 
    $mail->AddTo("info@attico-immobiliare.it"); 
    $mail->Subject = "Richiesta dal sito attico-immobiliare.it"; 
    $mail->Message = $_POST["messaggio"]."<hr/>"."Inviato da"."
    "."Nome: ".$_POST["nome"]."
    "."Cognome: ".$_POST["cognome"]."
    "."E-mail: ".$_POST["mail"]."
    "."Telefono: ".$_POST["telefono"]."
    "."Tipo di richiesta: ".$_POST["richiesta"]."
    "."Codice Immobile: ".$_POST["codice"];  
    
    //Optional stuff 
     $mail->ContentType = "text/html";        		// Defaults to "text/plain; charset=iso-8859-1"
     $mail->Headers['X-SomeHeader'] = 'abcde';		// Set some extra headers if required 
    $mail->ConnectTimeout = 30;		// Socket connect timeout (sec) 
    $mail->ResponseTimeout = 8;		// CMD response timeout (sec)  
    
    $success = $mail->Send();  echo "<script> alert('La sua mail e\' stata inviata. Le risponderemo il prima possibile, grazie.'); window.location = 'index.php'; </script>"; ?>

  2. #2

  3. #3
    ci sono tanti modi: con regExp per esempio. Ma non è certo roba per principianti..meglio suare le funzioni predefinite di PHP, almeno è quello che penso io! ad esempio epr controllare se hai immesso una email corretta basta quanto segue:

    Codice PHP:
    $email $_POST['email'];
    if (
    $email) {
      if (
    filter_var($emailFILTER_VALIDATE_EMAIL))
        
    alert("Email corretta!");
      else
        
    alert("Hai immesso una email non valida!");
    } else
         
    alert("non hai immesso email!"); 
    come vedi qui faccio un duplice controllo: se hai messo l'email e se la hai scritta correttamente con il @. Lo stesso per i campi numerici:

    Codice PHP:
    $valore $_POST['numero'];
    if (
    $valore) {
      if (
    is_numeric($valore))
        
    alert("Numero corretto!");
      else
        
    alert("Hai immesso un numero non valido!");
    } else
         
    alert("non hai immesso un numero!"); 

  4. #4
    Ok grazie a tutti, sono riuscito ad implementare parecchi controlli, e ora il form è molto più funzionale!

    Ho un dubbio su una cosa però.

    Come sistema per segnalare che c'è un errore nella compilazione, utilizzo un "alert" con windows.location. Più precisamente cosi:

    codice:
    echo "<script> alert('Il Campo \"nome\" risulta essere vuoto o compilato con caratteri non validi. Torna indietro e correggilo/compilalo.'); window.location = 'contatti.php'; </script>";
    Tuttavia questo codice mi ricarica la pagina dei contatti, e perdo il contenuto dei campi compilati.
    Esiste un modo per far si che abbia lo stesso effetto dell'historyback di javascript?

    Ho provato anche con un windows.history.go(-1), ma quando clicko ok sulla finestrella dell'alert mi resta sulla pagina php dei controlli, non torna indietro..

  5. #5
    ciao! hai provato con un semplice history.go(-1) senza il windows?

  6. #6
    Eheheh mi sono spaccato la testa inutilmente a quanto pare..

    Le cose più semplici sono sempre le migliori!
    Grazie mille, ora funziona

    Ultima domanda:
    ho cercato in giro per il web qualcosa per fare dei controlli sul campo mail, ma trovo solo delle cose molto lunghe che fanno mille if e cicli vari.

    Esiste qualcosa di più semplice e nativo al pari delle funzioni is_numeric per i caratteri numerici ad esempio?

    Vorrei qualcosa di simile da mettere dopo
    codice:
    $email = $_POST["email"];
    In modo che faccia il controllo in una riga e tanti saluti.

    P.s.: grazie mille Emulman!

  7. #7
    troppo buono..

    cmq per la tua ultima richiesta gli IF sono indispensabili, ad ogni modo se
    usi HTML5 tutto è molto più semplice, ad esempio in un form di login:
    Codice PHP:
    <!doctype html>
    <
    head>
      <
    title>Login</title>
      <
    meta charset="utf-8">
    </
    head>
    <
    body>
      <
    form id="frm" method="post" post="pagina.php">
        

    <
    label for="user">Username</label><input type="text" name="user" id="user" required />
        

    <
    label for="pass">Password</label><input type="password" name="pass" id="pass" required />
        

    <
    label for="mail">Email</label><input type="email" name="mail" id="email" required />
        

    <
    input type="submit" value="OK" />
      </
    form>
    </
    body>
    </
    html
    se premi invio sui campi di testo USER e PASSWORD senza immettere nulla HTML5 ti avverte che non hai messo nulla...anche sul campo EMAIL, ma qui il tipo di cmapo è EMAIL e quindi ti viene immediatamente segnalato se non metti ad esempio la chiocciolina!
    quindi se usi le ultimissime versioni di chrome o firefox impara impara e dai una bella occhiata qua

  8. #8
    Ho provato i controlli html 5 che mi hai proposto, sono spettacolari, indubbiamente.
    Con 2 parole risparmi righe di codice!

    Ma c'è sempre il problema retrocompatibilità no?

    Se mi accede al form uno con IE 7 sono rovinato perchè quei controlli non vengono riconosciuti.. O sbaglio..?

    Grazie ancora!

  9. #9
    infatti il problema è sempre lì..IE non è mai stato un modello di compatibilità con gli standard del W3 anzi ha semrpe fatto impazzire chiunque soprattutto con IE6! e cmq per avere una certa compatibilità pouii vedere qua una libreria per la retrocompatibilità per IE7 e IE8...l'esempio precedente che ti ho dato basta modificarlo così

    Codice PHP:
    <!doctype html
    <
    head
      <
    title>Login</title
      <
    meta charset="utf-8">
      <!--[if 
    lt IE 9]>
         <
    script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
      <![endif]--> 
    </head> 
    <body> 
      <form id="frm" method="post" post="pagina.php"> 
        

    <label for="user">Username</label><input type="text" name="user" id="user" required /> 
        

    <label for="pass">Password</label><input type="password" name="pass" id="pass" required /> 
        

    <label for="mail">Email</label><input type="email" name="mail" id="email" required /> 
        

    <input type="submit" value="OK" /> 
      </form> 
    </body> 
    </html> 
    e prova appunto su IE7 e IE8..però ricorda che ora tutti hanno deciso di abbandonare al loro destino i suddetti, molto meglio dire a chi ha vecchie versioni di IE di scaricare chrome, the best!

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.