Erreur notice avec return

Résolu
Smoking bird Messages postés 870 Date d'inscription   Statut Membre Dernière intervention   -  
Smoking bird Messages postés 870 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je voudrais que lorsqu'une condition est vérifiée, le script termine son exécution, sans utiliser die() mais plutôt l'instruction return.

Voici mon code:

foreach($_POST as $key=>$vars){
				if($key=='psw'){
					$objPSW=new psw(array( $_POST['psw'],$_POST['pswC']));
					list($psw,$pswC)=$objPSW->changed();
					if($pswC!==$psw){
						$profile=new profile();
						$profile->edit(element::verbose(array('psw','Le mot de passe ne correspond pas au code de confirmation')));
						return;
					}
					continue;
				}
				$name=$key;
				${$name}=string::inString($vars);
			}


Il se trouve que ce script me génère l'erreur suivante:
Notice: Undefined offset: 0 in /home/www/smoke/www/projects/secretExhibition/tools.php on line 75

Notice: Undefined offset: 1 in /home/www/smoke/www/projects/secretExhibition/tools.php on line 75

la ligne 75 correspondant précisément au return.

J'ai googlisé mon problème sans trouver la moindre réponse, et j'aimerais bien savoir à quoi cette notice est dûe.

Quelqu'un aurait il une idée?

Smoke

3 réponses

babou054 Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   11
 
J'ai un vague souvenir d'une erreur comme ça.
Je te promet donc pas THE solution mais une erreur comme ça c'est pas un problème d'indice dans des tableaux ?
0
Smoking bird Messages postés 870 Date d'inscription   Statut Membre Dernière intervention   58
 
pas sûr, mais c'est possible^^

en tous cas j'ai amélioré mon script, il n'était pas très correct, et l'erreur a disparu. Maintenant j'ai:

Notice: Undefined variable: errors in /home/www/smoke/www/projects/secretExhibition/tools.php on line 110

Fatal error: Cannot access empty property in /home/www/smoke/www/projects/secretExhibition/tools.php on line 110

il s'agit de la classe:

class verbose {
	public $errors;
	public $type;
	
	function __construct($errors,$type){
		$this->errors=$errors;
		$this->type=$type;
	}
	function display(){
		if($this->errors){
			switch($this->type){
				case 'liste':
					self::liste();
				break;
				case 'message':
					self::message();
				break;
				default:
					self::message();
				break;
			}
		}else{
			return;
		}
		
	}
	function liste(){
		foreach($this->errors as $key=>$obj){
			if( !$_POST[$key] ) $verbose.="<br />$obj est manquant.";
		}
		if( !$verbose ){
			return;
		}else{
			return $verbose;
		}
	}
	function message(){
		$verbose=$this->$errors;//ligne 110
		echo $verbose;
	}
}
0
Smoking bird Messages postés 870 Date d'inscription   Statut Membre Dernière intervention   58
 
$verbose=$this->$errors;//ligne 110

les deux dernières erreurs sont dues à la mauvaise construction ici: $this->$errors, remplacé par $this->error.
Ca fonctionne maintenant^^ merci babou de t'être intéressé à mon problème^^
0