récupération de variable session

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : récupération de variable session

Re: récupération de variable session

par charabia » 15 nov. 2010, 11:11

Affiches ta requête pour voir si tu n'as pas une erreur à ce niveau. Tu peux l'exécuter directement dans phpmyadmin

Re: récupération de variable session

par heizeul » 14 nov. 2010, 11:54

slt et merci pour votre aide mais ca doit vraiment pas etre pour moi le php, j'ai remplacé mon code par celui là, mon menu déroulant a bien disparu (normal) mais quand je complète le formulaire et que je valide pas de message d'erreur mais ma bdd ne se mets pas a jour....

Re: récupération de variable session

par Ryle » 13 nov. 2010, 23:43

Il y a deux choses à distinguer : les informations de session, et les données en base.

En session, tu vas pouvoir stocker toutes les informations dont tu as besoin sur l'utilisateur connecté. Ainsi, tu peux stocker une info sur le membre connecté qui te permettra d'exécuter tes requêtes en fonction de cette info.
Quand la session est démarrée, la variable $_SESSION est accessible et contient tout ce que tu y as stocké. En l'occurrence, tu as stocké la variable membre lors de sa connexion, que tu peux récupérer à tout moment.

En base, il y a les données de tous tes utilisateurs. Celles qui t'intéressent, ce sont celles de ton utilisateur connecté, c'est à dire celles pour lesquelles le membre est celui stocké en session. Tu peux donc préciser que ce sont ces données que tu veux récupérer en filtrant les résultats de tes requêtes pour dire que tu ne veux que celles-ci (même principe que lorsque tu fais un update, tu indiques bien quel enregistrement tu veux mettre à jour avec un WHERE membre = 'xxx')

Ex :
$sql = " SELECT membre FROM stats  WHERE Type='equipier' AND membre = '".$_SESSION['membre']."'";

Ps : lorsque tu fais un update d'une table, tu peux mettre à jour plusieurs champs simultanément :
$result = mysql_query(" UPDATE stats 
  SET 
    Habilité='$lechamp5' 
    , Défense='$lechamp4'
    ,  Attaque='$lechamp3'
    ,  MAJ='$date'
  WHERE membre='$membre'");

// équivaut à tes 4 requêtes, mais en une seule mise à jour (donc plus optimisé :))

$result = mysql_query(" UPDATE stats SET Habilité='$lechamp5' WHERE membre='$membre'");
$result = mysql_query(" UPDATE stats SET Défense='$lechamp4' WHERE membre='$membre'");
$result = mysql_query(" UPDATE stats SET Attaque='$lechamp3' WHERE membre='$membre'");
$result = mysql_query(" UPDATE stats SET MAJ='$date' WHERE membre='$membre'");

Re: récupération de variable session

par heizeul » 13 nov. 2010, 23:42

bon et bien çà fait 2 heures que je patauge et toujours pas réussi, le pire c'est que je suis sûr qui a rien de plus simple :twisted:

Re: récupération de variable session

par heizeul » 13 nov. 2010, 22:26

bah oui mais suis vraiment le débutant de base et je sais que je dois récupérer ma variable session mais pour moi c'est d'un compliqué

Re: récupération de variable session

par charabia » 13 nov. 2010, 22:04

Dans ta seconde requête il te suffit de n'afficher que les données du membre logué grâce à son pseudo ou son ID.

récupération de variable session

par heizeul » 13 nov. 2010, 21:55

bonjours, j'ai une liste des membres et je viens d'installer un système de session qui fonctionne. Avant d'avoir ce système de session j'avais fait un menu déroulant ou chaque membre devait selectionner son pseudo pour pouvoir mettre a jour ses données, maintenant je voudrai supprimé ce menu déroulant et utiliser la session pour éviter qu'un membre puisse rentrer par erreur des données sur un autre compte que le sien....

comment puis- je modifier mon code actuel qui est le suivant ?

Code : Tout sélectionner

<?php date_default_timezone_set('Europe/Paris'); $date= strftime( "%d/%m/%Y-%H:%M"); $sql_serveur = "xxxxxxxx"; $sql_base = "nom_bdd"; $sql_login = "xxxxxx"; $sql_password = "xxxx"; // Connection au serveur mySQL @mysql_connect($sql_serveur, $sql_login, $sql_password) or die("Connection au serveur impossible !"); @mysql_select_db($sql_base); $sql = " SELECT membre FROM stats WHERE Type='equipier'"; $result = mysql_query($sql) or die("Requete pas comprise"); echo "<form action='test.php' method='POST'> <select name=membre id='membre'> <OPTION VALUE=''>Choisissez votre avatar</OPTION>"; while ($row=mysql_fetch_array($result)) { echo"<option>$row[0]</option>"; } echo"<p>Votre avatar:</p></select>"; ?>


et je vous mets la page entière au cas ou il vous manquerai quelque chose. Merci d'avance pour votre aide.
<?php
session_start();
if (!isset($_SESSION['membre'])) {
	header ('Location: login.php');
	exit();
}
?>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>test session</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<link rel="stylesheet" media="screen" type="text/css" title="combats" href="presentation.css" />
    </head>
<body>	


	<center><img src="14.jpg" alt="logo"/></center>

<center><a href="deconnexion.php">Déconnexion</a></span></center>




<div class="stats"><center>	
	<?php
	
	date_default_timezone_set('Europe/Paris'); 
$date= strftime( "%d/%m/%Y-%H:%M"); 
	


	
	$sql_serveur = "xxxxxxxx"; $sql_base = "nom_bdd"; $sql_login = "xxxxxx"; $sql_password = "xxxx";
// Connection au serveur mySQL
@mysql_connect($sql_serveur, $sql_login, $sql_password) or die("Connection au serveur impossible !");
@mysql_select_db($sql_base);

$sql = " SELECT membre FROM stats  WHERE Type='equipier'";
$result = mysql_query($sql) or die("Requete pas comprise"); 
echo "<form action='test.php' method='POST'>

<select name=membre id='membre'>
<OPTION VALUE=''>Choisissez votre avatar</OPTION>";
while ($row=mysql_fetch_array($result))
{
echo"<option>$row[0]</option>";
}
echo"<p>Votre avatar:</p></select>";

?>
<form action="test.php" method="post">
       <p>ATT:<input name="att" size="4" value="" type="text"/>
   
  DEF:<input name="def" size="4" value="" type="text"/>
  
 Habilité:<input name="hab" size="4" value="" type="text"/>
  
  Attaque:<input name="attaque" size="4" value="" type="text"/>
 
 Défense:<input name="defense" size="4" value="" type="text"/>
  </p>
   <input name="Valider" value="Valider" type="submit"/>
   </form></center></div>

<?php

if(isset($_POST["Valider"]) AND isset($_POST['clodo']))

{

//On attribue une variable pour chaque champ du formulaire
//pseudo
//email
$lechamp1 = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["att"])));
//commentaire
$lechamp2 = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["def"])));
$membre=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["membre"])));

