Verifier si une fonction retourne TRUE dans une class

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Verifier si une fonction retourne TRUE dans une class

Re: Verifier si une fonction retourne TRUE dans une class

par Mazarini » 20 sept. 2011, 09:13

public function Verif($fields, $method=array(), $Message) {
    foreach($this->method as $m1=>$m2) {
         switch($m1)   {
                case 'min':
                    if(strlen($_POST[$this->fields]) < $m2) {
                            return FALSE;  
                    }
//                return TRUE;    à supprimer
                    break;
        }
     }
    return TRUE;    // à ajouter
}
Il ne faut retourner true qu'à la fin de la fonction, c'est à dire si aucune erreur n'a été détectée et non pas à la première saisie correcte. J'ai un doute sur $this->fields dont je ne sais pas d'ou il provient.

Re: Verifier si une fonction retourne TRUE dans une class

par rimie » 20 sept. 2011, 08:22

mais je pense que l'erreur vient surtout de cet appel à la méthode verif() en passant des attributs qui n'ont pas été définis :
if($this->Verif($this->fields, $this->method=array(), $this->Message)) 
ces attributs sont deja pre-definis, je les note pas afin de limiter mon code ici

@Mazarini : j'ai pas compris :(

Re: Verifier si une fonction retourne TRUE dans une class

par Ryle » 14 sept. 2011, 20:59

Il y a effectivement plusieurs problèmes de conception, la plupart signalées par xTG, mais je pense que l'erreur vient surtout de cet appel à la méthode verif() en passant des attributs qui n'ont pas été définis :
if($this->Verif($this->fields, $this->method=array(), $this->Message)) 
Je pense qu'il te faut suivre ton algorithme pas à pas pour voir ce qu'il fait, cela te permettra d'éliminer pas mal d'erreur...

Re: Verifier si une fonction retourne TRUE dans une class

par Mazarini » 14 sept. 2011, 09:54

Il faut déplacer le "return true" après la boucle foreach. La conséquence est que tu retourne false à la première erreur rencontrée (interuption du traitement à la première erreur) et en fin du contrôle (après foreach) tu retournes bien true.

Re: Verifier si une fonction retourne TRUE dans une class

par rimie » 14 sept. 2011, 08:48

desole xTG pour le retard, j'avais un probleme de connexion, est ce que tu peux me donner un exemple??

Re: Verifier si une fonction retourne TRUE dans une class

par xTG » 26 août 2011, 18:54

Ta fonction est caduque car quand tu fais le premier return tu quittes la boucle et donc tu sautes les autres champs.
Utilises plutôt un booléen que tu places à false dès que tu rencontres une erreur, et puis à la fin de la boucle tu return le booléen.
De plus ton switch n'a pas de condition default, il est à parier que ta fonction ne fait jamais rien et ne rentre pas dans la condition "min". ;)

Verifier si une fonction retourne TRUE dans une class

par rimie » 26 août 2011, 17:37

bonjour,

J'aimerais verifier ma fonction Verif si elle retourne TRUE, si oui la fonction Envoyer va afficher "Merci", le probleme du code c'est qu'il affiche toujours "Des erreurs ont ete trouve" meme si je remplis le champs nom:
<?php

class maClass
{
    
    public function Verif($fields, $method=array(), $Message){
         
         // code
         
            foreach($this->method as $m1=>$m2)
            {
                
                switch($m1)
            {
                case 'min':
                    if(strlen($_POST[$this->fields]) < $m2)
                        {
                            return FALSE;   
                        }
                    return TRUE;    
                    break;
            }
            }
            }

 	public function Envoyer() {
 
        if($this->Verif($this->fields, $this->method=array(), $this->Message))
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }
    
}


$v = new maClass();

    if(isset($_POST['send'])){
    
            
                $v->Verif('nom', array('min'=>5), 'Minimum de caracteres est 5');
                
                if($v->Envoyer()) {
               
                    echo 'Merci'; 
                        }
                        else
                        {
                        echo 'Des erreurs ont ete trouve<br>';
                        }
                    }
?>
merci a vous