Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: Controllo dei campi

  1. #1
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697

    Controllo dei campi

    Ho questo script in HEAD che controlla i campi del form, siccome che ho notato che è vulnerabile, vorrei "trasformare" questo codice in php, che devo fare?

    <script language="javascript">
    <!--

    function controlla(){
    var f = document.mioform;
    if ((f.nome.value == "") || (f.nome.value.charAt(0) == " ")){
    alert("Inserire il Nome correttamente")
    f.nome.focus();
    return false;
    }
    if((f.nome.value.indexOf("<") != -1) || (f.nome.value.indexOf(">") != -1)|| (f.nome.value.indexOf("\\") != -1)){
    alert("I caratteri < > \\ non sono ammessi");
    f.nome.focus();
    return false;
    }
    var re = new RegExp("^[!#$&'*+/-9=?A-Z^-~-]+(\\.[!#$&'*+/-9=?A-Z^-~-]+)*@[!#$&'*+/-9=?A-Z^-~-]+(\\.[!#$&'*+/-9=?A-Z^-~-]+)+$","");
    if (f.email.value != "" && !f.email.value.match(re)){
    alert("Inserire un indirizzo E-Mail valido.")
    f.email.focus();
    f.email.select();
    return false;
    }
    if((f.url.value.indexOf("<") != -1) || (f.url.value.indexOf(">") != -1)){
    alert("I caratteri < e > non sono ammessi");
    f.url.focus();
    f.url.select();
    return false;
    }
    if((f.città.value.indexOf("<") != -1) || (f.città.value.indexOf(">") != -1)){
    alert("I caratteri < e > non sono ammessi");
    f.città.focus();
    f.città.select();
    return false;
    }
    if ((f.messaggio.value == "") || (f.messaggio.value.charAt(0) == " ")){
    alert("Inserire il Messaggio correttamente")
    f.messaggio.focus();
    return false;
    }
    if((f.messaggio.value.indexOf("<") != -1) || (f.messaggio.value.indexOf(">") != -1) || (f.messaggio.value.indexOf("\\") != -1)){
    alert("I caratteri < > \\ non sono ammessi");
    f.messaggio.focus();
    return false;
    }
    return true;
    }
    // -->
    </script>

  2. #2
    Beh, devi scrivere un codice che controlli i vari elementi dell'array $_POST facendo gli stessi controlli che facevi prima, per intenderci:

    Codice PHP:
    $tuttook=true;
    if (!isset(
    $_POST["primocampo"]):
        
    $tuttook=false;
    else:
        if (
    $_POST["primocampo"]==""):
            
    $tuttook=false;
        endif;
    endif; 
    ... qui ripeti quanto sopra per ogni campo modificandolo a dovere e poi...

    Codice PHP:
    if ($tuttook):
        
    //qui fai quel che c'è da fare quando la form è a posto
    else:
        
    //qui stampi gli errori, insommadici che non è andata
    endif; 
    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #3
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da Shores
    Beh, devi scrivere un codice che controlli i vari elementi dell'array $_POST facendo gli stessi controlli che facevi prima, per intenderci:

    Codice PHP:
    $tuttook=true;
    if (!isset(
    $_POST["primocampo"]):
        
    $tuttook=false;
    else:
        if (
    $_POST["primocampo"]==""):
            
    $tuttook=false;
        endif;
    endif; 
    ... qui ripeti quanto sopra per ogni campo modificandolo a dovere e poi...

    Codice PHP:
    if ($tuttook):
        
    //qui fai quel che c'è da fare quando la form è a posto
    else:
        
    //qui stampi gli errori, insommadici che non è andata
    endif; 
    Ciao!
    ho modificato così, dimmi se va bene:


    <?
    $tuttook=true;
    if (!isset($_POST["nome"]):
    $tuttook=false;
    else:
    if ($_POST["nome"]==""):
    $tuttook=false;
    endif;
    endif;

    }
    var re = new RegExp("^[!#$&'*+/-9=?A-Z^-~-]+(\\.[!#$&'*+/-9=?A-Z^-~-]+)*@[!#$&'*+/-9=?A-Z^-~-]+(\\.[!#$&'*+/-9=?A-Z^-~-]+)+$","");
    if (f.email.value != "" && !f.email.value.match(re)){
    alert("Inserire un indirizzo E-Mail valido.")
    f.email.focus();
    f.email.select();
    return false;
    }
    $tuttook=true;
    if (!isset($_POST["url"]):
    $tuttook=false;
    else:
    if ($_POST["url"]==""):
    $tuttook=false;
    endif;
    endif;

    }
    $tuttook=true;
    if (!isset($_POST["città"]):
    $tuttook=false;
    else:
    if ($_POST["città"]==""):
    $tuttook=false;
    endif;
    endif;

    }
    $tuttook=true;
    if (!isset($_POST["messaggio"]):
    $tuttook=false;
    else:
    if ($_POST["messaggio"]==""):
    $tuttook=false;
    endif;
    endif;

    }
    ?>

    Il form è così:

    <form method="POST" action="ins.php" name="mioform" onSubmit="return controlla()">
    <tr>
    <td><font size="2">NOME:</font><font size="2" color="red"> *</font></td>
    <td><input name="nome" size="30" maxlength="25" style="border:1px solid"></td>
    </tr>
    <tr>
    <td><font size="2">EMAIL:
    <font color="#008080"></font></td>
    <td><input name="email" type="text" onBlur="this.value=ignoreSpaces(this.value);" style="border:1px solid" size="30" maxlength="40"></td>
    </tr>
    <tr>
    <td><font size="2">SITO:
    <font color="#008080"></font></td>
    <td><input name="url" type="text" value="http://" onBlur="this.value=ignoreSpaces(this.value);" style="border:1px solid" size="30" maxlength="50"></td>
    </tr>
    <tr>
    <td><font size="2">CITTA':
    <font color="#008080"></font></td>
    <td><input name="città" type="text" style="border:1px solid" size="30" maxlength="50"></td>
    </tr>
    <tr>
    <td valign="top"><font size="2">MESSAGGIO:</font><font size="2" color="red"> *</font></td>
    <td><textarea name="messaggio" cols="40" rows="10" style="border:1px solid"></textarea>
    </td>
    </tr>


    <td width="250" align="center"><input type="submit" value="Invia!"></a>
    </td
    </tr>
    </form>

  4. #4
    Così a occhio direi di si, lo hai provato?
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  5. #5
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da Shores
    Così a occhio direi di si, lo hai provato?
    Non va, esce un errore di script "previsto oggetto" qui:

    <form method="POST" action="ins.php" name="mioform" onSubmit="return controlla()">

  6. #6
    devi togliere la onSubmit, visto che non c'è più il javascript e tutti i controlli in php sono nel file ins.php (li hai messi lì vero?) ...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  7. #7
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da Shores
    devi togliere la onSubmit, visto che non c'è più il javascript e tutti i controlli in php sono nel file ins.php (li hai messi lì vero?) ...
    Ora l'ho scritta così ma non fa più il controllo dei campi.

    <form method="POST" action="ins.php" name="mioform">

  8. #8
    Cosa significa che non fa più il controllo dei campi?

    Dovrà essere la ins.php a farlo, e dovrai fargli stampare un errore se trova che $tuttook==false...

    Se ti aspettavi una cosa che funzioni come JS, mostrando un alert che segnala l'errore, hai le idee confuse: il php viene eseguito sul server, non sul pc dell'utente, quindi quello che succede è che la form viene comunque inviata al server, dove il tuo codice php dovrà creare una pagina di risposta che elenchi gli errori verificatisi; poi l'utente potrà cliccare su indietro per ritentare.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  9. #9
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da Shores
    Cosa significa che non fa più il controllo dei campi?

    Dovrà essere la ins.php a farlo, e dovrai fargli stampare un errore se trova che $tuttook==false...

    Se ti aspettavi una cosa che funzioni come JS, mostrando un alert che segnala l'errore, hai le idee confuse: il php viene eseguito sul server, non sul pc dell'utente, quindi quello che succede è che la form viene comunque inviata al server, dove il tuo codice php dovrà creare una pagina di risposta che elenchi gli errori verificatisi; poi l'utente potrà cliccare su indietro per ritentare.
    Io mi aspettavo che funzionasse come JS.

    Secondo te, è possibile lasciare la parte in Head in JS e modificare in php solo la parte del form? Potrebbe funzionare?

  10. #10
    Originariamente inviato da Braco
    Io mi aspettavo che funzionasse come JS.

    Secondo te, è possibile lasciare la parte in Head in JS e modificare in php solo la parte del form? Potrebbe funzionare?
    No, è tecnicamente impossibile che funzioni...

    Ribadisco, hai le idee un po' confuse; è impossibile fare si che uno script in php si comporti esattamente come uno in php, per un motivo molto semplice: il codice php viene eseguito sul server, e quindi viene TUTTO eseguito PRIMA CHE LA PAGINA WEB ARRIVI A TE.

    Quindi, la validazione delle form con php non può che funzionare in questo modo: tu clicchi su SUBMIT, la form viene inviata a ins.php, che verifica quello che gli è arrivato e mostra un messaggio di errore se non tutto è compilato correttamente, mentre invece salva i dati se tutto è ok.

    Nota che non sei affatto obbligato ad usare solo php o solo js: tu puoi benissimo continuare a lasciare la pagina della form come prima, con il suo js che avverte l'utente prima del submit, e aggiungere ad ins.php tutto il codice che abbiamo scrittto qui per essere sicuro che non si possa bypassare la protezione. Quel che succede è che fai due volte i controlli, una in JS per poter dire subito all'utente che ha sbagliato a inserire dati, l'altra in PHP per garantirti che non sia possibile oltrepassarla.

    La mia proposta è quindi questa: rimetti il js nella pagina della form come era prima, e concentriamoci invece sulla parte in ins.php.

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

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.