Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

Systèmes & Thèmes pour MT2-CMS


Satir

Messages recommandés

Centre de Téléchargement

Hidden Content

    Give reaction to this post to see the hidden content.
( Interne )

 

Pack de Thèmes

Révélation

Voici plusieurs thèmes, ils n'ont pas tous des aperçus :

.jpg
.jpg
.png

MT2CMS - Système de News

Révélation

Bonjour,

Vous allez ici apprendre à installer un système de news complet pour MT2-CMS.

1. Les fonctionnalités

Révélation

Afficher

  • Affichage des news sur la page d'accueil (nombre paramétrable).
  • En cliquant sur le titre on accède à un permalien qui conduit à l'affichage de l'article et de tous ses commentaires avec un champs en bas de page pour en poster un nouveau.
  • Commentaires sur les news (possibilité d'autoriser ou non pour chaque news).
  • Page d'affichage de toutes les news avec un système de pagination (même nombre par page que pour l'index).
  • Autoriser ou non à modifier le pseudo de celui qui poste la news (dans le champs auteur).
  • Page de gestion des news avec les fonctions habituelles : modifier, supprimer, ajouter.

 

2. Installation

Révélation

Afficher

Lien de l'archive : ICI

 

Liste des fichiers présents :

- accueil.php

- accueil.tpl

- news.php

- news.tpl

- config_news.php

- config_news.tpl

 

Installation des tables dans la base site :

