Récupérer un nombre stocker dans une basse de donnée

Résolu/Fermé
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 - Modifié par crapoulou le 1/01/2016 à 22:24
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 8 janv. 2016 à 16:07
Bonsoir,
J'ai un site ou je dois récupérer le nombre de token que j'ai dans ma table "membre", j'ai tester de faire comme sa:
vous avez <?php echo htmlentities(trim($_SESSION['token'])); ?> token.<br />

mais sa me mais un "!" a la place de se que je dois récupérer.
Merci de votre aide :)

7 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
1 janv. 2016 à 23:02
Bonjour,
Peut tu nous coller le résultat de cette commande :
print_r($_SESSION); 


Et aussi ... nous montrer à quel moment tu initialises cette variable (le code php...)



0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
3 janv. 2016 à 00:28
Bonsoir,
dsl javais pas vue le poste, la je vais me coucher, demain a la première heure je vous mains sa, Merci de ta réponse jordane45.
0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
Modifié par colten11100 le 3/01/2016 à 11:32
Le code de la page login.php:
<?php
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
 if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

 $base = mysql_connect ('host', 'user', 'mdp');
 mysql_select_db ('basse_de_donnée', $base);

 $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
 $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 $data = mysql_fetch_array($req);

 mysql_free_result($req);
 mysql_close();

 if ($data[0] == 1) {
  session_start();
  $_SESSION['login'] = $_POST['login'];
  header('Location: index.php');
  exit();
 }

 elseif ($data[0] == 0) {
  $erreur = 'Compte non reconnu.';
 }
 else {
  $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
 }
 }
 else {
 $erreur = 'Au moins un des champs est vide.';
 }
}
?>


et le code de la page index.php:
<?php
session_start();
if (!isset($_SESSION['login'])) {
 header ('Location: login.php');
 exit();
}
?>


Et avec se que tu ma passe, sa marche l'argent mieux:
<?php echo htmlentities(print_r($_SESSION['token'])); ?>

Sa me mais bien le monbre de token qu'il y a dans la basse, Merci a toi.

Les erreurs les plus simple font les plus gros problème :)
0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
3 janv. 2016 à 12:43
Pardon, je suis allez tros vite, le résulta de cette variable me donne 1 alors qu'il y a pas "1" dans la base de donnée, Merci de votre aide.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 janv. 2016 à 13:18
Peux tu faire ce que je t'ai demandé et nous coller le résultat ?
0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
3 janv. 2016 à 13:29
Le résultat c'est a dire ??, jais remplacer sa:
<?php echo htmlentities(trim($_SESSION['token'])); ?>

Par sa:
<?php echo htmlentities(print_r($_SESSION['token'])); ?>

Et se que sa me donne c'est "1" mais c'est pas se qui est dans la base de donnée.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018
3 janv. 2016 à 13:39
Non !

Fais juste :
print_r($_SESSION);

en début de ta page .... et colles nous le résultat !
0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
3 janv. 2016 à 14:12
Dsl javais pas compris comme sa O_o
Et sa ne change absolument rien.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 3/01/2016 à 15:55
Sachant que... je pense que ton erreur vient du fait que tu as légèrement oublié de démarrer tes sessions dans ta page login.php.....

De plus, prends l'habitude d'initialiser tes variables AVANT de le utiliser....
pour ce faire, tu peux utiliser l'écriture ternaire et la fonction ISSET ( ou !EMPTY ).

Penses aussi à créer un fichier de connexion à ta BDD que tu n'auras plus qu'à inclure dans les pages où tu en as besoin
(plutôt que de copier/coller le code dans chacune de tes pages.... )


Voici ce que devrait être ton code :
<?php
// Fichier de connexion à la BDD : cnxBdd.php
 $base = mysql_connect ('host', 'user', 'mdp');
 mysql_select_db ('basse_de_donnée', $base);


?>



<?php
//Fichier : Login.php

//démarrage des sessions
session_start();


//connexion à la bdd
require_once "cnxBdd.php";

//récupération propre des variables
$connexion = isset($_POST['connexion']) ? $_POST['connexion']: NULL;
$login = !empty($_POST['login']) ? $_POST['login']: NULL;
$pass = !empty($_POST['pass']) ? $_POST['pass']: NULL;


if ($connexion  &&  $connexion == 'Connexion') {
 if ($login && $pass ) {


 $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($login).'" AND pass_md5="'.mysql_escape_string(md5($pass)).'"';
 $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 $data = mysql_fetch_array($req);

 mysql_free_result($req);
 mysql_close();

 if ($data[0] == 1) {
  $_SESSION['login'] = $login;
  header('Location: index.php');
  exit();
 }

 elseif ($data[0] == 0) {
  $erreur = 'Compte non reconnu.';
 }
 else {
  $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
 }
 }
 else {
 $erreur = 'Au moins un des champs est vide.';
 }
}
?>



