begin process at 2012 05 28 23:07:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Autre

 > 

Fatal error: Call to undefined method Membres::mailactivation()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fatal error: Call to undefined method Membres::mailactivation()

vendredi 7 octobre 2011 à 21:51:37 | Fatal error: Call to undefined method Membres::mailactivation()

zzzzzz

Membre Club
Bonjour,

Je débute en POO. J'ai un problème avec mon code j'ai :

Fatal error: Call to undefined method Membres::mailactivation()

Mon code est le suivant :

class Membres {
function register(...) {
...
$this->mailactivation($emailcode);
}
function mailactivation($cle) {
...
$this->sendmail('noreply@site.com','site.com',$mail,'site.com : Activation de votre compte',$Mailtexte);
}
}

Je ne comprends pas, es-ce que l'emploi de $this est faux ?

Merci d'avance pour votre aide
samedi 8 octobre 2011 à 11:30:06 | Re : Fatal error: Call to undefined method Membres::mailactivation()

cod57

bonjour

utilise un constructeur ...

Code PHP :
<?php
class Membres{ 

private $toto;

function __construct($m){
$this->toto[0] = $m[0]; /*titi*/
$this->toto[1] = $m[1]; /*quesaisje*/
$this->register($this->toto[0]);
}


function register($t) { 
$this->mailactivation($this->toto[1]); 
} 

function mailactivation($cle) { 

$mail='toto@free.fr';
$Mailtexte='te';
//echo $this->sendmail('noreply@site.com','site.com',$mail,'site.com : Activation de votre compte',$Mailtexte); 
echo 'noreply@site.com','site.com',$mail,'site.com : Activation de votre compte',$Mailtexte; 
} 

} 



$emailcode='quesaisje';
$membre=array('titi',$emailcode);
$test = new Membres($membre);
?>



Bonne programmation !
dimanche 9 octobre 2011 à 00:48:27 | Re : Fatal error: Call to undefined method Membres::mailactivation()

zzzzzz

Membre Club
Salut,

Merci pour ta réponse ;) Mais je comprend pas plusieurs points :

Je me retrouve donc avec :


function __construct($password,$email,$pseudo,$cle){
$this->password = $password;
$this->email = $email;
$this->pseudo = $pseudo;
$this->Register($this->password,$this->email,$this->pseudo);
$this->login($this->pseudo,$this->password);
$this->mailactivation($this->cle);
}

function register($password,$email,$pseudo) {
$password = strtolower($password);
$email = strtolower($email);
$pseudo = strtolower($pseudo);

$password = crypt($password,'CRYPT_SHA512');
$pseudo = Secure::Crypter($pseudo,$this->Cle);
$email = Secure::Crypter($email,$this->Cle);
$emailcode = Secure::coderand(19);
$ip = crypt($_SERVER['REMOTE_ADDR'],'CRYPT_SHA512');
$reponse = crypt($reponse,'CRYPT_SHA512');
$Requete="INSERT INTO table( pseudo, password, email , emailcode , ip ) VALUES ('$pseudo', '$password', '$email', '$emailcode', '$ip');";
echo $Requete;
Mysql::MyQuery($Requete);
$this->mailactivation($cle);
}

Ja'i toujours malgré cela : Fatal error: Call to undefined function mailactivation()

Merci d'avance pour votre aide.
dimanche 9 octobre 2011 à 10:51:59 | Re : Fatal error: Call to undefined method Membres::mailactivation()

cod57

bonjour

comme il me manque une partie du code de la class j'ai mis md5 tu comprendras la suite ...

