Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : developpeur jpb Jireck 
Index du Forum » » Le coin des codeurs » » [Résolu] - Prob de class, help me
2 pages [ 1 | 2 ]
Auteur[Résolu] - Prob de class, help me
arnodu59
437      

arnodu59
  Posté : 28-01-2005 01:47

Hello all :)

Voilà, je suis dans le dev d'un site pour mon association, mais j'ai un p'tit prob
J'ai un formulaire de contact qui vérifie l'adresse email, mais certaine vérification plante avec l'erreur :
Fatal error: Call to a member function on a non-object in /home/servlan/www/mainfile.php on line 52

Voici un bout de code :


  1. if (strrpos($email,' ') > 0) { $erreur->email("espace", ""); }



  2. if (strlen($email) < 6) { $erreur->email("court", ""); }



  3. if (strlen($email) > 255) { $erreur->email("long", ""); }



  4. if (!ereg("@", $email)) { $erreur->email("arobase", ""); }



  5. if (preg_match_all("/([^a-zA-Z0-9_\@\.\-])/i", $email, $trouve)) { $erreur->email("interdit", implode(", ", $trouve[0])); }



  6. if (!preg_match("/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$/i", $email)) { $erreur->email("incorrect", ""); }



  7. list($compte, $domaine)=split("@", $email, 2);



  8. if (!checkdnsrr($domaine, "MX")) { $erreur->email("incorrect_domaine", "$domaine");}




La ligne 2 et 4 sont les lignes qui pose problème...
Voici donc la Class :



<?
class Erreur
{
function
email($type_erreur, $autre) {
switch (
$type_erreur) {
case
"espace":
tableau(
"L'email ne doit pas contenir d'espace", FALSE);
exit;
case
"court":
tableau(
"Adresse email trop courte", FALSE);
exit;
case
"long":
tableau(
"Adresse email trop longue", FALSE);
exit;
case
"arobase":
tableau(
"L'adresse email n'a pas d'arobase (@)", FALSE);
exit;
case
"interdit":
tableau(
"Caractère(s) interdit dans l'email ($autre)", FALSE);
exit;
case
"incorrect":
tableau(
"Adresse email incorrect", FALSE);
exit;
case
"incorrect_domaine":
tableau(
"Ce domaine ($autre) n'accepte pas les emails", FALSE);
exit;
}
}
}




Et là, j'avoue que je séche Si quelqu'un c'est d'ou peux venir le problème... Thanks you

Message édité par : arnodu59


  Profil  www  
snipe
2450       
 

snipe
  Posté : 28-01-2005 06:49

question con
tu a bien avant d apeler t $erreur->email mit une ligne qui fait :
$erreur = new Erreur();

parceque sinon c normal que sa merde :)

  Profil  E-mail  
arnodu59
437      

arnodu59
  Posté : 28-01-2005 15:45

Je te rassure, oui, elle est mise

  Profil  www  
zyegfryed
2308       
 

zyegfryed
  Posté : 28-01-2005 17:39

Elle sort d'où la fonction "tableau" ?

  Profil  
developpeur
24581       
 

developpeur
  Posté : 28-01-2005 22:44

chnage $erreur par $this peut-être

  Profil  E-mail  www  
zyegfryed
2308       
 

zyegfryed
  Posté : 28-01-2005 23:50

Dev, $this fait référence à l'instance de l'objet. Il est donc utilisé dans la définition de la classe, pas à l'extérieur

  Profil  
arnodu59
437      

arnodu59
  Posté : 29-01-2005 00:15

Citation : zyegfryed
Elle sort d'où la fonction "tableau" ?


La fonction tableau ce trouve dans le fichier mainfile.php


<?
// Tableau pour la gestion d'erreur
function tableau($message$sql=false) {
  unset(
$conf_edito);
  
$conf_edito 0;
  
$error 1;
  if (
$sql) {
    !include!(
"header.php");
  
}
  $mes = 
"<center><img src=\"images/stop.gif\" /><br /><br />";
  $mes .= 
"<font color=\"#FF0000\">$message</font>";
  if ($sql) 
{
    $mes .= 
"<br /><br />.: ".mysql_error()." :.";    
  
} else {
    $mes .= 
"<br /><br /><a href=\"!javascript!:history.back()\">Retour</a>";
  
}
  $mes .= 
"</center>";
  echo $mes;
  !include!(
"footer.php");
}
?>




