[Tutoriel]boutique iconomy

pompom

Mangeur de pomme
19 Juin 2011
142
7
13
29
Belgique
www.mine-arc.be
Bonjour à toi !

Et merci pour ce script :)

Je l'ai installé sur mon site récemment, cependant, lorsque je je rentre le code 'de test', j'arrive bien sur la page pour rentrer le pseudo.

Lorsque je rentre mon pseudo, cela me renvois vers une page d'erreur StarPass qui me dis que le code n'est pas bon, alors que celui ci est forcément bon étant donné que j'ai réussi à aller sur la page de sélection de joueur..

Peux -tu m'éclairer à ce sujet ? Merci à toi

C'est bien bizare , quelqu'un rencontre le meme probleme ? :confused:.

Vérifie que les noms des pages que tu as rentré dans le document starpass est le meme , puis vérifie que ta bien rentré les bons code au bonne page :) tien moi au courant merci
 

emprexx

Aventurier
10 Décembre 2011
3
0
1
33
Salut à toi pompom, tout d'abord merci infiniment pour cet initiative d'aider les apprentis webmaster à caser leur boutique iconomy, car moi même j'ai bloqué avec ce foutus cookie ^^.

Je rencontre moi aussi le même soucis que notre cher ami ... Redirection vers la page d'erreur quand vient l'étape mysql. J'ai fait un essais sans la suppression du cookie, même résultat ... Très louche cette histoire...

J'espère sincèrement que tu pourras m'aider sur ce coup là, car mon serveur se lance dans quelque temps et je patauge dans la gadoue ...
 

emprexx

Aventurier
10 Décembre 2011
3
0
1
33
Re salut, oui il est tard au moment où je post, mais je suis un acharné, et j'ai enfin réussit. Visiblement le script de protection de starpass n'est pas vraiment fonctionnel ou alors on ne sais pas l'utiliser correctement, faut dire qu'il y à peut d'information à ce sujet sur leur site.

Bref voici ma méthode, vous pourrez apporter vos modifications/corrections.

J'ai du créer une page formu.php pour séparer le formulaire du script starpass n°2, qui ne faisait que vérifier la valider du code ( valide jusqu'à fermeture du navigature ) et non du cookie, ce qui permettait à l'utilisateur de refresh la page et donc de recréer le cookie.

Et j'ai du modifier le script starpass n°3 cf: plus bas.

Dans la page ajout.php :

Code:
<?php
// Déclaration des variables
$ident=$idp=$ids=$idd=$codes=$code1=$code2=$code3=$code4=$code5=$datas='';
$idp = ******;
// $ids n'est plus utilisé, mais il faut conserver la variable pour une question de compatibilité
$idd = id_de_votre_document;
$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);
 
/* Envoi 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");
if(!$get_f)
{
exit("Votre serveur n'a pas accès au serveur de Starpass, merci de contacter votre hébergeur.");
}
$tab = explode("|",$get_f[0]);
 
if(!$tab[1]) $url = "http://script.starpass.fr/erreur.php";
else $url = $tab[1];
 
// 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] ne répond pas "OUI" l'accès est refusé
// On redirige sur l'URL d'erreur
if(substr($tab[0],0,3) != "OUI")
{
header("Location: $url");
exit;
}
else
{
/* Le serveur a répondu "OUI"
 
On place un cookie appelé CODE_BON et qui vaut la valeur 1
Ce cookie est valide jusqu'à ce que l'internaute ferme son navigateur
Dans les pages suivantes, nous testerons l'existence du cookie
S'il existe, c'est que l'internaute est autorisé,
sinon on le renverra sur une page d'erreur */
  setCookie("CODE_BON", "1", 0);
header("Location: formu.php"); /* Redirection vers le formulaire du pseudo  pour éviter le refresh avec F5 */
// Si vous avez plusieurs documents, nommer le cookie plutôt 'code'+iDocumentId
 
// vous pouvez afficher les variables de cette façon :
// echo "idd : $idd / codes : $codes / datas : $datas / pays : $pays / palier : $palier / id_palier : $id_palier / type : $type";
}
?>

Dans formu.php :

Code:
<?php
if(isset($_COOKIE['CODE_BON']))
{
if($_COOKIE['CODE_BON']!='1')
{
header( "Location: http://script.starpass.fr/erreur.php" );
exit(1);
}
}
else
{
header( "Location: http://script.starpass.fr/erreur.php" );
exit(1);
}
?>
<form method="post" action="ajout2.php">
Pseudo: <input type="text" name="pseudo" size="45" /> <br />
<input type="submit" value="Confirmer" />
</form>