NB: isset permet de vérifier qu'une variable existe ...... !empty .. qu'elle existe et n'est pas vide. Donc pas besoin de faire les deux !!!



NB²: l'extension mysql est obsolète. Je t'invite à passer à la PDO.
Merci de lire ceci : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
3 janv. 2016 à 14:25
A se moment la, vous allez péter un plomb avec mon fichier d’inscription et tout le reste ^^
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018
3 janv. 2016 à 15:58
Non.... puisque maintenant que je t'ai donné la marche à suivre et inculqué quelques bonnes pratiques... tu vas tout bien refaire au propre tout seul comme un grand.....
^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
Modifié par colten11100 le 3/01/2016 à 14:41
J'ai fais la modification sur le fichier login.php et créer le fichier cnxBdd.php avec la connexion a la BDD et sa na rien changer a mon problème.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 janv. 2016 à 15:56
.... as tu fais le PRINT que je te demande depuis le début..... il te donne quoi ???????
( à faire sur la page qui contient ton problème bien entendu ! )
0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
3 janv. 2016 à 17:32
OUI JE L'AIS FAIS, je vous l'ai déjà dit, sa ne change rien, dut tout, j'ai fais quatre fois différament, 1er:
<?php
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: login.php');

	exit();
print_r($_SESSION);
}
?>

2eme:
<?php
print_r($_SESSION);
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: login.php');

	exit();
}
?>

3eme:
<?php
session_start();
print_r($_SESSION);
if (!isset($_SESSION['login'])) {
	header ('Location: login.php');

	exit();
}
?>

4eme:
<?php
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: login.php');
	print_r($_SESSION);
	exit();
}
?>


il y a rien qui change a chaque une des fois.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 janv. 2016 à 18:08
Bon..deja.. Il n'y a que le cas numero 3 qui peut fonctionner. ... mais encore faudrait il désactiver la redirection qui se trouve dans ton if... sinon comment espères tu pouvoir voir quoi que ce soit ??
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 janv. 2016 à 18:34
Autrement dit .... fais ceci et COLLES nous le résultat sur le forum :
<?php
//Afficahge des erreurs PHP au cas où (le temps des tests)
error_reporting(E_ALL);

//démarrage des sessions
session_start();


//----------------------------------------------------------//
// LE temps des tests :
//----------------------------------------------------------//
echo "<br> La variable SESSION contient :<br><pre>";
 print_r($_SESSION);
echo "</pre>";
exit();
//----------------------------------------------------------//


//Si l'utilisateur n'est pas connecté ...; retour à la page login
if (!isset($_SESSION['login'])) {
	header ('Location: login.php');
	exit();
}



?>




Au passage... ajoutes la ligne suivante au début de CHACUNE de tes pages PHP (le temps des tests pour vérifier qu'il n'y ai pas d'erreur)
//Afficahge des erreurs PHP au cas où (le temps des tests)
error_reporting(E_ALL);
0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
3 janv. 2016 à 18:59
J'ai sa qui se mais:
La variable SESSION contient :
Array
(
[login] => YopHack
)
0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
8 janv. 2016 à 15:33
Bonjour,
J'ai finie par garder "mysql_" J'ai réaliser que sa prend trop de tant que je n'ai pas.Le site dois ouvrir très rapidement mais je comprend rien a mysqli_ ou PDO.Des que le site sera ouvert le tant que c'est encore valide je me remétrer au doc mais pour le moment je navire pas a récupérer la variable "token" dans mon formulaire de login.php et le faire passez par la session pour que je la prenne dans mon index.php avec
<?php echo htmlentities(trim($_SESSION['token'])); ?>


Je vous repasse le code des deux page
login.php:
<?php

//démarrage des sessions
session_start();

//connexion à la bdd
require_once "cnxBdd.php";

//récupération propre des variables
$connexion = isset($_POST['connexion']) ? $_POST['connexion']: NULL;
$login = !empty($_POST['login']) ? $_POST['login']: NULL;
$pass = !empty($_POST['pass']) ? $_POST['pass']: NULL;

if ($connexion  &&  $connexion == 'Connexion') {
 if ($login && $pass) {


 $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($login).'" AND pass_md5="'.mysql_escape_string(md5($pass)).'"';
 $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 $data = mysql_fetch_array($req);
 mysql_close();

 if ($data[0] == 1) {
  session_start();
  $_SESSION['login'] = $login;
  header('Location: index.php');
  exit();
 }

 elseif ($data[0] == 0) {
  $erreur = 'Compte non reconnu.';
 }
 else {
  $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
 }
 }
 else {
 $erreur = 'Au moins un des champs est vide.';
 }
}
?>

index.php:
<?php
//Afficahge des erreurs PHP au cas où (le temps des tests)
//error_reporting(E_ALL);

//démarrage des sessions
session_start();


/*
//----------------------------------------------------------//
// LE temps des tests :
//----------------------------------------------------------//
echo "<br> La variable SESSION contient :<br><pre>";
 print_r($_SESSION);
echo "</pre>";
exit();
//----------------------------------------------------------//
*/

if (!isset($_SESSION['login'])) {
	header ('Location: login.php');
	exit();
}
?>

Merci de votre aide , comme toujours ;-)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
8 janv. 2016 à 15:45