Code PHP :
<?php
class Membres2{

private $password;
private $email;
private $pseudo;
private $cle;


function __construct($password,$email,$pseudo,$cle){ 

$this->password = $password; 
$this->email = $email; 
$this->pseudo = $pseudo; 
$this->cle=$this->Register($this->password,$this->email,$this->pseudo); 

/*c'est deux methodes tu peux les appeler depuis register
si register ok 
//$this->login($this->pseudo,$this->password); 
//$this->mailactivation($this->cle); 
*/
} 

function Register($password,$email,$pseudo) { 
echo $password = strtolower($password); 
echo $email = strtolower($email); 
echo $pseudo = strtolower($pseudo); 
echo $password = md5($password); 
/*
$pseudo = Secure::Crypter($pseudo,$this->Cle); 
$email = Secure::Crypter($email,$this->Cle); 
$emailcode = Secure::coderand(19); 
$ip = crypt($_SERVER['REMOTE_ADDR'],'CRYPT_SHA512'); 
$reponse = crypt($reponse,'CRYPT_SHA512'); 
$Requete="INSERT INTO table( pseudo, password, email , emailcode , ip ) VALUES ('$pseudo', '$password', '$email', '$emailcode', '$ip');"; 
echo $Requete; 
if(Mysql::MyQuery($Requete)){ 
$this->mailactivation($cle); 
$this->login($this->pseudo,$this->password); 
}else{
}
*/
}

}


//$membre=array('titi','titi@free.fr','toto','123');
$test2 = new Membres2('titi','titi@free.fr','toto','123');
?>



Bonne programmation !
dimanche 9 octobre 2011 à 16:46:38 | Re : Fatal error: Call to undefined method Membres::mailactivation()

zzzzzz

Membre Club
Salut et encore merci pour ton aide,

Si je comprends bien pour la method construct, il faut definir toutes les variables et methodes utilisé dans le classe.

Puis creer un objet de type :

$users = new Membres($_POST['password'],$_POST['email'],$_POST['pseudo']);

Puis utiliser la methode directement qui aura directement les variables nécéssaire.

$users->Register;

Par contre je ne vois pas vraiment comment organiser ca pour le reste : j'ai une methode sendmail dans la classe Membre :


function sendmail($FromE,$FromN,$To,$Sujet,$Mes)
{
//message en mode texte (affiché uniquement si l'affichage en HTML n'est pas possible)
$msg_texte = preg_replace("/\<a href=\"http\:\/\/(.*?)\>(.*?)\<\/a\>/","\\2",$Mes);
$msg_texte = preg_replace("/\<br\>","\\n",$msg_texte);
//message au format HTML
$msg_html = $Mes;
//on va se servir de la chaîne limite pour délimiter les différentes zones du message
$limite = "-----=" . md5( uniqid ( rand() ) );
$headers = "From: \"".$FromN."\"<".$FromE.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$limite\"";
$message = "This is a multi-part message in MIME format.\n\n";
$message .= "--" . $limite . "\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $msg_texte;
$message .= "\n\n";
$message .= "--" . $limite . "\n";
$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $msg_html;
$message .= "\n\n";
$message .= "--" . $limite . "--\n";
mail($To, $Sujet, $message, $headers);
}

Peut être devrai-je regrouper mailactivation et sendmail dans une classe mail ? J'ai toujours l'erreur comme quoi il ne retrouve pas ma methode mailactivation. Serai-ce mieux?

Merci d'avance.
dimanche 9 octobre 2011 à 17:20:22 | Re : Fatal error: Call to undefined method Membres::mailactivation()

cod57

le constructeur est toujours appelé par defaut
soi il est vide soit tu y mets des variables

Code PHP :
<?php
class Affichage{

private $mavarprivee;
public $resultat;
public $resultat2;

  function __construct($valeur){
  $this->mavarprivee=$valeur;
  /*j'appelle affichera*/
  $this->affichera($this->mavarprivee);
  }
    
  public function affichera($affichemoi){
  $this->resultat=$affichemoi;
  /*j'appelle ecritGrand*/
  $this->ecritGrand($this->resultat);
  }
  
  public function ecritGrand($affichemoi){
  $this->resultat2=strtoupper($affichemoi);
  }
  

}

$ex='toto';
$test = new Affichage($ex);
echo $test->resultat;
echo $test->resultat2;
echo $test->mavar;/*ici privee pas accessible donc une erreur Notice: Undefined property: Affichage::$mavar in C:\wamp\www\cod57\activate\ex.php on line 31*/
?>