Dans ajout2.php :

Code:
<?php
if(isset($_COOKIE['CODE_BON']))
{ 
if($_COOKIE['CODE_BON'']!='1')
{
header( "Location: http://script.starpass.fr/erreur.php" );
exit(1);
}
}
else
{
header( "Location: http://script.starpass.fr/erreur.php" );
exit(1);
}
?>
<?php
if(!empty($_POST['pseudo']))
{
//erreures
error_reporting(E_ALL);
//Infos
include "config_bdd.php";
echo "<h1>Iconomy</h1>";
$player = $_POST['pseudo'];
$conn = mysql_connect ($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);
$result = mysql_query("SELECT * FROM nom_de_la_table_iconomy WHERE username='".$player."'");
$row = mysql_fetch_array($result);
if($_POST['pseudo'] == $row['username'])
{
echo 'Salut '. $row['username'] . ' ta balance est de' . $row['balance'] . 'on va y ajouter 500';
mysql_query("UPDATE nom_de_la_table_iconomy SET balance=balance+500 WHERE id=".$row[0]."");
[COLOR=#ff9900]setcookie("CODE_BON");[/COLOR] /* Suppression du cookie */
}
else
echo 'Le pseudo saisie n\'est pas inscrit sur le serveur !';
}
else
echo 'Vous devez remplir le champ !';
?>

Afin d'éviter la redirection vers la page erreur.php après avoir entré le code starpass, j'ai du modifier le script de protection suivant :

Code:
<?php
// On vérifie si le cookie existe
if(isset($HTTP_COOKIE_VARS['CODE_BON']))
{
// Si le cookie existe mais que le contenu n'est pas bon on le redirige sur la page d'erreur
if( $HTTP_COOKIE_VARS['CODE_BON'] != '1'){
 
header( "Location: http://script.starpass.fr/erreur.php" );
exit(1);
}
}
else{
 
// Si le cookie n'existe pas on redirige l'internaute sur la page d'erreur
header( "Location: http://script.starpass.fr/erreur.php" );
exit(1);
}
?>

par :

Code:
<?php
if(isset($_COOKIE['CODE_BON']))
{
if($_COOKIE['CODE_BON']!='1')
{
header( "Location: http://script.starpass.fr/erreur.php" );
exit(1);
}
}
else
{
header( "Location: http://script.starpass.fr/erreur.php" );
exit(1);
}
?>

Il reste quand même un dernier problème, si l'utilisateur est assez malin, il lui suffit après la requête mysql de faire un précédant pour revenir au formulaire, et de modifier la valeur du cookie CODE_BON pour contourner la protection ci-dessus.

La solution serais donc de mettre une protection supplémentaire avec des sessions chose que je ne sais pas du tout faire.

Cordialement emprexx.
 

emprexx

Aventurier
10 Décembre 2011
3
0
1
33
J'ai réussit à corriger mon soucis de "Cookie" en retirant le formulaire et en utilisant une variable de CMS (wordpress) qui donne le pseudo du joueur, avec une petite redirection, l'utilisateur na pas du tout le temps de voir la valeur "valide" de mon cookie, donc pour ma part boutique 100% opérationnelle. Et je doit dire que c'est grâce à toi pompom merci ^^
 

pompom

Mangeur de pomme
19 Juin 2011
142
7
13
29
Belgique
www.mine-arc.be
ET bien magnifique je suis ravis je t'ai apporté solutions ;) c'est bizare moi mon script fonctionne sans soucis maintenant il faut apporté des modifs ces un bon départ .
 

fluxeboy

Aventurier
9 Janvier 2012
1
0
1
35
Bonjour,
Tout d'abord merci pour ce tuto très utile.
j'ai le meme probleme que emprexx, quand je rentre mon pseudo, cela me renvois vers une page d'erreur StarPass qui me dis que le code n'est pas bon.
 

pompom

Mangeur de pomme
19 Juin 2011
142
7
13
29
Belgique
www.mine-arc.be
Bonjour,
Tout d'abord merci pour ce tuto très utile.
j'ai le meme probleme que emprexx, quand je rentre mon pseudo, cela me renvois vers une page d'erreur StarPass qui me dis que le code n'est pas bon.
hello , l'enroule ses que sa ses coté starpass :/ je n'ai rien modifié au code startpass soit vous avez mal paramétré votre script sur starpass soit je ne sais pas x)