IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

Vérifier les champs d'un formulaire


Sujet :

Web Perl

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour

    J'ai crée un formulaire avec pour le moment un champ texte.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #!/usr/bin/perl -w
     
    use strict;                                            
    use CGI qw(:standard);                                
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);   
     
    $CGI::POST_MAX = 1024 * 100;   # Max 100K posts
    $CGI::DISABLE_UPLOADS = 1;     # No upload
     
    # Creating a new CGI object
    my $cgi=new CGI;
     
    # Form variables
    my $name = $cgi->param('name');
    my $form_alert={ };
     
    # Operation
    if($cgi->param('name') eq '') {
          $form_alert='All fields must be completed';
     
    # Begin form
    print $cgi->start_form(-id=>'feedback',
                           -method=>'post',
                           -action=>'feedback.cgi');
     
    print $cgi->p('Please tell me your name:'."\n",
           $cgi->textfield(-name=>'name',
                               -id=>'name',
                               -type=>'text',
                              -size=>38))."\n";
     
    if ($form_alert != '') {
         print $form_alert;
    }
     
    print $cgi->p($cgi->submit(-id=>'button',
                               -name=>'send',
                               -value=>'Send Comment')."\n",
                      $cgi->reset(-id=>'button',
                                       -name=>'erase',
                                       -value=>'Clear Comment'))."\n";
     
    print $cgi->endform."\n";
     
    }
    # end operation
    Je voudrais avoir la possibilité de vérifier si le champ est vide. Si tel est le cas, j'affiche un message avant l'envoi du message par email.

    Pour le moment, je ne recherche pas d'infos sur l'envoi de mail mais simplement la vérification de champs

    Merci
    .Olivier

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $name = $cgi->param('name');
    if (defined $name) {
      => quelque chose dans le champ
    } else {
      => rien 
    }
    rien ne t'empeche de rajouter dans ta page html ou php un javascript qui teste les champs en plus.

  3. #3
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Merci djibril pour ta réponse.

    Aujourd'hui, je souhaite tester la validité d'une adresse email.

    Voilà mon premier essai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # Checking referer
        if ($refer ne 'http://www.oregnier.org/cgi-bin/feedback.cgi' &&
            $refer ne 'http://oregnier.org/cgi-bin/feedback.cgi') {
        	print $cgi->redirect(-uri=>'/');
        	}
     
        	# Checking fields
        	elsif (!$name || !$email || !$subject || !$message) {
        		$alert_form .='<div class="feedback_alert">All fields must be completed!</div>';
        	}
     
        	# Checking email format
        	elsif ($email !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-z][a-z]+$/i) {
        		$alert_form .='<div class="feedback_alert">Your email address is not valid!</div>';
    	}
    Si je teste, cela fonctionne, l'addresse email est bien vérifiée.

    Maintenant, le deuxième essai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    my $regex_mail=~ /^[\w\.\-]+\@[\w\.\-]+\.[a-z][a-z]+$/i;
     
        # Checking referer
        if ($refer ne 'http://www.oregnier.org/cgi-bin/feedback.cgi' &&
            $refer ne 'http://oregnier.org/cgi-bin/feedback.cgi') {
        	print $cgi->redirect(-uri=>'/');
        	}
        	# Checking fields
        	elsif (!$name || !$email || !$subject || !$message) {
        		$alert_form .='<div class="feedback_alert">All fields must be completed!</div>';
        	}
     
        	# Checking email format
        	elsif ($email != $regex_mail) {
        		$alert_form .='<div class="feedback_alert">Your email address is not valid!</div>';
    	}
    Etrange mais j'obtiens une erreur 500

    Qu'en pensez-vous ?

    Merci
    .Olivier

  4. #4
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Je n'avance pas beaucoup avec le regex_mail

    J'ai testé le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    my $email=$cgi->param('email');
     
    my $regex_mail=~ /^[^@]+@([-\w]+\.)+[A-Za-z]{2,4}$/;
     
            ..... (code précédent) 
     
        	elsif ($email !~ /$regex_mail/) {
        		$alert_form .='<div class="feedback_alert">Your email address is not valid!</div>';
    	}
    Mais rien à faire, même avec l'adresse email correctement orthographiée, il m'indique qu'elle n'est pas valide
    .Olivier

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Peut-être serait-il plus judicieux d'utiliser un module conçu pour cela, comme Email::Address, dans le même style je te conseille de jeter un coup d'oeil à Regexp::Common, toujours pratique pour vérifier la validité d'une entrée.
    Si tu veux faire un truc vraiment solide et complexe, Data::FormValidator est très bon dans son domaine.

    --
    Jedaï

    PS : La raison pour laquelle ton code ne marche pas est probablement parce que tu utilises @ au lieu de \@ (@... est interpolé comme étant un tableau...), je n'ai pas vérifié le reste, mais ça suffit pour faire échouer ta regexp.

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    sinon voici un sous protgramme que j'utilise souvent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    sub test_email :Export( :DEFAULT ) {
      unless( scalar(@_) == 1) {
         my $usage = <<'FIN_USAGE';
         Usage: test_email($email);
    FIN_USAGE
         croak($usage);
      }  
      my ($email) = @_;
      use Mail::CheckUser qw(check_email last_check);
      if(check_email($email)) {
          return;
      } 
      else {
          my $erreur = "E-mail address <$email> isn't valid: ".
          last_check()->{reason}. "\n";
          return $erreur;
     }
    }

  7. #7
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Merci à tous les deux pour vos infos.

    J'ai trouvé la solution avec le regex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    elsif ($email !~ /^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i)
    {
    $form_alert='<div class="feedback_alert">Your email address is invalid!</div>';
    }
    Merki
    .Olivier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérifier les champs d'un formulaire
    Par linouchka dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 27/05/2014, 21h18
  2. Vérifier les champs d'un formulaire
    Par paikan06 dans le forum Langage
    Réponses: 4
    Dernier message: 18/05/2012, 18h25
  3. Vérifier les champs d'un formulaire
    Par isitien dans le forum Langage
    Réponses: 18
    Dernier message: 16/08/2011, 10h24
  4. Réponses: 4
    Dernier message: 14/11/2009, 17h27
  5. [Formulaire] vérifier les champs d'un formulaire
    Par mariafan dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 28/12/2006, 19h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo