PHP Fonction PHP pour MaNGOS // MaNGOS
Bonjour à tous.


Je vous ai codé plusieurs fonctions PHP aujourd'hui :
• Fonction de Logging :
Vous voulez que quand quelqu'un fait une action précise sur votre site, ce soir noté dans un fichier, cette fonction est la pour vous. L'utilisation est commentée dans le fichier.

• Fonction de Remote Access :
Ces fonctions sont assez commenté dans le fichier.


Pour les avoir :
Copié collé depuis ici :
RA Functions :
Code PHP :
<?php
// Functions file by Mash6
// All these functions are fully functional even if the player is already connected

// Remplacer "NomDeCompte" par un nom de comte MJ de niveau 3 minimum.
// Remplacer "MotDePasse" par le mot de passe de ces compte MJ.
//Remote Access
$ra = Array(
    
$ra_host="127.0.0.1",
    
$ra_port="3443"
);

// Utilisé pour envoyer un message simple sans item ou argent dans la boite aux lettres d'un joueur.
function sendmail($playername$subject$text)
    
// English Example : sendmail(Charactername, "Subject", "Message Body"); 
    // French Example : sendmail(Nom Du Personnage, "Sujet", "Corps du Message");
    
{
    global 
$ra;
    
    
$fsk = @fsockopen($ra['ra_host'],$ra['ra_port']) or die ('Erreur lors de la connexion avec le serveur Remote Access');

    
fwrite($fsk,"NomDeCompte\n");
    
fread($fsk,64);
    echo (
"<br />");
    
    
fwrite($fsk,"MotDePasse\n");
    
fread($fsk,64);
    echo (
"<br />");

    
fwrite($fsk,"send mail ".$playername." \"".$subject."\" \"".$text."\"\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');

    
fwrite($fsk,"quit\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');
}


// Utilisé pour envoyer une annonce systeme à un joueur précis.
function sendmessage($playername$message)  
    
// English Example : sendmessage(Charactername, "Message"); 
    // French Example : sendmessage(Nom Du Perso, "Message");
    
{
    global 
$ra;
    
    
$fsk = @fsockopen($ra['ra_host'],$ra['ra_port']) or die ('Erreur lors de la connexion avec le serveur Remote Access');

    
fwrite($fsk,"NomDeCompte\n");
    
fread($fsk,64);
    echo (
"<br />");
    
    
fwrite($fsk,"MotDePasse\n");
    
fread($fsk,64);
    echo (
"<br />");

    
fwrite($fsk,"send message ".$playername." \"".$message."\"\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');

    
fwrite($fsk,"quit\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');
}


// Utilisé pour supprimer une requête pour un joueur.
function delticket($ticketname
    
// English Example : delticket(Charactername); 
    // French Example : delticket(Nom Du Perso);
    
{
    global 
$ra;
    
    
$fsk = @fsockopen($ra['ra_host'],$ra['ra_port']) or die ('Erreur lors de la connexion avec le serveur Remote Access');

    
fwrite($fsk,"NomDeCompte\n");
    
fread($fsk,64);
    echo (
"<br />");
    
    
fwrite($fsk,"MotDePasse\n");
    
fread($fsk,64);
    echo (
"<br />");

    
fwrite($fsk,"delticket ".$ticketname."\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');
    
    
fwrite($fsk,"quit\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');
    }
    
    
// Utilisé pour envoyer un message avec un objet dans la boite aux lettres d'un joueur.
function senditem($playername$subject$text$itemid$itemcount
    
// English Example : sendmail(Charactername, "Subject", "Message Body", 10321, 1); 
    // French Example : sendmail(Nom du Perso, "Suject", "Corps du Message", 10321, 1);
    
{
    global 
$ra;
    
    
$fsk = @fsockopen($ra['ra_host'],$ra['ra_port']) or die ('Erreur lors de la connexion avec le serveur Remote Access');

    
fwrite($fsk,"NomDeCompte\n");
    
fread($fsk,64);
    echo (
"<br />");
    
    
fwrite($fsk,"MotDePasse\n");
    
fread($fsk,64);
    echo (
"<br />");

    
fwrite($fsk,"send item ".$playername." \"".$subject."\" \"".$text."\" ".$itemid." ".$itemcount."\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');
    
    
fwrite($fsk,"quit\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');
    }
// Utilisé pour redemarrer le serveur.
function serverestart($time
    
// English Example : serverestart(TimeBeforeRestart);
    // French Example : serverestart(TempsAvantRestart);
    
{
    global 
$ra;
    
    
$fsk = @fsockopen($ra['ra_host'],$ra['ra_port']) or die ('Erreur lors de la connexion avec le serveur Remote Access');

    
fwrite($fsk,"NomDeCompte\n");
    
fread($fsk,64);
    echo (
"<br />");
    
    
fwrite($fsk,"MotDePasse\n");
    
fread($fsk,64);
    echo (
"<br />");

    
fwrite($fsk,"server restart ".$time."\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');
    
    
fwrite($fsk,"quit\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');
    }
// Utilisé pour répondre à une requête pour un joueur.
function ticketrespond($playername$respond)
    
// English Example : ticketrespond(Charactername, "Response"); 
    // French Example : ticketrespond(Nom Du Perso, "Réponse");
    
{
    global 
$ra;
    
    
$fsk = @fsockopen($ra['ra_host'],$ra['ra_port']) or die ('Erreur lors de la connexion avec le serveur Remote Access');

    
fwrite($fsk,"NomDeCompte\n");
    
fread($fsk,64);
    echo (
"<br />");
    
    
fwrite($fsk,"MotDePasse\n");
    
fread($fsk,64);
    echo (
"<br />");

    
fwrite($fsk,"ticket respond ".$playername." ".$respond."\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');

    
fwrite($fsk,"quit\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');
}
// Utilisé pour faire une annonce système.
function announce($message
    
// Universal Example : announce("Message"); 
    
{
    global 
$ra;
    
    
$fsk = @fsockopen($ra['ra_host'],$ra['ra_port']) or die ('Erreur lors de la connexion avec le serveur Remote Access');

    
fwrite($fsk,"NomDeCompte\n");
    
fread($fsk,64);
    echo (
"<br />");
    
    
fwrite($fsk,"MotDePasse\n");
    
fread($fsk,64);
    echo (
"<br />");

    
fwrite($fsk,"announce ".$message."\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');

    
fwrite($fsk,"quit\n");
    echo 
fread($fsk,1024);
    echo (
'<br />');
}
?>
Log Functions :
Code PHP :
<?php
// Utilisé pour logger des fonctions du site
function sitelog($message)
    
// English Example : sitelog(Text to be logged);
    // French Example : sitelog(Texte à logger);
    
{
    
$date date("d-m-Y H:i");
    
chdir('/var/www/logdir'); // [English] : Replace with your log directory [French] : Remplacer avec le dossier de logs pour le site
    
$logfilepreviouscontent file_get_contents('Site.log');
    
$logfile "Site.log";
    
$logopennedfile fopen($logfile,"w");
    
fwrite($logopennedfile,"".$logfilepreviouscontent."\n".$date." ".$message."\n");
    
fclose($logopennedfile);
}
?>
Telnet est largement dépassé. De plus, les données transitent en clair, ce qui constitue une énorme faille de sécurité.
Pourquoi ne pas utiliser SOAP qui est beaucoup plus simple à mettre en place, prévu pour ce genre de choses, sécurisé et léger ?
Pour finir, tu oublies de close les sockets, ce qui risque de créer un manque de ressources, et des failles de sécurité.
Pas taper Langue

je l'utilise et ça marche, si quelqu'un souhaite le modifier, libre à lui.
Trinitycore propose une API SOAP....
C'est même moi qui l'ai implémentée dans trinitycore.
Mais là, on parle de MaNGOS.
Lol c’est toi qui a fait la classe TCSoap.cpp ?
Regarde dans les historiques de commit de Trinity et dans le forum officiel.

Retourner en haut Accueil