CREATE TABLE `conf_news` (
 `nb_par_page` int(11) NOT NULL DEFAULT '5',
 `change_auteur` smallint(6) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `conf_news` VALUES ('5', '0');
 
CREATE TABLE `coms` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `id_new` int(10) DEFAULT NULL,
 `auteur` varchar(25) DEFAULT NULL,
 `message` text,
 `date` datetime DEFAULT NULL,
 `ip` varchar(16) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
 
CREATE TABLE `news` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `titre` varchar(100) DEFAULT NULL,
 `auteur` varchar(25) DEFAULT NULL,
 `message` text,
 `com` tinyint(3) DEFAULT NULL,
 `date` datetime DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
 

 

Vous pouvez copier/coller ce tutoriel mais vous avez l'obligation de citer l'auteur de manière visible.

 

MT2CMS - Votes Rémunérés

Révélation

Bonsoir,

Dans ce tutoriel, vous apprendrez comment installer une page de vote rémunéré sur votre site MT2-CMS. Certains fichiers sont déjà présents sur le forum mais ils sont incomplets et en manque de certaines fonctionnalités intéressantes.

Je prends pour base le CMS de Jigsaw (il est donc fait pour être utilisé avec ce dernier).

Fonctionnalités:

Fonctionnalités

1. Page de vote

- Les pages de votes s'ouvrent dans une popup quand on clique sur les images.

- Lorsque l'on passe sa souris sur ces dernières, les gains (+ monnaie) et le temps d'attente apparaissent.

- Sécurisation par IP et par compte.

- Possibilité de voter sans compte.

- Chaque compte à son nombre de votes enregistré (pour un classement par exemple).

- Modification facile du design via la page tpl.

 

2. Page de configuration

- Ajout de liens de vote illimité (lien, gain, attente, monnaie, image)

- Modification des liens déjà présents

- Suppression des liens déjà présents

 

Tutoriel:

Afficher le tutoriel

 

Télécharger cette archive : 

Hidden Content

    Give reaction to this post to see the hidden content.

Mot de passe : amV0YWltZWh5c3Rvcw==

 

Une fois décompressés, il vous faut envoyer les 4 fichiers dans 4 endroits différents :

- vote.php : Envoyer dans includes-public

- config_vote.php : Envoyer dans includes-account

- vote.tpl : Envoyer dans templates/default/fr/public/

- config_vote.tpl : templates/default/fr/account/

 

En passant, j'ai essayé de commenter le code des pages pour permettre à ceux qui s'intéressent au code de s'y retrouver et de mieux comprendre comment ça marche.

 

Une fois que tout cela est fait, passez à votre fichier index.php qui se trouve à la racine de votre site. Dans les environs des lignes 250, vous devriez trouver quelque chose de ce genre :

 

$public_include = array(
"accueil" => "includes-public/accueil.php",
"connexion" => "includes-public/connexion.php",
"inscription" => "includes-public/inscription.php",
"classement" => "includes-public/classement1.php",
"download" => "includes-public/download.php",
"medias" => "includes-public/gallerie.php",
"acc_cred" => "includes-public/acc_cred.php",
"support" => "includes-account/support.php",
"lang" => "includes-public/lang.php");
 

 

 

Rajoutez notre page "vote.php" comme ceci :

 

"vote" => "includes-public/vote.php",
 

 

 

ce qui nous donne :

 

$public_include = array(
"accueil" => "includes-public/accueil.php",
"connexion" => "includes-public/connexion.php",
"inscription" => "includes-public/inscription.php",
"classement" => "includes-public/classement1.php",
"download" => "includes-public/download.php",
"medias" => "includes-public/gallerie.php",
"acc_cred" => "includes-public/acc_cred.php",
"support" => "includes-account/support.php",
"vote" => "includes-public/vote.php",
"lang" => "includes-public/lang.php");
 

 

 

Descendez un petit peu dans la page et trouvez :

 

$account_include = array(
"compte" => "includes-account/compte1.php",
"ajout_gm" => "includes-account/ajout_gm.php",
"mod_player" => "includes-account/mod_player.php",
"payement" => "includes-account/payement.php",
"itemshop" => "includes-account/itemshop.php",
"config_is" => "includes-account/config_is.php",
"config_classement" => "includes-account/config_classement.php",
"config_site" => "includes-account/config_site.php");
 

 

 

Là encore, rajoutez une ligne :

 

"config_vote" => "includes-account/config_vote.php",
 

 

 

pour faire quelque chose comme cela :

 

$account_include = array(
"compte" => "includes-account/compte1.php",
"ajout_gm" => "includes-account/ajout_gm.php",
"mod_player" => "includes-account/mod_player.php",
"payement" => "includes-account/payement.php",
"itemshop" => "includes-account/itemshop.php",
"config_is" => "includes-account/config_is.php",
"config_classement" => "includes-account/config_classement.php",
"config_site" => "includes-account/config_site.php",
"config_vote" => "includes-account/config_vote.php");
 

 

 

Descendez encore un tout petit peu et trouvez ceci :

 

$account_include_credentials = array(
"compte" => 1,
"signatur_create.php" => 1,
"sign" => 1,
"ajout_gm" => 4,
"mod_player" => 2,
"payement" => 1);
 

 

 

Rajoutez cette ligne :

 

"config_vote" => 4,
 

 

 

pour faire quelque chose comme ceci :

 

$account_include_credentials = array(
"compte" => 1,
"signatur_create.php" => 1,
"sign" => 1,
"ajout_gm" => 4,
"mod_player" => 2,
"config_vote" => 4,
"payement" => 1);
 

 

 

Attention ! Ne copiez-collez pas les bouts de code qui semblent complets car vous n'avez pas forcément les même selon les pages installées sur votre CMS.

De plus, vous devez faire attention de ne pas copier les lignes que je donne en dernière position à cause de la virgule.

 

Passons à l'intégration des liens dans les menus. Éditez le fichier templates/default/fr/includes/sidebar.tpl.

 

Repérez le code suivant :

 

    <if cond="$rang_membre >= 4">
        <h2>Menu Admin</h2>
        <ul class="sidemenu">                
            <li><a href="index.php?p=ajout_gm">Gestion des GMs</a></li>
            <li><a href="index.php?p=config_site">R&eacute;glage du Site</a></li>
            <li><a href="index.php?p=config_classement">R&eacute;glage du Classement</a></li>
            <li><a href="index.php?p=config_is">Configuration de l'ItemShop </a></li>
        </ul>    
    </if> 
 

 

 

Ajoutez le lien de la page de configuration comme ceci :

 

    <if cond="$rang_membre >= 4">
        <h2>Menu Admin</h2>
        <ul class="sidemenu">                
            <li><a href="index.php?p=ajout_gm">Gestion des GMs</a></li>
            <li><a href="index.php?p=config_site">R&eacute;glage du Site</a></li>
            <li><a href="index.php?p=config_classement">R&eacute;glage du Classement</a></li>
            <li><a href="index.php?p=config_is">Configuration de l'ItemShop </a></li>
            <li><a href="index.php?p=config_vote">Configuration des votes</a></li>
        </ul>    
    </if> 
 

 

 

Repérez ensuite en bas le code suivant :

 

<h2>Publicit&eacute;</h2>
<div align="center">
/# | Merci de ne pas supprimer la pub. En effet, celle-ci permet de continuer | #/
/# | à faire vivre le projet MT2-CMS, de payer un hébergement afin de           | #/
/# | proposer des mise à jour plus fréquentes et plus innovantes. Merci.         |#/
    <SCRIPT type="text/javascript" LANGUAGE="javascript" src="http://www.qksz.net/1e-inks"> </SCRIPT>
</div>

</div>

 

 

Ajoutez juste avant celui-ci :

 

<h2>Voter pour {config_site_name}</h2>
    <ul class="sidemenu">
        <li><a href="index.php?p=vote">Page de vote</a></li>
    </ul> 
 

 

 

 

 

Bien, vous avez inclu les pages dans votre site et glissés des liens pour vous y retrouver dans l'interface !

 

Il nous faut maintenant ajouter quelques éléments dans nos bases de données.

Commençons par account.account.

- Rajoutons un champs nb_votes de type INT.

 

Créons dans la base site une nouvelle table history_vote qui contient :

- id (AI) : INT

- account : VARCHAR(25)

- ip : VARCHAR(15)

- date : INT

- lien : INT

 

Je mets à votre disposition une requête sql pour l'insérer directement :

 

DROP TABLE IF EXISTS `history_vote`;
CREATE TABLE `history_vote` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `account` varchar(30) NOT NULL,
 `ip` varchar(15) NOT NULL,
 `date` int(11) NOT NULL,
 `lien` tinyint(4) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=latin1;
 

 

 

 

Passons à notre 2e table liens_vote :

- id (AI) : INT

- lien : VARCHAR(255)

- gain : INT

- attente : INT

- image : VARCHAR(255)

- monnaie : VARCHAR(20)

 

Encore une fois, voici la requête :

 

DROP TABLE IF EXISTS `liens_vote`;
CREATE TABLE `liens_vote` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `lien` varchar(255) NOT NULL,
 `gain` int(11) DEFAULT NULL,
 `attente` int(11) DEFAULT NULL,
 `image` varchar(255) NOT NULL,
 `monnaie` varchar(20) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
 

 

 

 

Vous avez installé avec succès vos bases de données.

 

Votre système de vote est prêt à fonctionner. Rendez vous dans le menu d'administration de votre site et cliquez sur "Configuration des votes". Cliquez sur "Ajouter" et créez un lien de vote. Vous pouvez en créer autant que vous voulez, les modifier, les supprimer...

 

Vos membres pourront voter qu'ils soient connectés ou non via la page vote qui est désormais dans leur menu d'utilisateur.

 

Félicitations !

Merci de ne pas copier ce tutoriel sans mon autorisation.

Tous les codes ont été rédigés par moi même. Ils ne sont pas parfaitement optimisés mais fonctionnels et pratiques.

 

Attention ! Je n'ai pas pu tester entièrement le tutoriel ! Si vous constatez des problèmes, merci de me le faire savoir pour que le les corrige au plus rapidement !

 

Cordialement

 

MT2CMS - reCaptcha

Révélation

Bonjour à tous,

Aujourd'hui on va apprendre à installer un reCaptcha sur son site CMS de JigSaw.

reCaptcha c'est quoi ?

C'est un système mis au point par Google qui permet d'empêcher des chieurs de l'informatique de vous faire pulluler des millions de comptes par minute dans votre base de données à l'aide d'un programme.

 

Comment faire ?

  1. Google reCaptcha <= Vous serez bien guidé par google pour créer votre compte et créer un site
    Image

    Vous devez en arriver là:155952Screenshot-1.jpg 

  2. Ouvrez votre site cms de JigSaw et rendez-vous dans le dossier ./templates/default/fr/includes/ et ouvrez header.tpl avec Notepad++
  3. Étape expliquée par une image

    150250Screenshot-1.jpgEnsuite enregistrez et fermez

  4. Ouvrez ./templates/default/fr/public/inscription.tpl avec Notepad++ (Dans le menu language, vous pouvez sélectionner HTML)
  5. Image et code en description

    152737Screenshot-1.jpg
     
    Vous êtes probablement un robot !?.
      

  6. Nouvelle étape en image

    150627Screenshot-1.jpg 

  7. Ouvrez à présent ./include-public/inscription.php et après
     
    $mail=mysql_real_escape_string($_POST['mail']);
  8. ajoutez (remplacez XXXXXXXXXXXXX par votre clé secrète reCaptcha
    Hint

    153940Screenshot-1.jpg 
     
    $secret = "XXXXXXXXXXXXXXX"; $response = $_POST['g-recaptcha-response']; $remoteip = $_SERVER['REMOTE_ADDR']; $api_url = "https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$response."&remoteip=".$remoteip; $decode = json_decode(file_get_contents($api_url, true), true);

  9. Puis, après
     
    if (strlen(trim($mdp)) > 4 && strlen(trim($mdp)) < 17) {
  10. ajoutez
     
    if ($decode['success'] == true) {
  11. Après
     
    else { $errors =5; }//5: Ce pseudo est déjà utilisé.
  12. Ajoutez
     
    }else { $errors =6; }//6: Mauvaise réponse au reCaptcha
  13.  
    Image

    161347Screenshot-1.jpg 

  14. Enregistrez et normalement, tout fonctionne parfaitement !

 

J'espère que cela va vous aider pour débuter dans l'émulation,

 

Cordialement,

 

MT2CMS - Système de Parrainage

Révélation

Bonjour à toutes et à tous,

I. Présentation

J'ai créé un script de parrainage. Il permet aux joueurs d'inscrire un parrain lors de leur inscription et quand un joueur ayant un parrain rechargera son compte en MD, le parrain recevra la moitié des MD qu'aura reçu le filleul. Mon script bloque l'ajout de MD pour le parrain au premier rechargement mais cela est modifiable.

Dans l'exemple ci-dessous je suis le filleul, et Lambda mon parrain.

Hidden Content

    Give reaction to this post to see the hidden content.

II. Mise en place

II.1. Navicat:

Tout d'abord il vous faudra exécuter ces queries dans Navicat :

ALTER TABLE account.account ADD `parrain` VARCHAR(30) NULL AFTER `rang`;
ALTER TABLE account.account ADD `first_buy` INT(1) DEFAULT 0 AFTER `parrain`;

II.2. Inscription:

inscription.tpl :

Révélation

Ouvrez tout d'abord le fichier inscription.tpl et ajoutez ceci :

<if cond="$valid_form == 6">Le parrain n'existe pas.</if>

Comme ceci : 

<if cond="$valid_form == 2">Votre email est invalide.</if>
          <if cond="$valid_form == 3">Le pseudo doit &ecirc;tre compris entre 5 et 16 caract&egrave;res.</if>
          <if cond="$valid_form == 4">Le mot de passe doit &ecirc;tre compris entre 5 et 16 caract&egrave;res.</if>
          <if cond="$valid_form == 5">Ce pseudo est d&eacute;j&agrave; utilis&eacute;.</if>
<if cond="$valid_form == 6">Le parrain n'existe pas.</if> 

Puis ajoutez ceci :

<label>Parrain</label>
<input name="parrain" type="text" size="30"/> 

De telle façon que vous aillez aux environs de la ligne 45 : 

<form method="post" action="index.php?p=inscription">            
    <p>        
        <label>Nom d'utilisateur ( entre 5 et 16 caract&egrave;res )</label>
        <input name="login" type="text" size="30" />
        <label>Email</label>
        <input name="mail" type="text" size="30" />
        <label>Mot de passe ( entre 5 et 16 caract&egrave;res )</label>
        <input name="mdp" type="password" size="30" />
<label>Parrain</label>
<input name="parrain" type="text" size="30"/>
<br />    
        <input class="button" type="submit" value="Envoyer"/>        
    </p>        
    </form> 

 

inscription.php :

Révélation

Une fois ceci fait, ouvrez le fichier inscription.php. Il vous faudra ajouter ces lignes :

À la ligne 25 ajoutez cette ligne :

$parrain=mysql_real_escape_string($_POST['parrain']); 

Ce qui donne :

$pseudo=mysql_real_escape_string($_POST['login']);
$mdp=mysql_real_escape_string($_POST['mdp']);
$mail=mysql_real_escape_string($_POST['mail']);
$parrain=mysql_real_escape_string($_POST['parrain']); 

À la ligne 28 il faudra mettre ceci : 

//Parrain s'il n'est pas vide est-ce qu'il existe?
if (isset($parrain)) {
$sql = mysql_query("SELECT COUNT(login) AS nb_parrain FROM account.account WHERE login='$parrain'");
$exist_parrain=mysql_result($sql, 0, 'nb_parrain');
}
if ($exist_parrain==1 or $parrain == "")
{ 

Ce qui donne : 

//Parrain s'il n'est pas vide est-ce qu'il existe?
if (isset($parrain)) {
$sql = mysql_query("SELECT COUNT(login) AS nb_parrain FROM account.account WHERE login='$parrain'");
$exist_parrain=mysql_result($sql, 0, 'nb_parrain');
}
if ($exist_parrain==1 or $parrain == "")
{
//Si le mail est valide
    if(preg_match('#^[a-zA-Z0-9_\.-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$#', $mail))
    { 

Ensuite, remplacez cette query : (ligne 46) 

$sql="INSERT INTO account (login, password, email, create_time, cash, rang) VALUES ('$pseudo', password ('$mdp'), '$mail', '$date', '0', '1')"; 

Par celle-ci :

$sql="INSERT INTO account (login, password, email, create_time, cash, rang, parrain) VALUES ('$pseudo', password ('$mdp'), '$mail', '$date', '0', '1', '$parrain')"; 

Pour en terminer avec ce fichier il faudra ajouter à la ligne 57 cette ligne de code :

}
else { $errors =6; } //Le parrain n'existe pas 

Tel que :

}
                else { $errors =5; }//5: Ce pseudo est déjà utilisé.
            }
            else { $errors =4; }//4: Le mot de passe doit être compris entre 5 et 16 caractères.
        }
        else { $errors =3; }//3:Le pseudo doit être compris entre 5 et 16 caractères.
    }
    else { $errors =2; }//2: Votre email est invalide.
}
else { $errors =6; } //Le parrain n'existe pas 

 