je navire pas a récupérer la variable "token" dans mon formulaire de login.php

Heu.. à moins que je sois devenu miro ... je ne vois pas le code de récupération du token ....
où l'as tu mis ??
0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
8 janv. 2016 à 15:49
Oui, je l'ai enlevez, je sais pas comment faire, vous pouvez m'aidez ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 8/01/2016 à 15:49
N'aurais tu pas oublié de modifier ta requête pour récupérer le token (qui je suppose est dans ta table...)
$sql = 'SELECT count(*) 
            ,token
          FROM membre 
          WHERE login="'.mysql_escape_string($login).'" 
               AND pass_md5="'.mysql_escape_string(md5($pass)).'"';


Et dans ton code PHP ensuite :

 if ($data[0] == 1) {
  $_SESSION['login'] = $login;
  $_SESSION['token'] = $data['token'];
  header('Location: index.php');
  exit();
 }

0
colten11100 Messages postés 94 Date d'inscription vendredi 23 janvier 2015 Statut Membre Dernière intervention 12 décembre 2018 2
Modifié par colten11100 le 8/01/2016 à 16:08
Et bien merci !!, Je vais te parétre lourd mais ..
j'ai un autre soucie dans mon code et un truque que je sais pas faire:
Il y a pour le fichier inscription.php, j'ai un soucie avec le nom de caractère minimum:
<?php

// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
 // on teste l'existence de nos variables. On teste Ègalement si elles ne sont pas vides
 if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
 // on teste les deux mots de passe
 if ($_POST['pass'] != $_POST['pass_confirm']) {
  $erreur = '<h2>Les 2 mots de passe sont diffÈrents.</h2>';
 }
 if ($_POST['pass'] && $_POST['pass_confirm'] >=6) {
  $erreur = '<h2>Le mot de passe et tros court.</h2>';
 }
 if ($_POST['login'] >=6) {
  $erreur = '<h2>Le speudo et tros court.</h2>';
 }
 else {
  // Connexion a la base de donnÈe
  require_once "cnxBdd.php";

  // on recherche si ce login est dÈj‡ utilisÈ par un autre membre
  $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
  $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  $data = mysql_fetch_array($req);
  $_POST['token'] = 0;
  if ($data[0] == 0) {
  $sql = 'INSERT INTO membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'", "'.mysql_escape_string($_POST['token']).'")';
  mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
  $_POST['token'] = 0;
  session_start();
  $_SESSION['login'] = $_POST['login'];
  $_SESSION['token'] = $_POST['token'];
  header('Location: index.php');
  exit();
  }
  else {
  $erreur = '<h2>Un membre possËde dÈj‡ ce login.</h2>';
  }
 }
 }
 else {
 $erreur = '<h2>Au moins un des champs est vide.</h2>';
 }
}
?>


Et le truque que je sais pas faire, c'est de faire une case pour ajouter des token dans la page index.php.
Se que je veux c'est si mon mon et = a seluit que je veux, je peux ajouter des token au pseudo de la personne que je veux
sinon erreur
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
8 janv. 2016 à 16:06

j'ai un autre soucie dans mon code

Qui dit "autre souci" .. dit ..... Nouvelle QUESTION.
Pour faciliter la gestion du site et la recherche à l'interieur pas d'autres internaut, il est conseillé de ne poser Qu'une question par discussion.
Merci de bien vouloir clôturer celle-ci ... et d'en ouvrir une autre propre à cette nouvelle question.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
8 janv. 2016 à 16:07
Au passage, tu me feras plaisir en appliquant... dans ce "nouveau" code... les recommandations que je t'ai fait pour ton code précédent...
Ne serait-ce que pour la récupération "propre" des variable (via les ISSET et l'écriture Ternaire)
0