Bonne programmation !
dimanche 9 octobre 2011 à 18:41:14 | Re : Fatal error: Call to undefined method Membres::mailactivation()

zzzzzz

Membre Club
Merci pour ton aide encore. Je préfère laissé de coté les constructeurs pour le moment car j'ai vraiment du mal à tout assimilé, tout structuré.

J'ai essayé de faire une classe propre à Mail... Regarde cette classe toute simple affiche :
Fatal error: Call to undefined method Membres::sendmail() in /home/site/public_html/site/class/Mail.php on line 31

<?php
class Mail {
function sendmail($FromE,$FromN,$To,$Sujet,$Mes)
{
//message en mode texte (affiché uniquement si l'affichage en HTML n'est pas possible)
$msg_texte = preg_replace("/\<a href=\"http\:\/\/(.*?)\>(.*?)\<\/a\>/","\\2",$Mes);
$msg_texte = preg_replace("/\<br\>","\\n",$msg_texte);
//message au format HTML
$msg_html = $Mes;
//on va se servir de la chaîne limite pour délimiter les différentes zones du message
$limite = "-----=" . md5( uniqid ( rand() ) );
$headers = "From: \"".$FromN."\"<".$FromE.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$limite\"";
$message = "This is a multi-part message in MIME format.\n\n";
$message .= "--" . $limite . "\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $msg_texte;
$message .= "\n\n";
$message .= "--" . $limite . "\n";
$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $msg_html;
$message .= "\n\n";
$message .= "--" . $limite . "--\n";
mail($To, $Sujet, $message, $headers);
}

function mailactivation($cle,$To) {
$this->sendmail('noreply@site.com','Site.com',$To,'Site.com : Activation de votre compte',"Bienvenue,<br/><br/>Vous venez de rejoindre la grande famille site<a href=\"http://www.site.com\">www.site.com</a>.<br/><br/>Pour activier votre compte cliquez sur le lien suivant : http://www.site.com/register.php?varcle=$cle<br />");
}
}
?>

Pourtant $this-> est bien utilisé... Je pense que même avec un constructeur cela ne marche pas,j'ai essayé pour la class membre et no resultat

Merci d'avance pour ton aide.
dimanche 9 octobre 2011 à 19:15:16 | Re : Fatal error: Call to undefined method Membres::mailactivation()

cod57

Réponse acceptée !
tu es pas loin ...
essaye

Code PHP :
<?php 
class Mail { 
  
  public function sendmail($FromE,$FromN,$To,$Sujet,$Mes){ 
  //message en mode texte (affiché uniquement si l'affichage en HTML n'est pas possible) 
  $msg_texte = preg_replace("/\<a href=\"http\:\/\/(.*?)\>(.*?)\<\/a\>/","\\2",$Mes); 
  $msg_texte = preg_replace("/\<br\>/","\\n",$msg_texte); 
  //message au format HTML 
  $msg_html = $Mes; 
  //on va se servir de la chaîne limite pour délimiter les différentes zones du message 
  $limite = "-----=" . md5( uniqid ( rand() ) ); 
  $headers = "From: \"".$FromN."\"<".$FromE.">\n"; 
  $headers .= "MIME-Version: 1.0\n"; 
  $headers .= "Content-Type: multipart/alternative; boundary=\"$limite\""; 
  $message = "This is a multi-part message in MIME format.\n\n"; 
  $message .= "--" . $limite . "\n"; 
  $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
  $message .= "Content-Transfer-Encoding: 8bit\n\n"; 
  $message .= $msg_texte; 
  $message .= "\n\n"; 
  $message .= "--" . $limite . "\n"; 
  $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; 
  $message .= "Content-Transfer-Encoding: 8bit\n\n"; 
  $message .= $msg_html; 
  $message .= "\n\n"; 
  $message .= "--" . $limite . "--\n"; 
  mail($To,$Sujet,$message,$headers); 
  } 