II.3. Rechargement:

payement.php :

Révélation

Ouvrez maintenant le fichier payement.php et ajoutez ceci à la ligne 169 :

$cash=$CONFIG_is['nb_cash'];
    $cash_parrain=$cash/2;
    $query_parrain=mysql_query("SELECT parrain, first_buy FROM account.account WHERE `id`='$id_membre'");
    $fetch_parrain=mysql_fetch_array($query_parrain);
    $nom_parrain=$fetch_parrain['parrain'];
    $first_buy=$fetch_parrain['first_buy'];
            
    if($nom_parrain != "" and $first_buy == "0")
    {
        mysql_query("UPDATE account.account SET first_buy = '1' WHERE `id`='$id_membre'");
        mysql_query("UPDATE account.account SET cash = cash + '$cash_parrain' WHERE `login`='$nom_parrain'");
    } 

De manière à avoir : 

if($payement)
{
    $sql="UPDATE account.account SET cash = cash+".$CONFIG_is['nb_cash']." WHERE id = $id_membre";
    mysq_query($sql) or die (mysql_error());
    
    $cash=$CONFIlG_is['nb_cash'];
    $cash_parrain=$cash/2;
    $query_parrain=mysql_query("SELECT parrain, first_buy FROM account.account WHERE `id`='$id_membre'");
    $fetch_parrain=mysql_fetch_array($query_parrain);
    $nom_parrain=$fetch_parrain['parrain'];
    $first_buy=$fetch_parrain['first_buy'];
            
    if($nom_parrain != "" and $first_buy == "0")
    {
        mysql_query("UPDATE account.account SET first_buy = '1' WHERE `id`='$id_membre'");
        mysql_query("UPDATE account.account SET cash = cash + '$cash_parrain' WHERE `login`='$nom_parrain'");
    }
    
    $tpl->assign('valid_pay', 'ok');
} 

 

