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

Hystos

Membre
  • Compteur de contenus

    256
  • Inscription

  • Dernière visite

Messages posté(e)s par Hystos

  1. $sql="UPDATE account SET last_vote = '$date', cash = '$cash', vote = '$vote', ip = '$ip' WHERE login = '$pseudo_membre'";

     

     

    Qu'est-ce que j'ai dis dans mes messages précédent ? Remplace par ça :

     

    $sql="UPDATE account.account SET last_vote = '$date', cash = '$cash', vote = '$vote', ip = '$ip' WHERE login = '$pseudo_membre'";

     

    Pour ce que tu appelles navicat, vérifie que tu as bien un champs last_vote, vote et ip dans la table account de ta base account.

  2. Plusieurs possibilités :

     

    - Vous triez dès votre première requête avec la variable $ip. Êtes vous sur de cette variable

    - Avez vous bien pensé à sélectionné la base account ?

    mysql_select_db(account);

    Ceci n'est pas obligatoire si vous rajoutez a chaque fois base.champs dans vos requêtes comme par exemple :

    $sql = mysql_query("SELECT (UNIX_TIMESTAMP(last_vote) - UNIX_TIMESTAMP()) AS last_vote FROM account.account WHERE ip = '$ip'");

  3. Je n'ai rien d'autre à dire que :

     

    if(isset($_POST['idd']) and $_GET['valid']=='ok')
    {	
    	//Déclaration des variables
    	$ident=$idp=$ids=$idd=$codes=$code1=$code2=$code3=$code4=$code5=$datas='';
    	//On récupère les identifiants sous la forme "xxx;xxx;xxx"
    	if(isset($_POST['idp'])) $idp = $_POST['idp'];
    	if(isset($_POST['ids'])) $ids = $_POST['ids'];
    	//$ids n'est plus utilisé, mais il faut conserver la variable pour une question de compatibilité
    	if(isset($_POST['idd'])) $idd = $_POST['idd'];
    	$ident=$idp.";".$ids.";".$idd;
    	//On récupère le(s) code(s) sous la forme "xxxxxxxx;xxxxxxxx"
    	if(isset($_POST['code1'])) $code1 = $_POST['code1'];
    	if(isset($_POST['code2'])) $code2 = ";".$_POST['code2'];
    	if(isset($_POST['code3'])) $code3 = ";".$_POST['code3'];
    	if(isset($_POST['code4'])) $code4 = ";".$_POST['code4'];
    	if(isset($_POST['code5'])) $code5 = ";".$_POST['code5'];
    	$codes=$code1.$code2.$code3.$code4.$code5;
    	//On récupère le champ DATAS"
    	if(isset($_POST['DATAS'])) $datas = $_POST['DATAS'];
    	//On encode les trois chaines en URL
    	$ident=urlencode($ident);
    	$codes=urlencode($codes);
    	$datas=urlencode($datas);
    
    	/* Envoie de la requête vers le serveur StarPass
    	Dans la variable tab[0] on récupère la réponse du serveur
    	Dans la variable tab[1] on récupère l'URL d'accès ou d'erreur suivant la réponse du serveur */
    	$get_f=@file("http://script.starpass.fr/check_php.php?ident=$ident&codes=$codes&DATAS=$datas");
    	//Si on contact le serveur
    	if($get_f)
    	{
    		$tab = explode("|",$get_f[0]);
    
    		// dans $pays on a le pays de l'offre. exemple "fr"
    		$pays = $tab[2];
    		// dans $palier on a le palier de l'offre. exemple "Plus A"
    		$palier = urldecode($tab[3]);
    		// dans $id_palier on a l'identifiant de l'offre
    		$id_palier = urldecode($tab[4]);
    		// dans $type on a le type de l'offre. exemple "sms", "audiotel, "cb", etc.
    		$type = urldecode($tab[5]);
    		// vous pouvez à tout moment consulter la liste des paliers à l'adresse : http://script.starpass.fr/palier.php
    
    		//Si $tab[0] répond "OUI" 
    		if(substr($tab[0],0,3) == "OUI")
    		{
    			   $payement=true;
    
    		}
    		else
    		{
    			$tpl->assign('valid_pay', 'nok');
    		}
    	}
    	else
    	{
    		$tpl->assign('valid_pay', 'error');
    	}
    }
    
    /**
     *Si on ne recoi pas de payement
     **/
    else
    {
    	$tpl->assign('valid_pay', '0');
    }
    if($payement)
    {
    $sql="UPDATE account.account SET cash = cash+".$CONFIG_is['nb_cash']." WHERE id = $id_membre";
    mysql_query($sql) or die (mysql_error());
    
    $tpl->assign('valid_pay', 'ok');
    }
    

     

    (code de Jigsaw dans MT2-CMS).

     

    Si tu ne comprends pas quelque chose là dedans, demande moi :)

     

    Je ne te conseille pas de te focaliser sur le code en lui même en rapport avec starpass mais sur le fonctionnement général pour l'adapter avec succès sur ton site.

  4. Alors tu trouver les deux ligne la :

    mysql_query("UPDATE $db_account.account SET cash=cash+5 WHERE $db_account.account.id='$idcompte'");//Vote valid� on add les valeurs

    mysql_query("UPDATE $db_account.account SET cash=cash+5 WHERE $db_account.account.id='$idcompte'");//Vote valid� on add les valeurs > :

     

    et tu modifie le +5 par ce que tu veux !!

     

    Le problème est au niveau de la gestion du temps. Il faut vérifier les paramètres d'entrées dans l'historique (avec la date du vote) et vérifier la génération de la condition "si l'écart entre les deux dates est supérieur à X heures".

  5. Dans le cas où le gm rentre une chaîne de caractère dans le input, tonumber(input()) renvoie nil et type(nil) renvoie "nil", donc est bien différent de "number"

    (pour répondre à ta question prindo)

     

    Le input() renvoie automatiquement une chaîne ou bien si l'utilisateur rentre des nombres il sera de forme numérique ?

  6. Non, non et renon ! :D

     

    Il y a une incohérence, voici un exemple

     

                                  coord_x_chunjo = tonumber(input())
                                   while type(coord_x_chunjo) != "number" do
                                       say_reward("Erreur de saisie. Vous devez saisir un nombre.")
                                       say_reward("Réésayez:")
                                       coord_x_chunjo = tonumber(input())
                                   end
    

     

    Ta variable cord_x_chunjo sera OBLIGATOIREMENT de type nombre vu que tu traduis ce qu'écris l'utilisateur dans le input en nombre avec la fonction tonumber(). Ce qui signifie que le type sera toujours number même si tu rentres du texte :)

  7. Il vous faut travailler sur 3 fronts. D'un côté, le formulaire d'affichage, d'un autre, le traitement du champs et enfin l'enregistrement dans la base de données.

     

    Commençons par voir le formulaire. Si vous n'avez pas modifié votre CMS, il est contenu dans inscription.tpl.

    Rajoutez un champs textarea où vous le voulez entre les balises

    comme ceci :

    
    

     

    Vous avez créé le nouveau champs dans le formulaire.

     

    Passons maintenant à son traitement via PHP ! Pour cela, direction inscription.php. Repérez les lignes de traitement :

     

    Commençons par sécuriser la variable comme ceci :

     

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

     

    
    //Si on envoie le formulaire et que l'inscription est activé
    if(isset($_POST['login']) and isset($_POST['mail']) and isset($_POST['mdp']) and $CONFIG['inscription'] == 1) 
    {
    $tpl->assign('envoie_form', '1');
    
    //Sécurité : On protège les variables.
    
    $pseudo=mysql_real_escape_string($_POST['login']);        
    $mdp=mysql_real_escape_string($_POST['mdp']);
    $mail=mysql_real_escape_string($_POST['mail']);
    $texte = mysql_real_escape_string($_POST['texte']); 
    
    $errors = '';
    
    //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, email, create_time, cash, rang) VALUES ('$pseudo', password ('$mdp'), '$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.
    
    
    if($errors == '') //Si l'inscription a fonctioné
    { $tpl->assign('valid_form', '1'); }
    else //Sinon on charge les erreurs
    { $tpl->assign('valid_form', $errors); }
    
    }
    

     

    Notre objectif est de rajouter le traitement de notre champs variable. Pour cela, il nous faut rajouter une condition.

     

    if (isset($texte) AND $texte != "") //Si l'utilisateur a rempli le champs
    {
    
    ... //on continue
    
    }
    else
    {
    $errorrs = 15; //L'utilisateur n'a pas rempli le champs de texte. On génère une erreur qui sera identifiée sous le chiffre 15 purement arbitraire pour la suite.
    }
    

     

    Glissons ça dans notre code

     

    //Si on envoie le formulaire et que l'inscription est activé
    if(isset($_POST['login']) and isset($_POST['mail']) and isset($_POST['mdp']) and $CONFIG['inscription'] == 1) 
    {
    $tpl->assign('envoie_form', '1');
    
    //Sécurité : On protège les varriables.
    
    $pseudo=mysql_real_escape_string($_POST['login']);        
    $mdp=mysql_real_escape_string($_POST['mdp']);
    $mail=mysql_real_escape_string($_POST['mail']);
    $texte = mysql_real_escape_string($_POST['texte']); 
    
    $errors = '';
    
    //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)
    		{
    			if (isset($texte) AND $texte != "") //Si l'utilisateur a rempli le champs texte
    			{
    				//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, email, create_time, cash, rang) VALUES ('$pseudo', 	password ('$mdp'), '$mail', '$date', '0', '1')";
    					mysql_query($sql) or die (mysql_error());
    
    				}
    				else { $errors =5; }//5: Ce pseudo est déjà utilisé.
    			}
    			else { $errors = 15; } //15 : champs de texte non rempli.
    		}
    		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.
    
    
    if($errors == '') //Si l'inscription a fonctioné
    { $tpl->assign('valid_form', '1'); }
    else //Sinon on charge les erreurs
    { $tpl->assign('valid_form', $errors); }
    
    
    }
    

     

    Nous avons presque fini !

     

    Allons dans la base de données account. Rajoutez un champs de type text de nom texte dans votre table account (je pense que vous savez faire).

     

    Il nous faut modifier la requête sql de manière à ce qu'il enregistre notre variable.

     

    Transformons la requête comme ceci :

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

     

    Une dernière chose, nous avons parlé d'un code erreur toute à l'heure :

    $errors = 15;

     

    Retournons dans inscription.tpl et repérons ces lignes

     

    Votre email est invalide.
    Le pseudo doit être compris entre 5 et 16 caractères.
    Le mot de passe doit être compris entre 5 et 16 caractères.
    Ce pseudo est déjà utilisé.

     

    C'est la définition des messages d'erreur en fonction du numéro que nous avons mis toute à l'heure, 15 ! Rajoutons donc la ligne :

    Vous n'avez pas rempli la zone de texte.

     

    Et voilà ! Nous avons fini !

     

    PS : Un mini tuto de la sorte prend un peu de temps ! Il est possible que j'ai oublié des choses, c'est tellement vite arrivé...

  8. C'est extrêmement compliqué.

     

    Déjà tu peux faire un truc simple : bloquer les votes toutes les 2 heures sur le compte. Ce système est inviolable mais il est possible de changer de compte.

     

    Tu peux toujours essayer de bloquer l'IP, il reviendra sous un proxy. Tu peux toujours essayer de bloquer la plupart des proxys, il y en a tellement d'autres...

     

    Il n'y a pas de solution à ton problème :)

  9. Comment recevoir les 100 Gold ?
    C'est très simple, connectez vous au site ensuite il suffit de cliquer sur les logo du "top-site" ci dessous, saisir un code de vérification et le tour est joué !      
    Votez sur topmetin.com et root-top.com ensuite gagnez 100 Gold Par vote ! (Toutes les 2Heures)
    
    
    

    Ton système affiche 100 mais il donne 5. En effet, les requêtes SQL modifiant les golds des utilisateurs sont ici :

     mysql_query("UPDATE $db_account.account SET cash=cash+5 WHERE $db_account.account.id='$idcompte'");//Vote valid� on add les valeurs mysql_query("UPDATE $db_account.account SET cash=cash+5 WHERE $db_account.account.id='$idcompte'");//Vote valid� on add les valeurs > :

    Tu rajoutes donc bien 5 à l'utilisateur, mais tu affiches 100. Vérifies les textes :)

    • Love 1
  10.     Validation de l'inscription        Vérification    <?php if($securite!='JEREMaimelaquequete!numero:0687541251'){    exit();}    $ipbox = gethostbyaddr($_SERVER['REMOTE_ADDR']);    $captcha=$_POST["captcha"];    if ($captcha == "blanc" || $captcha == "Blanc" || $captcha == "BLANC")    {        $password1=$_POST["password1"];        $password2=$_POST["password2"];        if ($password1 == $password2)        {            $compte=mysql_real_escape_string($_POST["compte"]);            $suppr=$_POST["suppr"];            $mail=mysql_real_escape_string($_POST["mail"]);            $question=mysql_real_escape_string($_POST["question"]);            $reponse=$_POST["reponse"];            if(is_numeric($_POST['stat'])){ $stat=$_POST['stat']; }            if (empty($password1) || empty($password2) || empty($compte) || empty($suppr) || empty($mail) || empty($question) || empty($reponse) || empty($stat))            {                echo 'Erreur! Assurez vous de ne laissé aucun champs vide.
    Revenez au formulaire, et remplissez tous les champs.';            }            else            {                $time=date("Y-m-d H:i:s",time());                $search=mysql_query("SELECT COUNT('account.account.id') as nb FROM account.account WHERE account.account.login='$compte'");                $find=mysql_fetch_array($search);                if ($find["nb"] == "0")                {                    $ipboxverif=mysql_query("SELECT COUNT('account.account.ipbox') as nb FROM account.account WHERE account.account.ipbox='$ipbox'");                    $ipboxverif2=mysql_fetch_array($ipboxverif);                    if ($ipboxverif2["nb"]>3)                    {                    echo "Il y à déjà trop de comptes créés depuis ce lieu.";                    }                    else                    {                    mysql_query("INSERT INTO account.account (login, password, social_id, email, question1, answer1, create_time, cash, rang, ipbox) VALUES ('$compte', password('$password1'), '$suppr', '$mail', '$question', password('$reponse'), '$time', '0', '1', '$ipbox')");                    //mysql_query("INSERT INTO account.account VALUES('','$compte',PASSWORD('$password1'),'','$suppr','$mail','','','','','$tim​e','$question',PASSWORD('$reponse'),'','','','OK','','','','','','','','$time','​$time','0000-00-00 00:00:00','0000-00-00 00:00:00','$time','$time','$time','','','')");                    echo 'Le compte '.$compte.' a bien été créé.
    
    Vous pouvez désormais jouer à Ton serveur -Online.
    
    Bon jeu sur Ton serveur -Online!';                    $mois = date('n');                    //mysql_connect('178.32.163.115', 'oregonc2', 'oregonc2oregonc2'); mysql_query("INSERT INTO site.stats (mois, rep) VALUES ('$mois', '$stat')");                    }                }                else                {                    echo 'Erreur! Un compte possède déjà ce nom.
    Revenez au formulaire, et changez votre nom de compte.';                }            }        }        else        {            echo 'Erreur! Le mot de passe et la vérification du mot de passe ne sont pas les mêmes.
    Revenez au formulaire, et vérifiez les deux mots de passe.';        }    }    else    {        echo 'Erreur! La réponse est fausse.
    Revenez au formulaire, et répondez correctement à la question.';    }?>
    

    Je t'ai enlevé le système de protection contre les proxys.

    • Love 1
  11. Ces mots de passe sont hashés via un algorithme md5. Par définition, le hashage ne fonctionne que dans un sens : vous pouvez hasher quelque chose mais pas le déhasher.

     

    Il y a cependant plusieurs types de moyens pour décrypter :

    - le brut force, on teste toutes les combinaisons possibles (c'est assez lourd comme manip, parfait pour le *.*)

    - la méthode "intelligente", où on enregistre les occurrences au fur et à mesure des décryptages pour en arriver à une table de hashage.

     

    En clair, cherchez sur google et vous devriez trouver votre bonheur.

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.