//on vérifie les champs 1 par 1 pour voir si ils ne sont pas vides
if (empty($lechamp1)){
$alerte1 ='Vous n\'avez pas saisie votre ATTAQUE.';
}
else if(empty($lechamp2)){
$alerte2 ='Vous n\'avez pas saisie votre DEFENSE.';
}
//Si tout est ok
else
{
// on enregistre les données
$result = mysql_query(" UPDATE stats SET ATT='$lechamp1' WHERE membre='$membre'");
$result = mysql_query(" UPDATE stats SET DEF='$lechamp2' WHERE membre='$membre'");

// Fermeture de la connexion à la base de données
						 
//on informe que le message est enregistré
echo '';
//on ferme else
}
//on ferme if(isset($_POST["Valider"]))
}
?>
 <?php

if(isset($_POST["Valider"]) AND isset($_POST['membre']))

{

//On attribue une variable pour chaque champ du formulaire
//pseudo
//email
$lechamp3 = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["attaque"])));
//commentaire
$lechamp4 = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["defense"])));
$lechamp5 =mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["hab"])));

//on vérifie les champs 1 par 1 pour voir si ils ne sont pas vides
if (empty($lechamp1)){
$alerte1 ='Vous n\'avez pas saisie votre ATTAQUE.';
}
else if(empty($lechamp2)){
$alerte2 ='Vous n\'avez pas saisie votre DEFENSE.';
}
//Si tout est ok
else
{
// on enregistre les données
$result = mysql_query(" UPDATE stats SET Habilité='$lechamp5' WHERE membre='$membre'");
$result = mysql_query(" UPDATE stats SET Défense='$lechamp4' WHERE membre='$membre'");
$result = mysql_query(" UPDATE stats SET Attaque='$lechamp3' WHERE membre='$membre'");
$result = mysql_query(" UPDATE stats SET MAJ='$date' WHERE membre='$membre'");
						 
//on informe que le message est enregistré
echo '';
//on ferme else
}
//on ferme if(isset($_POST["Valider"]))
}
?>
<table cellpadding=10 cellspacing=0 height=50><tr><th><span class="tableau">membre</th><th>ATT</th><th>DEF</th><th>Fightvalue</th><th>Habilité</th><th>Attaque</th><th>Défense</th><th>MAJ</th></span></tr><?php

// -------------------------------------------------------
// (exemple)
// La requete (exemple) :

$query = "SELECT membre,ATT,DEF,Fightvalue,Habilité,Attaque,Défense,MAJ FROM stats WHERE Type='equipier' ORDER BY Fightvalue DESC";
$result = mysql_query($query) or die('Erreur SQL !<br>'.$result.mysql_error());
// -------------------------------------------------------
// affichage
while ($ligne = mysql_fetch_object($result))
{
echo"<tr><td>$ligne->membre</td><td>$ligne->ATT</td><td>$ligne->DEF</td><td>$ligne->Fightvalue</td><td>$ligne->Habilité</td><td>$ligne->Attaque</td><td>$ligne->Défense</td><td>$ligne->MAJ</td></tr>";
}
?>


<?php
$fightvalue=($lechamp1*1.1)+$lechamp2;
$result = mysql_query(" UPDATE stats SET Fightvalue='$fightvalue' WHERE membre='$membre'");
?>