III. Personnalisation

III.1. Retirer la limitation du premier rechargement :

Vous pouvez choisir si le script ajoutera des monnaies dès le premier rechargement ou pas, pour ce faire il faudra ouvrir le fichier payement.php et enlever ceci :

and $first_buy == "0" 

Ce qui donnera :

if($nom_parrain != "")
    {
mysql_query("UPDATE account.account SET first_buy = '1' WHERE `id`='$id_membre'");
        mysql_query("UPDATE account.account SET cash = cash + '$cash_parrain' WHERE `login`='$nom_parrain'");
    } 

Cela aura donc pour effet de donner la moitié de ce qu'achète un filleul à son parrain en permanence et non pas uniquement lors du premier rechargement de compte.

III.2. Modifier le gain du parrain :

Toujours dans le fichier payement.php vous pouvez choisir combien gagnera le parrain, je l'ai mis sur la moitié du gain du filleul mais c'est modifiable en changeant la valeur de cette variable :

$cash_parrain 

Si vous voulez lui donner autant que le filleul il suffira de mettre :

$cash_parrain=$cash; 

Si vous voulez lui faire gagner que 3 MD il suffira de mettre :

$cash_parrain=3; 

Et ainsi de suite, la valeur vous est libre.

III.3. Consulter son parrain, ses filleuls et s'ils ont effectué un rechargement :