Chose que je ne comprend pas...
La ligne :


<?
if (strrpos($email,' ') > 0) { $erreur->email("espace", ""); }
?>



Fonctionne très bien, alors que :



<?
if (strlen($email) < 6) { $erreur->email("court"""); }
?>



Ne fonctionne pas

Message édité par : arnodu59


  Profil  www  
arnodu59
437      

arnodu59
  Posté : 29-01-2005 03:04

XDR !!!

La vieille erreur sur laquel on perd plein de temps

un global $erreur;
a résolu mon problème

  Profil  www  
zyegfryed
2308       
 

zyegfryed
  Posté : 29-01-2005 11:45

Pas super propre tout ça...

  Profil  
arnodu59
437      

arnodu59
  Posté : 29-01-2005 14:44

Comment ça pas super propre ?



<?
// Vérifie la validité d'un email
function verifie_email($email){
  global 
$erreur;
  if (
strrpos($email,' ') > 0) { $erreur->email("espace", ""); }
  if (strlen($email) < 6) { $erreur->email("court", ""); }
  if (strlen($email) > 255) { $erreur->email("long", ""); }
  if (!ereg("@", $email)) { $erreur->email("arobase", ""); }
  if (preg_match_all("/([^a-zA-Z0-9_
\@\.\-])/i", $email, $trouve))
  {
    $erreur->email("interdit", implode(", ", $trouve[0]));  
  }
  if (!preg_match("/^([a-z0-9_]|
\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$/i", $email))
  {
    $erreur->email("incorrect", "");
  }
  list($compte, $domaine)=split("@", $email, 2);
  if (!checkdnsrr($domaine, "MX")){
    $erreur->email("incorrect_domaine", "$domaine");
  }
  return TRUE;
}
?>




Ca me parais propre... Non

  Profil  www  
zyegfryed
2308       
 

zyegfryed
  Posté : 29-01-2005 16:47

C'est surtout que je suis très chipotteur sur le code (avec le mien en premier).
Utiliser une variable globale pour garder une instance de classe n'est pas des plus propre, tout comme créer une classe qui fait appel à une fonction global dans tout son code...

  Profil  
developpeur
24581       
 

developpeur
  Posté : 30-01-2005 21:54

vraie .. ou créer un instance en global plsutot

  Profil  E-mail  www  
arnodu59
437      

arnodu59
  Posté : 31-01-2005 02:36

Bon, ben on vas demander comment le rendre propre alors

Citation : zyegfryed
Utiliser une variable globale pour garder une instance de classe n'est pas des plus propre


Là, je ne voie pas de solution A partir du moment ou c'est dans une fonction, comment puis-je faire ?

Citation : zyegfryed
tout comme créer une classe qui fait appel à une fonction global dans tout son code...


Là, ok, l'affaire est réglé

Merci d'avance

  Profil  www  
zyegfryed
2308       
 

zyegfryed
  Posté : 31-01-2005 09:50

Citation : arnodu59

Bon, ben on vas demander comment le rendre propre alors

Citation : zyegfryed
Utiliser une variable globale pour garder une instance de classe n'est pas des plus propre


Je crois qu'en PHP 4.* il n'est pas possible d'utiliser les variables statiques (mot clé static), cela à du apparaître avec la 5. Si je me trompe, utilises une variable statique donc.
Sinon, un passage de variable par paramètre d'une fonction est tout aussi efficace dans 99% des cas

  Profil  
developpeur
24581       
 

developpeur
  Posté : 31-01-2005 21:30

si les static existe en PHP 4 , NPDS s'en sert même (meta-lang par exemple)

  Profil  E-mail  www  
Aller à la page : [ 1 | 2 ]
Sauter à :

Temps : 0.0364 seconde(s)