Come gestire un singolo checkbox

dionisium

Nuovo Utente
9 Ott 2006
8
1
1
Salve a tutti,
ho questo codice su 2 pagine:
PHP:
(quello evidenziato in rosso)

<script>

    $(document).ready(function (e){

        $("#frmContact").on('submit',(function(e){

            e.preventDefault();

            $("#mail-status").hide();

            $('#send-message').hide();

            $('#loader-icon').show();

            $.ajax({

                url: "contact.php",

                type: "POST",

                dataType:'json',

                data: {

                "name":$('input[name="name"]').val(),

                "surname":$('input[name="surname"]').val(),

                "address":$('input[name="address"]').val(),

                "city":$('input[name="city"]').val(),

                "phone":$('input[name="phone"]').val(),

                "phone2":$('input[name="phone2"]').val(),

                "name2":$('input[name="name2"]').val(),

                "surname2":$('input[name="surname2"]').val(),

                "email":$('input[name="email"]').val(),

                "content":$('textarea[name="content"]').val(),

                "consenso":$('checkbox[name="consenso"]').val(),

                "g-recaptcha-response":$('textarea[id="g-recaptcha-response"]').val()},               

                success: function(response){

                $("#mail-status").show();

                $('#loader-icon').hide();

                if(response.type == "error") {

                    $('#send-message').show();

                    $("#mail-status").attr("class","error");               

                } else if(response.type == "message"){

                    $('#send-message').hide();

                    $("#mail-status").attr("class","success");                           

                }

                $("#mail-status").html(response.text);   

                },

                error: function(){}

            });

        }));

    });

    </script>


.......



<input type="checkbox" id="consenso" name="consenso" value="consenso" <?php echo $consenso; ?> class="required consenso" aria-required="true" required>



.......


(seconda pagina)

(quello evidenziato in rosso)

$user_name      = filter_var($_POST["name"], FILTER_SANITIZE_STRING);

    $user_surname      = filter_var($_POST["surname"], FILTER_SANITIZE_STRING);

    $user_address      = filter_var($_POST["address"], FILTER_SANITIZE_STRING);

    $user_city      = filter_var($_POST["city"], FILTER_SANITIZE_STRING);

    $user_phone     = filter_var($_POST["phone"], FILTER_SANITIZE_STRING);

    $user_phone2     = filter_var($_POST["phone2"], FILTER_SANITIZE_STRING);

    $user_name2      = filter_var($_POST["name2"], FILTER_SANITIZE_STRING);

    $user_surname2      = filter_var($_POST["surname2"], FILTER_SANITIZE_STRING);

    $user_email     = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);

    $content   = filter_var($_POST["content"], FILTER_SANITIZE_STRING);

    $consenso = filter_var($_POST["consenso"], FILTER_SANITIZE_STRING);


.....


if(empty($user_name)) {

        $empty[] = "<b>Name</b>";       

    }

    if(empty($user_surname)) {

        $empty[] = "<b>Cognome</b>";       

    }

    if(empty($user_address)) {

        $empty[] = "<b>Indirizzo</b>";       

    }

    if(empty($user_city)) {

        $empty[] = "<b>Comune di residenza</b>";       

    }

    if(empty($user_phone)) {

        $empty[] = "<b>Telefono</b>";

    }

    if(empty($user_phone2)) {

        $empty[] = "<b>Cellulare</b>";

    }

    if(empty($user_name2)) {

        $empty[] = "<b>Nome partecipante</b>";       

    }

    if(empty($user_surname2)) {

        $empty[] = "<b>Cognome partecipante</b>";       

    }

    if(empty($user_email)) {

        $empty[] = "<b>Email</b>";

    }   

    if(empty($content)) {

        $empty[] = "<b>Richiesta</b>";

    }

    if (isset($_POST['consenso'])) {

        $consenso='checked="yes"';

        } else {

         $consenso='';

         }
La questione semplicemente è: il checkbox non funziona nella pagina dove viene compilato il form.
Grazie
 
Ultima modifica di un moderatore:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@dionisium

Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
PHP (2).png
quando posti del codice php, oppure la funzione codice dalla barra degli strument
box inserisci.png

Inoltre IMPORTANTE: Prima di creare una nuova discussione o di rispondere alle discussioni esistenti ricordati di leggere attentamente il Regolamento del Forum e l'eventuale regolamento specifico della sezione!