Afin de voir votre parrain ainsi que vos filleuls et savoir lesquels ont rechargé leur compte au moins une fois et donc vous on fait gagné des MD il vous faudra ouvrir le fichier compte.tpl et ajouter à la ligne 177 :

Révélation
<?php if($_GET[c] == "parrainage") { ?>

        <table style="width:49%; text-align:center;" border="1">
            <tr>
                <td><font color="white">Parrain</font></td>
            </tr>
            <tr>
                <td>
                <?php $fetch_parrain=mysql_fetch_array(mysql_query("SELECT parrain FROM account.account WHERE id='$id_membre'"));
                echo ($fetch_parrain[parrain]);?>
                </td>
            </tr>
        </table>
        
        <table style="margin:-57px 0px auto auto; width:49%; text-align:center;" border="1">
            <tr>
                <td><font color="white">Filleuls</font></td>
                <td><font color="white">Rechargement effectu&eacute;</font></td>
            </tr>
                <?php 
                $bien=mysql_query("SELECT login, first_buy FROM account.account WHERE parrain='$pseudo_membre'");
                while($array=mysql_fetch_array($bien)) {
                if ($array[first_buy]=="1") {
                $payement="Oui"; } else { $payement="Non"; }
                
                echo ("<tr><td>".$array[login]."</td>
                        <td>".$payement."</td></tr>");
                }?>
        </table>
        
        <br/><br/>
        <p><a href="index.php?p=compte">Retour au compte</a> </p>
    <?php } else {?>

 

Aux alentours de la ligne 210 ajoutez ceci : 

<li><a href="index.php?p=compte&c=parrainage">Parrainage</a></li> 

Afin d'avoir : 

<ul>
    <li><a href="index.php?p=payement">Recharger mon compte</a></li>
      <li><a href="index.php?p=compte&c=mdp">Modifier le mot de passe</a></li>
      <li><a href="index.php?p=compte&c=mail">Modifier l'email</a></li>
      <li><a href="index.php?p=compte&c=code">Modifier le code d'effacement</a></li>
      <li><a href="index.php?p=compte&c=del_compte">Supprimer le compte</a></li>
<li><a href="index.php?p=compte&c=parrainage">Parrainage</a></li>
  </ul>

Pour terminer cette personnalisation, allez à la fin du fichier et ajouter après le 

</if> 

ceci : 

<?php } ?>

Pour obtenir:

</if>
<?php } ?>

IV. Mot de la fin

Voila, le tutoriel est terminé, pour tout problème je serai disponible dans la section A/Q/S. Le tutoriel est susceptible d'être modifié à tout moment.
Pour tout souci de compréhension, ou point qui vous semble trop flou, dites le moi et j'arrangerai ça Content
 

Satir à votre service Content

 

MT2CMS - Corriger la Faille du Classement

Révélation

Bonjour,

Je vous propose ce mini-tuto car je trouve encore beaucoup de site ayant cette petite faille sur le classement de leur mt2-cms.

Il est très simple de régler cette faille :
Il suffit de modifier cette ligne (Ligne 124) :

if(isset($_GET['r']) and $_GET['r']>0){$rang=$_GET['r'];} else {$rang=0;}
Par celle-ci :
if(isset($_GET['r']) and $_GET['r']>0 and is_numeric($_GET['r']) and $_GET['r'] < 1000){$rang=$_GET['r'];} else {$rang=0;}
Ce changement fait que la valeur entrée pour la variable r doit être numérique, si elle ne l'est pas (donc soit un texte, soit un caractère interdit) le script retournera la première page du classement.

En espérant voir moins souvent cette petite faille :)

 

MT2CMS - Système de Récupération de Mot de Passe

Révélation

Bonjour,

Je me suis affairé à développer un système de récupération de mot de passe sous mt2-cms.

Principe :

Le joueur clique sur "MDP oublié", ça l'envoi sur une page et sur cette page le joueur entre son nom de compte et son e-mail, par la suite il reçoit un mail comprenant un url UNIQUE contenant un guid ("Globally Unique Identifier"), ce guid est en fait le MD5 de l'heure/minutes/secondes d'envoi du mail, en cliquant sur l'url reçu par mail il arrivera sur une autre page ou on lui demandera un nouveau mot de passe.
Alors ce système utilise une table à créer à la main, dans cette table il y aura l'e-mail, le nom de compte, le guid et la date de création de la ligne.
Je commenterai les grandes lignes des codes PHP.