  public function mailactivation($cle,$To) { 
   
    $this->sendmail('noreply@site.com',
    'Site.com',
    $To,
    'Site.com : Activation de votre compte',
    "Bienvenue,<br/><br/>Vous venez de rejoindre la grande famille site

    <a href=\"http://www.site.com\">www.site.com</a>.

    <br/><br/>Pour activier votre compte cliquez sur le lien suivant :
    http://www.site.com/register.php?varcle=$cle<br />"
    ); 
  
  } 
}


$envoi = new Mail;
$envoi->mailactivation('123','unmail@free.fr'); 
?> 


Bonne programmation !
lundi 10 octobre 2011 à 19:07:48 | Re : Fatal error: Call to undefined method Membres::mailactivation()

zzzzzz

Membre Club
Salut!

Merci pour ta réponse.

Alors j'ai bien ajouté les public (j'y avais pas pensé) MAIS toujours la même erreur.

Fatal error: Call to undefined method Membres::sendmail() in /home/site/public_html/site/class/Mail.php on line 31
..

Cependant j'ai essayé de creer un nouveau objet Mail et là ca marche! J'aimerai quand même pouvoir appeler une méthode depuis une autre methode dans une même classe ...

Une idée? Ca doit te désépérer à la longue
lundi 10 octobre 2011 à 21:33:21 | Re : Fatal error: Call to undefined method Membres::mailactivation()

zzzzzz

Membre Club
Réponse acceptée !
Trouvé... Il fallait utiliser self::sendmail(''); Pourquoi ?! Je tiens à te remercier pour ton support dans tous les cas.


Cette discussion est classée dans : error, membres, call, fatal, mailactivation


Répondre à ce message

Sujets en rapport avec ce message

Fatal error: Call to undefined function: mysql_connect() [ par slashf ] bonjour à tous, voilà mes scriptes testé en local(easy PHP) marche normal, mais une fois mis sur mon serveur voici le message d'erreur qui s'affiche, Fatal error: Call to undefined function: fctaffichimage() [ par boubeuch1 ] Bonjour, Je souhaite afficher des images dans une galerie photo. Toutefois, celle-ci à des dimensions restreintes largeur=470px et hauteur 500px. voi Fatal error: Call to undefined function mysql_connect() [ par LaTatadu91 ] Bonjour, j'ai du reinstaller sur un nouveau pc une version de wamp avec php5.3, et depuis lorsque je désire accèder à ma base de données j'ai ce mess Fatal error: Call to undefined function mysqli_connect() [ par rinuom99 ] je viens d'installer Apache2.0.64 avec php5.2.17 et mysql5.1.16 jusqu'à là tous va bien. le problème j'ai une petite application développée sous easyp fatal error call to undefined function dl() [ par badsha ] bonjour d'ou vient cette error je suis sous linux et j'essaye de charger une librairie.so. dans php.ini j'ai enable_dl=Off je l'ai mis sur on et rie Fatal error: Using $this when not in object context in... [ par Achtzehn ] Bonjour, j'ai un problème avec un fichier PHP je vais faire bref : mon index.php : pseudo = Membre::setPseudo('Vlad'); mon /class/Membre.class. Fatal Error [ par vargas ] Bonjour à tous et bonne année je suis entraine de coder une application en php et j'ai un erreur de syntaxe je crois voici mon code: [code=php] ?noP Fatal error: Call to a member function rollBack [ par phalu ] s'il vous plait qui poura m'aider car je n'arrive pas a installer un script en local avec easyphp Failed: could not find driver "Fatal error: Call t Fatal error: Can't use function return value in write context [ par WrestlingMan ] Bonjour !! J'espère que vous pourrez m'aider !! ^^ Je réalise actuellement un formulaire qui, lorsque l'on saisie la ou les premières lettres d'un nom Fatal error: Class 'JText' not found [ par moumourourou ] salut je travail un site avec joomla ou j'ai travaillé une composante à l'aide d'ajax.dans les fichiers ajax que j'appelle j'ai quelque ligne ou j'uti


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales