besoin d'aide

toph1212
Invité n'ayant pas de compte PHPfrance

11 mars 2010, 01:03

Bonjour a tous

Je dois créé un petite application dont le but est de permettre de stocker des infos dans une base de donnée le truc habituel création, modification et suppression. Jusque la rien de méchant puisque ca je sais faire .

Cette application doit être protéger pour ne pas être accessible a tous et la encore pas de problème pour crée un espace sécurisé.

La ou ca se corse c'est que je doit permettre a plusieurs utilisateurs de se connecter pour que chacun gère son espace et créé, modifie et supprime uniquement les infos de la base qui le concerne.

Et bien la je bloc

j'ai donc 1 base de donnée
1 table utilisateur
1 table xxxxx

il faut que mon utilisateur puisse accéder a la base xxxxx qui le concerne sans afficher toute les infos quels contient et notamment celle d'autres utilisateurs

En fait je ne sais pas comment procéder pour permettre de lier l'utilisateur aux informations contenu dans une table différente de la table utilisateur

Pouvez-vous m'aider
bien cordialement

ViPHP
ViPHP | 2287 Messages

11 mars 2010, 03:14

Salut,

Si tu n'as que deux tables dans ta base le problème sera assez simple :

- En base de données, dans ta table xxxxx (c'est pour un site de charme ? :lol: ), tu vas ajouter un champ utilisateur_id que tu rempliras, pour chaque entrée de la table, avec l'identifiant de l'utilisateur auquel la donnée appartient.

- Au niveau de ton espace sécurisé, tu vas stocker l'identifiant de l'utilisateur dans la session lors de sa connexion. Ce qui va te permettre :
:arrow: Dans le cas d'une consultation d'informations de la table xxxxx (requêtes SELECT), de rajouter une condition supplémentaire dans la partie WHERE du SELECT.
mysql_query("SELECT * FROM xxxxx 
WHERE utilisateur_id=".$_SESSION['utilisateur_id'] ); 
:arrow: Dans le cas des écritures/suppressions d'informations (requêtes UPDATE, DELETE) : la même chose que pour le SELECT.
:arrow: Pour les INSERT, même principe, tu dois juste veiller à bien remplir le champ utilisateur_id à l'insertion (pour éviter que la donnée soit associée au compte de quelqu'un d'autre, ou même à personne, ce qui serait dommage).

La conséquence de tout ça, c'est que tous les utilisateurs vont manipuler des données de la même table, mais comme chacun ne verra que les données qui lui sont rattachées il n'y a pas de mélange possible.

Est-ce que ça t'aide un peu ? :)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

toph1212
Invité n'ayant pas de compte PHPfrance

11 mars 2010, 12:18

Salut calimero

Merci pour ton aide, je vais tester ta solution c'est super sympa pour info non ce n'est pas un site de charme

encore merci je te tiens informé pour savoir si j'ai reussi

cordialement
tophe1212

toph1212
Invité n'ayant pas de compte PHPfrance

11 mars 2010, 22:51

Bonjour

je ne sais pas si dans ma page identification mes donnée de session son ok
peut tu me dire si c'est bon
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['login'])) {
  $loginUsername=$_POST['login'];
  $password=$_POST['mdp'];
  $utilisateur_id=$_POST['utilisateur_id'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "demo/index.php";
  $MM_redirectLoginFailed = "erreur.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_staffgestion, $staffgestion);
  
  $LoginRS__query=sprintf("SELECT login, mdp FROM utilisateur WHERE login=%s AND mdp=%s",
    GetSQLValueString($loginUsername, "int"), GetSQLValueString($password, "int")); 
   
  $LoginRS = mysql_query($LoginRS__query, $staffgestion) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	 
	$_SESSION['utilisateur_id'] = $utilisateur_id;	     

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
et pour la page qui insert les données j'ai un petit problème

j'ai une erreur

Erreur de syntaxe pr�s de 'WHERE ['utilisateur_id']='' � la ligne 1

ViPHP
ViPHP | 2287 Messages

12 mars 2010, 01:02

je ne sais pas si dans ma page identification mes donnée de session son ok
peut tu me dire si c'est bon
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['login'])) {
  $loginUsername=$_POST['login'];
  $password=$_POST['mdp'];
  $utilisateur_id=$_POST['utilisateur_id'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "demo/index.php";
  $MM_redirectLoginFailed = "erreur.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_staffgestion, $staffgestion);
  
  $LoginRS__query=sprintf("SELECT login, mdp FROM utilisateur WHERE login=%s AND mdp=%s",
    GetSQLValueString($loginUsername, "int"), GetSQLValueString($password, "int")); 
   
  $LoginRS = mysql_query($LoginRS__query, $staffgestion) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	 
	$_SESSION['utilisateur_id'] = $utilisateur_id;	     

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
Re,

A priori tu ne récupères pas le champ id dans ta requête de vérification d'utilisateur, si tu en as un il faut le récupérer et le stocker dans une variable de session. Sinon, si tu fonctionnes avec le login en tant qu'id de la table alors ça devrait aller.

Par contre ton code php est pollué par des tas de variables $MM_ et est du coup plus difficile à lire qu'il ne devrait être, tu n'utiliserais pas dreamweaver par hasard ? :(
et pour la page qui insert les données j'ai un petit problème

j'ai une erreur

Erreur de syntaxe pr�s de 'WHERE ['utilisateur_id']='' � la ligne 1
Montre nous le code de la page en question stp. Mais à priori il y a une erreur car tu ne devrais pas avoir de crochets dans ta requête SQL (les crochets c'est pour PHP, pour accéder au tableau $_SESSION, en admettant que la bonne valeur y soit stockée ce qui ne semble pas être le cas vu ton code précédent).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 1 Messages

12 mars 2010, 01:33

Bonsoir Calimero
Encore merci pour ton aide précieuse

Effectivement j'utilise dreamweaver car je ne suis pas suffisamment calé en php
Sinon effectivement dans ma table utilisateur j'ai bien un champ id un champ login et un champ mdp, le champ id est en auto

dans ma base xxx j'ai ajouter un champ "utilisateur_id"

Maintenant je ne suis pas calé en php et session mais si j'ai bien compris je récupère la valeur du champ id dans ma table utilisateur que je transforme en session et que je récupère a nouveau pour insertion dans la base xxxx dans le champ utilisateur_id au moment de l'enregistrement des autres champs.

désoler mais je débute en php