Tuto :
1) Faire 4 fichiers, qu'il faudra appeler mdp_oublie.tpl , mdp_oublie.php, reset_mdp.tpl, reset_mdp.php.

2)Mettre les fichiers PHP dans le dossier "includes-public" et les fichiers tpl dans "templates/default/fr/public".

3)Dans les fichiers PHP il faut mettre le code :

 -Pour reset_mdp.php :

<?php
/**
 *        MT2-CMS
 *    @author JigSaw <[email protected]>
 *    @license http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
 *    @version b1.002 24/04/2010
 *    @link http://mt2cms.free.fr
 *
 *
 **/

$tpl->parse('public/reset_mdp.tpl');
?>

 -Pour mdp_oublie.php :

<?php
/**
 *        MT2-CMS
 *    @author JigSaw <[email protected]>
 *    @license http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
 *    @version b1.002 24/04/2010
 *    @link http://mt2cms.free.fr
 *
 *
 **/

$tpl->parse('public/mdp_oublie.tpl');
?>

4)Dans les fichiers TPL il faudra mettre :

mdp_oublie.tpl :

Révélation
    <!--Copyright Satir's Prod -->
                <form method="post" action="index.php?p=mdp_oublie"><!--Form comprenant la demande de mail et le nom de compte -->
                    Afin de modifier votre ancien mot de passe, <br/>
                    Entrez votre adresse e-mail :<br/>
                    <input name="mail" type="text"/><br/>
                    Et votre nom de compte : <br/>
                    <input name="login" type="text"/><br/>
                    <input name="submit" type="submit" value="Envoyer"/>
                    <font size="1px">Le guide pour modifier votre mot de passe sera envoyé sur l'adresse indiquée<br/></font>
                    <?php    mysql_select_db('account');/*ici on selectionne la db*/
                            if(mysql_real_escape_string($_POST[mail]) != ""){
                            $mail_post=mysql_real_escape_string($_POST[mail]);
                            $login_post=mysql_real_escape_string($_POST[login]);
                            $check_mail=mysql_query("SELECT * FROM account WHERE email = '$mail_post' AND login = '$login_post' ");
                    if (mysql_num_rows($check_mail)==0)/*si le retour de la query est nul, donc soit mail, soit pseudo n'existe pas*/
                    {
                    ?>
                    <font color="red">Adresse mail ou login inconnu!</font><!--Si le mail ou nom de compte existe pas on affiche ce texte-->
                    <?php
                    }
                else{ /*si les deux existent, on effectue le code suivant*/
                mysql_select_db('site');/*on change de db*/
                                                        $email_expediteur='Equipe '.$config_site_name.' ';
                $headers = 'From: '.$email_expediteur.'';
                $guid = MD5(date("H:i:s"));/*création du guid*/
                $date_mdp=date("Y-m-d H:i:s");/*récupération de la date*/
                $query_mail = "INSERT INTO reset_mdp (login, mail, guid, date) values ('$login_post', '$mail_post', '$guid', '$date_mdp' )";/*on ajoute dans la db "site" les données entré par l'utilisateur + le guid */
                mysql_query($query_mail);/*on effectue la query*/
                $url="METTRE_ICI_L_URL_DE_VOTRE_SITE/index.php?p=reset_mdp&email=$mail_post&guid=$guid&login=$login_post";/*ici on stocke dans une variable l'url UNIQUE*/
                $body = "Bonjour $login_post,
                
                Afin de changer votre mot de passe, cliquez sur l'adresse URL suivante : 
                
                $url";/*$body est la variable qui stocke le corps du mail */
                mail($mail_post, "Changement de mot de passe ".$config_site_name." ", $body, $headers);/*ceci est l'envoi du mail au mail entré par l'utilisateur($mail_post), puis objet du mail, puis le corps du mail*/
                echo('<meta http-equiv="refresh" content="3; url=index.php" /><font color="green">Un mail vient de vous être envoyé</font>');/*On dit sur le site que l'e-mail est envoyé*/
                } 
                }
?>
                    </form> 

 

reset_mdp.tpl :

