Bonjour
Voila je rencontre un petit problème avec mon code.
<?php session_start();
require("includes/config.php");
$reqconfig = $BDD->query("SELECT * FROM configuration") or die('Erreur SQL ! <br />');
$config = $reqconfig->fetch();
$membres = 'membres';
//code
if($membres != 'membres')
{
echo 'Ceci est un test :',$membres;
}
$BDD->query("UPDATE membres SET jetons = jetons + 1 WHERE id = '".$membres."'");
header('Location: retour_achat.php');
exit();
?>
J'ai crée une page avec un script starpass et lorsque le membres valide sont code il passe par un page qui lui valide le payement et qui lui ajoute un jetons.
La page qui dois l'ajouter c'est le code au dessus mais quand il valide le code ça ne rajoute pas de jetons.
J'ai donc essayer un autre code celui-ci :
<?php session_start();
require("includes/config.php");
$reqconfig = $BDD->query("SELECT * FROM configuration") or die('Erreur SQL ! <br />');
$config = $reqconfig->fetch();
$_SESSION['jetons'] = $_SESSION['jetons']+1;
$BDD->query("UPDATE membres SET jetons = ".$_SESSION['jetons']." WHERE pseudo = '".$_SESSION['pseudo']."'");
header('Location: retour_achat.php');
exit();
?>
Il ajoute bien le jetons mais le soucis c'est que si je suis a 5 jetons et que je me déconnecte et que je me reconnect est que j'achete un jetons je retombe a un jetons.
Qui peut m'aider a réglé ceci merci
Salut,
C'est normal, si tu stocks dans une session les jetons une fois la session détruite tu perds tout. donc tu devrais commencer par extraire le nombre de jeton dans la sessions avant de faire l'update et ensuite tu l'incrémentes.
Hello !
Que se passe t-il si tu executes le code suivant :
<?php
session_start();
require 'includes/config.php';
$reqconfig = $BDD->query("SELECT * FROM configuration") or die('Erreur SQL ! <br />');
$config = $reqconfig->fetch();
$req = "UPDATE membres SET jetons = jetons + :nombre_jetons WHERE pseudo = :pseudo";
$stmt = $BDD->prepare();
// Modifier ton nombre de jetons à ajouter
$stmt->bindParam(':nombre_jetons', 1, PDO::PARAM_INT);
// Modifier ton pseudonyme
$stmt->bindParam(':pseudo', 'monPseudo', PDO::PARAM_STR);
$stmt->execute();
header('Location: retour_achat.php');
?>
Cordialement,
Gasp.
Bonjour,
Gasp, Déjà merci d'accepter de m'aider.
Quand j'entre ton code j'ai une page blanche.
Et dans mon fichier error_log ceci s'affiche :
PHP Warning: PDO::prepare() expects at least 1 parameter, 0 given in ./achatok.php on line 7
PHP Fatal error: Call to a member function bindParam() on a non-object in ./achatok.php on line 10
Bonsoir,
Le probleme est regler mais le soucis est que si les utilisateurs m'ont monsite/achatok.php sa leur crédite un jetons
Pardon, oui effectivement, prepare() prends un argument, qui est la requête.
Pour sécuriser ton achatok.php, il faut utiliser le script qui t'ai fourni avec Starpass, le script de sécurisation.
Bonne soirée,
Gasp
<?php session_start();
require("includes/config.php");
$reqconfig = $BDD->query("SELECT * FROM configuration") or die('Erreur SQL ! <br />');
$config = $reqconfig->fetch();
$BDD->query("UPDATE membres SET jetons = jetons + 1 WHERE pseudo = '".$_SESSION['pseudo']."'");
header('Location: commande.php?status=valide'); exit();
?>
<noscript><meta http-equiv="refresh" content="0;url=http://script.starpass.fr/error_code2.php?idd=344173&idp=76223"></noscript><script type="text/javascript" src="http://script.starpass.fr/error_code.php?idd=344173&idp=76223"></script>
Réglé j'avait oublier de faire ceci chez starpass lol :
Vous pouvez également utiliser un script PHP pour protéger vos pages : Installation Script PHP
Bonjour, Le voici
<?php
// Déclaration des variables
$ident=$idp=$ids=$idd=$codes=$code1=$code2=$code3=$code4=$code5=$datas='';
$idp = 76223;
// $ids n'est plus utilisé, mais il faut conserver la variable pour une question de compatibilité
$idd = 344173;
$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/error.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 );
// 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 les pages suivantes de la zone payante de votre site, vous pouvez alors vérifier l'existence de ce cookie :
<?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/error.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/error.php" );
exit(1);
}
?>