Grazie

Correggi i tuoi post
mi raccomando altrimenti sarò costretto a cancellare le discussioni
 

dionisium

Nuovo Utente
9 Ott 2006
8
1
1
@dionisium

Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
PHP (2).png
quando posti del codice php, oppure la funzione codice dalla barra degli strument
box inserisci.png

Inoltre IMPORTANTE: Prima di creare una nuova discussione o di rispondere alle discussioni esistenti ricordati di leggere attentamente il Regolamento del Forum e l'eventuale regolamento specifico della sezione!

Grazie

Correggi i tuoi post
mi raccomando altrimenti sarò costretto a cancellare le discussioni
Mi dispiace, che faccio adesso? rifaccio il post?
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
Allora adesso te lo correggo io ma tu devi leggere il regolamento e postare nel modo giusto per il futuro!
 
  • Like
Reactions: dionisium

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Comunque non ho compreso cosa non riesci a gestire.
Se ti riferisci alla variabile $consenso messa così, credo debba indicare che l'input sia checked o meno, ma vado a naso, dato che nno ti spieghi.
HTML:
<input type="checkbox" id="consenso" name="consenso" value="consenso" <?php echo $consenso; ?> class="required consenso" aria-required="true" required>
Se invece ti riferisci al fatto che se non clicco sul checkbox quando arrivi alla seconda pagina non trovi nessun riferimento nell'array POST, be è normale, tutti i campi di input tipo checkbox o radiobutton, riportano un valore solo se cliccati, altrimenti non esistono proprio.
Altro non so, almeno che tu non dica cos'è che non ti ritrovi.
 

dionisium

Nuovo Utente
9 Ott 2006
8
1
1
Ciao Marco, il problema è che il checkbox deve essere spuntato per far passare il form, ma il form passa lo stesso anche senza spunta.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Ciao Marco, il problema è che il checkbox deve essere spuntato per far passare il form, ma il form passa lo stesso anche senza spunta.
Ecco, quindi non è un problema PHP ma di javascript, ad ogni buon conto, dato che il javascript può essere facilmente disabilitato nei browser, il controllo va sempre fatto anche dopo.
Mi chiedevo in effetti che c'entrava tutto quel codice in jquery... sei nella sezione errata.
Comunque, nella sezione dedicata a jquery, prima di lanciare la richiesta ajax, metti un semplice controllo sul checkbox:
Codice:
if ( $( '#consenso' ).is( ':checked' ) )
{
    $.ajax( ---- eccetera ---- )
}
else
{
  alert( "Per poter inviare i dati,\ndevi dare il consenso" );
}
 

dionisium