Révélation
                    <?php 
                     if ($_POST[nmdp] != "") {
                     if(strlen(trim($_POST[nmdp])) > 4 && strlen(trim($_POST[nmdp])) < 17) {
                            $nmdp=mysql_real_escape_string($_POST[nmdp]);
                            mysql_select_db('account');
                            $get_email=mysql_real_escape_string($_POST[email]);
                            $get_guid=mysql_real_escape_string($_POST[guid]);
                            $get_login=mysql_real_escape_string($_POST[login]);
                            $sql_mdp="UPDATE account SET password = (password ('$nmdp')) WHERE email = '$get_email' and login = '$get_login'";
                            mysql_query($sql_mdp);
                            echo('<font color="green">Mot de passe changé.</font> Vous allez être redirigé');
                            mysql_select_db('site');
                            $delete_reset="DELETE FROM reset_mdp WHERE guid='$get_guid'";
                            $delete_ancien="DELETE FROM reset_mdp WHERE (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(`date`) > 86400)";
                            mysql_query($delete_reset);
                            mysql_query($delete_ancien);
                            ?>
                            <script type="text/javascript">
                                setTimeout("toLogin()", 3000);
                                function toLogin()
                                {
                                    self.location="index.php?p=connexion";
                                }
                            </script>
                            <?php
                            } else {
                            $get_email=mysql_real_escape_string($_POST[email]);
                            $get_guid=mysql_real_escape_string($_POST[guid]);
                            $get_login=mysql_real_escape_string($_POST[login]);
                            echo('<font color="red">Le mot de passe doit faire entre 5 et 16 caractères</font> <br/> <br/><a href="index.php?p=reset_mdp&email='.$get_email.'&guid='.$get_guid.'&login='.$get_login.'">Retour</a>'); }
                            } else { 
                            
                    mysql_select_db('site');
                    $get_email=mysql_real_escape_string($_GET[email]);
                    $get_guid=mysql_real_escape_string($_GET[guid]);
                    $get_login=mysql_real_escape_string($_GET[login]);
                    $result=mysql_query("SELECT * FROM reset_mdp WHERE mail='$get_email' and guid='$get_guid' and login='$get_login' ");
                    if (mysql_num_rows($result)==1) { 
                    ?>    Entrez votre nouveau mot de passe : <br/><br/>
                    <form method="post" action="index.php?p=reset_mdp">
                        <input onfocus="if(this.value=='Password') this.value=''" onblur="if(this.value=='')this.value='Password'" value="Password" class="fui txt pass" name="nmdp" type="password"/><br/>
                        <input class="fui btn" name="submit" type="submit" value="Envoyer"/>
                        <input type="hidden" name="login" value="<?php echo $get_login?>"/>
                        <input type="hidden" name="email" value="<?php echo $get_email?>"/>
                        <input type="hidden" name="guid" value="<?php echo $get_guid?>"/>
                    </form>
                    <?php
                    } else {
                    ?>
<meta http-equiv="refresh" content="3; url=index.php" />Redirection...
<?php }  
        }?>

 

5)Ajouter au fichier index.php les lignes suivantes :

    "mdp_oublie" => "includes-public/mdp_oublie.php",
    "reset_mdp" => "includes-public/reset_mdp.php",

(Lignes à ajouter entre les lignes déjà présentes de 144 à 158 (environ))

6) Il faut maintenant créer la table qui comprendra le mail du joueur, son nom de compte et le guid (et la date, j'expliquerai plus tard pourquoi on récupère et stocke la date)

Donc pour se faire, il faut aller dans la DB "site" et créer une nouvelle table :

Révélation

Hidden Content

    Give reaction to this post to see the hidden content.

Après avoir cliqué sur "New Table" , il faudra faire 4 champs (pour ajouter un champ cliquez sur "Add Field") et compléter comme ceci : 

Révélation

Hidden Content

    Give reaction to this post to see the hidden content.

/!\METTEZ BIEN GUID EN PRIMARY KEY/!\

Pour mettre guid en primary key, il suffit de faire clic droit sur le champ "guid" et de cliquer ensuite sur "Set as primary key".

7)Sauvegardez la table, et donnez lui comme nom reset_mdp !

8)Ajoutez où vous voulez que votre lien vers ce script apparaisse ceci : 

<a href="index.php?p=mdp_oublie">Mot de passe oublié</a>

Voilà, si tout est fait comme il faut au niveau de la table, votre système de changement de mot de passe oublié est fonctionnel !

Source : Moi

EDIT : Pensez à modifier les endroits indiqués dans mdp_oublie.tpl

 

MT2CMS - Code d'Effacement à l'Inscription

Révélation

Bonjour,

Je trouve ça plutôt utile, et c'est absent dans le MT2-CMS à la base, donc je vais vous montrer comment ajouter ces deux petites choses :

1)Création du code d'effacement à l'inscription : 

 -Dans le fichier "inscription.php" il faut ajouter ceci :

//Si le code fait 7 caractères
if (strlen(trim($code)) == 7)
{ [...] }
else { $errors =6; }//6: code d'effacement ne fait pas 7 caractères 

 Ceci est donc la partie qui vérifie si le code d'effacement fait bien 7 caractères.

 Il suffit de l'intégrer dans le fichier comme ceci (intégration dans inscription.php): 

Révélation
//Si le code fait 7 caractères
if (strlen(trim($code)) == 7)
{
    //Si le mail est valide
    if(preg_match('#^[a-zA-Z0-9_\.-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$#', $mail))
    {
        //Si le pseudo est supérieur à  4 caractères et inférieur à  17 caractères.
        if (strlen(trim($pseudo)) > 4 && strlen(trim($pseudo)) < 17)
        {
            //Si le mot de passe est supérieur à  4 caractères et inférieur à  17 caractères.
            if (strlen(trim($mdp)) > 4 && strlen(trim($mdp)) < 17)
            {
                //On vérifie que le pseudo n'existe pas.
                mysql_select_db("account");
                $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM `account` WHERE login='$pseudo'");
                if (mysql_result($sql, 0, 'nb_pseudo') == 0)
                {
                    $date = date("Y-m-d H:i:s");
                    
                    //Insertion dans la base de donnée
                    $sql="INSERT INTO account (login, password, social_id, email, create_time, cash, rang) VALUES ('$pseudo', password ('$mdp'), '$code', '$mail', '$date', '0', '1')";
                    mysql_query($sql) or die (mysql_error());
                                            
                }
                else { $errors =5; }//5: Ce pseudo est déjà utilisé.
            }
            else { $errors =4; }//4: Le mot de passe doit être compris entre 5 et 16 caractères.
        }
        else { $errors =3; }//3:Le pseudo doit être compris entre 5 et 16 caractères.
    }
    else { $errors =2; }//2: Votre email est invalide.
}
else { $errors =6; }//6: code d'effacement ne fait pas 7 caractères 

 

Notez qu'il faut aussi modifier le "INSERT INTO [...]" , il suffit de lui dire que le code d'effacement entré par le joueur sera le social_id du compte.

 -Dans le fichier inscription.tpl :

Il faut rajouter une ligne dans le "<div class="error">", comme cela :

<if cond="$valid_form == 6"><font color="red">Le code d'effacement ne fait pas 7 caract&egrave;res.</font></if> 

Et ajouter dans le "<form method="post" action="index.php?p=inscription">[/php]

Le input prenant le code d'effacement comme ceci :

        <label>Code d'effacement (7 caractères)</label><br />

        <input name="code" type="text" size="30" /><br /> 

2) Ajouter la checkbox qui fait accepter les règles du serveur aux joueurs :

-Dans le fichier inscription.tpl (tant qu'on y est ;) ) :

Il faut ajouter une autre ligne au même endroit : 

<if cond="$valid_form == 7"><font color="red">Les règles du serveur n'ont pas été acceptées.</font></if> 

Ici aussi il faut ajouter un input comme cela :

<input type="checkbox" name="CGI" id="CGI"/><label for="cgi">
        <b><font color="white">J'accepte les <a href="index.php?p=regles"><font color="red"><u>règles</u></a></font>
        du serveur!</b></label><br/> 

 

-Dans le fichier inscription.php : 

On ajoute ce bout de code : 

//Si les CGI sont acceptés
if (isset($_POST['CGI']) == 1)
{ [...] }
else { $errors =7; }//7: CGI non acceptées 

À intégrer de cette façon (Intégration finale dans inscription.php) :

Révélation
//Si les CGI sont acceptés
if (isset($_POST['CGI']) == 1)
{
//Si le code fait 7 caractères
if (strlen(trim($code)) == 7)
{
    //Si le mail est valide
    if(preg_match('#^[a-zA-Z0-9_\.-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$#', $mail))
    {
        //Si le pseudo est supérieur à  4 caractères et inférieur à  17 caractères.
        if (strlen(trim($pseudo)) > 4 && strlen(trim($pseudo)) < 17)
        {
            //Si le mot de passe est supérieur à  4 caractères et inférieur à  17 caractères.
            if (strlen(trim($mdp)) > 4 && strlen(trim($mdp)) < 17)
            {
                //On vérifie que le pseudo n'existe pas.
                mysql_select_db("account");
                $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM `account` WHERE login='$pseudo'");
                if (mysql_result($sql, 0, 'nb_pseudo') == 0)
                {
                    $date = date("Y-m-d H:i:s");
                    
                    //Insertion dans la base de donnée
                    $sql="INSERT INTO account (login, password, social_id, email, create_time, cash, rang) VALUES ('$pseudo', password ('$mdp'), '$code', '$mail', '$date', '0', '1')";
                    mysql_query($sql) or die (mysql_error());
                                            
                }
                else { $errors =5; }//5: Ce pseudo est déjà utilisé.
            }
            else { $errors =4; }//4: Le mot de passe doit être compris entre 5 et 16 caractères.
        }
        else { $errors =3; }//3:Le pseudo doit être compris entre 5 et 16 caractères.
    }
    else { $errors =2; }//2: Votre email est invalide.
}
else { $errors =6; }//6: code d'effacement ne fait pas 7 caractères
}
else { $errors =7; }//7: CGI non acceptées 

 

NB : Prenez ce dernier bout de code pour intégrer les deux input facilement.

Voilà, c'est tout Content

 

 

Modifié par Funky Emulation
Core X - External 2 Internal
Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 2
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Meilleurs contributeurs dans ce sujet

Je viens d'ajouter une fonction qui rend le bouton non cliquable si la checkbox n'est pas coché, il suffit de rajouter dans la checkbox ceci :

onclick="document.getElementById('reg_button').disabled = !document.getElementById('CGI').checked ;
La checkbox devient alors :
<input type="checkbox" name="CGI" id="CGI" onclick="document.getElementById('reg_button').disabled = !document.getElementById('CGI').checked ; "/>

Et le bouton devient :

<input id="reg_button" type="submit" value="Inscription" disabled="disabled"/> 

 

Lien vers le commentaire
Partager sur d’autres sites



  • brilliantdiscord_widget
  • Flux d'Activité

    1. 37
    2. 21

      Metin2 en 2020 peut-on en parler?

    3. 0

      METIN2Project

    4. 3

      Ressources - UnPack - Metin2 Client - Officiel

    5. 0

      Barre des tâches d'argent étendue

    6. 16

      Redémarrage automatique des channels

    7. 16

      Multi Logo GM / SGM / GA

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.