Nuovo Utente
9 Ott 2006
8
1
1
Non riesco a trovare la posizione giusta in cui inserire il codice che mi hai dato.
L'ho messo come dici tu ma non funziona e non andrebbe bene comunque, perché il controllo del checkbox deve farlo dopo aver controllato tutti i campi e possibilmente prima del captcha.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Ma se il form non deve partire se il checkbox non è cliccato, tanto vale metterlo prima di ogni cosa non ti pare?
Inutile far fare lavoro in più se non necessario al computer.
Secondo me fai un lavoro enorme mal impostato, fai un controllo prima di inviare il form ma senza usare ajax, usa un plugin come validate ad esempio e poi una volta inviati i dati controlli dal backend in PHP se sono giusti.
E' un esempio, solo un esempio su cui lavorare.
Ti scarichi il plugin da: https://github.com/jquery-validation/jquery-validation/archive/1.19.2.zip ( dentro ci sono pure gli esempi, altro trovi alla pagina https://jqueryvalidation.org/ )
Poi imposti il file di controllo sotto il form ( o sopra a seconda di come ti gira :D )
In altre parole...
HTML:
....
</form>
<script src="jquery.com"></script>
<script src="jquery.validate.js"></script>
<script>
$( 'form' ).validate(
{
  rules:
  {
    'name': "required",
    'surname: "required",
    'address': "required",
    'email':
    {
       required: true,
       email: true
    },
     --- eccetera ---
    consenso: "required"
  },
  messages:
  {
    'name': "Manca il nome",
    'surname': "Manca il cognome",
    'address': "Manca l'indirizzo",
    'email': {
        required: "Devi inserire un indirizzo email",
        email: "Devi inserire un indirizzo email valido"
    },
    ---  eccetera ---
    consenso: "Devi accettare i termini del contratto per inviare il form"
   }
});
</script>
In questo modo eviti di usare ajax, il plugin metterà i messaggi di errore sotto ogni elemento non cliccato o lasciato vuoto e non farà partire il form fino a quando tutte le regole che hai impostato, non saranno completate.
Poi una volta partito col PHP potrai verificare se è tutto giusto, dato che non si è mai sicuri al 100% ;) compreso il recaptcha.
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Qualcuno conosce questo software per gestire le telecamere IP Cam e Videosorveglianza 0
E Come gestire al meglio le immagini legno grande formato Photoshop 0
L Interfaccia grafica per gestire sql server .NET Framework 1
R Plugin per Gestire videocorsi a pagamento WordPress 3
M Come gestire aggiornamenti e modifiche di sito live CMS (Content Management System) 0
S Gestire scelta dropdown con dati da Mysql PHP 2
Tommy03 Gestire dimensioni immagini PHP 4
MarcoGrazia Gestire lista campi vuoti in fase di autenticazione jQuery 1
elpirata Gestire permessi accesso alle pagine PHP 3
A [ASP.Net] Gestire il profilo ADMIN in un progetto ASP NET e pattern MVC ASP.NET 0
M [PHP] Come gestire gli utenti online PHP 9
M [php] Come gestire i tags PHP 1
svtmaster professionalità per gestire sito web Offerte e Richieste di Lavoro e/o Collaborazione 4
L [HTML] Gestire movimento GIF HTML e CSS 0
BestSellerMauroTop Software per gestire tanti profili e pagine, e farle crescere in modo autonomo! Annunci servizi di Social Media Marketing 0
W Gestire ccTalk o libreria c++ da php PHP 0
W [PHP] gestire una richiesta curl sul server PHP 0
W Piccolo sistema per gestire alcune periferiche, Java o altro linguaggio? Java 8
bubino8 [WordPress] Gestire SSL (https://) da .htaccess WordPress 9
C [WordPress] Creare e gestire un nuovo sito web WordPress 5
M Gestire ErrorDocument 404 mantenendo lo stesso url Web Server 0
S gestire una tabella mysql PHP 9
R gestire il ritorno di una variabile con success Ajax 2
S Gestire Motion Detection TP-LINK CAMERA NC200 IP Cam e Videosorveglianza 0
A [Javascript] [HTML] Gestire una pagina esterna con 2 iframe Javascript 4
webmachine [PHP] gestire rinnovi PHP 1
P Gestire accesso ad un file xml pubblico PHP 1
D Gestire diversi tipi di pagamento per tipologia di cliente E-Commerce 4
asevenx Cerco plugin per gestire appuntamenti con agenda e campi di selezione WordPress 4
matteoraggi Software per gestire migliaia di permament redirect? SEO e Posizionamento 0
K Gestire response con servlet remota Sviluppo app per Android 1
P Piccolo software per gestire gli utenti. Snippet PHP 5
F Gestire data e ora PHP 6
D Gestire firme digitali con PHP PHP 0
C [Facebook Autolike]Software per gestire più account, mandare like, creare stati, amicizie e altro.. Vendere e Acquistare pubblicita' online 0
D gestire commenti e risposte ... PHP 3
L Gestire password utenti registrati. Quale codifica? PHP 23
asevenx Gestire posizionamento voci sottomenu che si nascondono HTML e CSS 1
N Programma per gestire Cookies secondo disposizioni del Garante Privacy 3/6/2014 G.U. 126 Leggi, Normative e Fisco 0
A Gestire e modificare immagini Java 2
M Gestire la chiusura forzata. Sviluppo app per Android 1
L Sito con doppia lingua. Gestire il cambio PHP 4
felino Wordpress e QTranslate: come gestire i widget WordPress 11
IImanuII Gestire lingua su facebook con php PHP 18
mondrian Gestire un web server su una virtualbox Apache 12
L gestire array per radio-checkbox in ciclo while PHP 2
MarcoGrazia Gestire gruppi e categorie di link con PHP PHP 1
L Button per gestire JS in WebBrowser di VBNet .NET Framework 0
A gestire errori 400-401-403-404-500 con file htaccess PHP 0
L classe per gestire login in mysql PHP 1

Discussioni simili