Remplir formulaire qune seule fois

Résolu
maria - 21 juin 2022 à 19:13
 maria - 25 juin 2022 à 21:27
Bonjour,

J'ai créé un espace client qui après inscription il doit remplir un formulaire qui doit être confirmé par l'administrateur pour lui donner un rendez-vous mais le problème est qu'un utilisateur peut remplir le formulaire plusieurs fois comment faire pour que chaque utilisateur puisse remplir le formulaire juste une fois
Donc, je veux que lorsqu'un utilisateur se connecte, il ne puisse remplir le formulaire qu'une seule fois. Comment puis-je faire cela ?
Merci de m'avoir aidé !



Configuration: Windows / Chrome 102.0.0.0

14 réponses

jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
21 juin 2022 à 19:34
Bonjour,

Dans ta BDD, tu dois stocker, dans la table où tu stockes les données de ton formulaire, l' ID de l'utilisateur qui l'a envoyé.
Ensuite, AVANT d'afficher (et/ou d'enregistrer) le formulaire, tu fais une requête SQL pour aller voir si l'id de l'utilisateur est déjà présent ou non dans la table... et si il est déjà présent, tu le rediriges vers une page indiquant qu'il a déjà répondu.
0
Ca marche pas , c'est un projet entre un client qui souhaite ouvrir un compte bancaire du coup apres que le client soit connecte sur son compte il va etre dirige vers une page ou il choisit son type de compte de la qu'il va etre envoyer sur un des trois formulaire, je veux que des qu'il se connecte il soit redirige sur la page d'attente qu'un conseiller accepte ou refuse sa demande si il a choisit deja un compte (du coup il a enregistrer deja son type de compte sur la bdd)
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593 > maria
21 juin 2022 à 21:14
Qu'est-ce qui ne marche pas ?
Et puis, je ne peux que te donner des pistes théoriques vu que tu ne nous a pas montré une seule ligne de code...
0
maria > jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023
Modifié le 21 juin 2022 à 21:28
    <?php
//Initialiser la session
session_start();
//Verifier si l'utilisateur est connecte, sinon redirigez-le vers la page de connexion 
if (!isset($_SESSION["username"])) {
 header("Location:login.php");
 exit();
}
?>
<!DOCTYPE html>
<html>
<head>
 <title>Home</title>
 <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
  <?php require('verification.php');?>
    <div class="sucess">
     <h1>Bienvenue M.<?php echo $_SESSION['username'];?>!</h1>
    <p>
     <form method="post" action="insertion.php">
        <table>
     <tr>
      <td><input type="radio" name="typec" value="Compte depot">Compte depot</td>
     </tr>
     <tr>
      <td><input type="radio" name="typec" value="Compte Courant Commercial (physique)">Compte Courant Commercial (physique)</td>
     </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Commercial devise (moral)">Compte Courant Commercial devise (moral)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Commercial (moral)">Compte Courant Commercial (moral)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Non-Commercial (physique)">Compte Courant Non-Commercial (physique)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Non-Commercial ANADE">Compte Courant Non-Commercial ANADE</td>
      </tr>
     <tr><td><input type="submit" name="btncompte" value="Suivant"></td></tr>
        </form>
      </table>
    </p>
     <a href="logout.php">Deconnexion</a>
    </div>
</body>
</html>


EDIT : Ajout des balises de code
0
    <?php
$objPdo = new PDO('mysql:host=localhost;dbname=bea1','root','');

$pdoStat = $objPdo->prepare('INSERT INTO compte VALUES(NULL, :typec)');

$pdoStat->bindValue(':typec', $_POST['typec'], PDO::PARAM_STR);

$insert = $pdoStat->execute();


if ($insert) {
 if ($_POST['typec'] == "Compte depot") {
     header("Location:formulairedepot.php");
    }
    elseif ($_POST['typec'] == "Compte Courant Commercial (physique)" || $_POST['typec'] == "Compte Courant Non-Commercial ANADE") {
     header("Location:formulairephysique.php");
    }else
        header("Location:formulairemoral.php");
}
else{
 $message = 'Echec de l\insertion';
  echo $message;
} 
?>

EDIT : Ajout des balises de code
0
maria > maria
21 juin 2022 à 21:27
Ca cest la page ou des un utilisateur se connecte il atteri la
avec son insertion
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
21 juin 2022 à 21:30
A l'avenir, merci d'utiliser les BALISES DE CODE pour poster du code sur le forum.
Explications disponibles ici :
https://forums.commentcamarche.net/forum/affich-37598670-mise-en-forme-du-forum-et-des-fiches-pratiques-ccm#les-codes-sources

Par contre ... tu ne nous as toujours pas indiqué à quoi correspond le "ça ne marche pas" ....
0
<?php
   require('config.php');

if (isset($_POST['username'])){
    $query = "SELECT `nom`,`prenom` FROM `users` WHERE nom='$nom' and prenom='$prenom'";
    $result = mysqli_query($conn,$query) or die(mysql_error());
    $rows = mysqli_num_rows($result);

    $query1 = "SELECT `Nom`,`Prenom` FROM `formulaire_depot` WHERE Nom='$Nom' and Prenom='$Prenom'";
    $result1 = mysqli_query($conn,$query1) or die(mysql_error());
    $rows1 = mysqli_num_rows($result1);


    if($rows==1 && $rows1==1){
      $_SESSION['nom'] = $_SESSION['Nom'];
      $_SESSION['prenom'] = $_SESSION['Prenom'];
      header("Location: form-merci.php");
    }else{
      header("Location: home.php");
  }
}
?>


J'ai fois ce code pour si le nom prenom de la table users sont les memes que sur le formulaire redirige moi vers le form-merci.php mais je sais pas ou je dois le mettre je l'ai mis au home et au formulaire_depot mais ca marchait quand meme pas un utilisateur peut fournin plusieur fois le formulaire
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593 > maria
Modifié le 21 juin 2022 à 22:37
L'utilisateur étant connecté à ton site, je doute que tu renvoies dans chacune de tes pages les variables non et prénom...
Par contre, tu disposes d'une variable de session qui pourrait te servir....

Je pense également que ton modèle de base de données et bancal.... Comme je te l'ai déjà indiqué, il faudrait stocker lors de l'insertion, l'id de l'utilisateur qui envoie le formulaire...
C'est ensuite via ce champ, que tu pourras vérifier si l'utilisateur a déjà envoyé ou non le formulaire.
1
T'aurais pas un petit exemple a me proposer ?ca a l'air dur
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
Modifié le 21 juin 2022 à 22:43
À part te conseiller de suivre une formation en PHP, là, ça va être compliqué de te trouver des exemples qui correspondent exactement à ton besoin ... Du moins pas sans, coder moi-même, la page en question...

Il vaut mieux y aller par étape.
Pour commencer, lors de l'authentification de l'utilisateur, il serait bien de stocker son id dans les variables de session telles que tu l'as déjà fait pour son username.

Ensuite, ajoute un champ dans la table dans laquelle tu stockes les informations de ton formulaire via l'administration de ta base de données. Ce champ aura pour nom: id_user

Modifie ensuite ta requête d'insertion pour y ajouter cette information lors de l'ajout d'un formulaire. (Cette information etant désormais disponible dans les variables de session)

Et juste avant l'insertion, fais une requête SELECT dans la base pour vérifier si cet utilisateur a déjà envoyé un formulaire ou non.

Voilà, je ne pense pas pouvoir être plus précis....
0
patrice86 Messages postés 1378 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 1 février 2023 125
22 juin 2022 à 10:08
Bonjour

Comme l'indique Jordane45, j'aurais proposé la même solution.
Sauvegarder l'ID de l'utilisateur (vu qu'il a un compte, il doit bien être enregistré dans la bdd ?) au moment de sauvegarder le form dans la bdd.

Sinon, utiliser les cookies mais c'est plus technique encore et disponible uniquement sur le même navigateur donc pas forcément optimal.
0

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

Posez votre question
<?php
    $conn = new PDO('mysql:host=localhost;dbname=bea1','root','');
    $sql = "SELECT `id` FROM `users`";
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    $stmt->bindColumn('id', $id, PDO::PARAM_LOB);

    $sql1 = "SELECT `id1` FROM `compte`";
    $q = $conn->prepare($sql1);
    $q->execute();
    $q->bindColumn('id1', $id1, PDO::PARAM_LOB);

  while($user = $q->fetch()){
    while($donnees = $stmt->fetch()){
        if ($user['id'] === $donnees['id1']) {
        header("Location: form-merci.php");
       }else {
         header("Location: home.php");
       }
    }
    }
?>


J'ai reussi a faire ca mais ca marche pas trop, des que que je me connecte il me renvoie direct a la page du form-merci meme si l'utilisateur n'a pas encore rempli le formulaire
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
24 juin 2022 à 05:47
On t'a dit d'utiliser l'ID de l'utilisateur qui se trouve DANS la variable de SESSION.
0
j'ai fait avec session aussi mais c'est la meme chose ca marche pour le premier utilisateur apres ca marche plus
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
24 juin 2022 à 14:35
1 - As tu bien mémorisé dans les variables de SESSION, lorsque l'utilisateur se connecte sur ton site, son ID ?

2 - Peux tu nous montrer le code que tu as essayé de faire ( avec la session) ?
0
<?php
//Initialiser la session
session_start();
//Verifier si l'utilisateur est connecte, sinon redirigez-le vers la page de connexion 
if (!isset($_SESSION["username"])) {
	header("Location:login.php");
	exit();
}
require('config.php');
  $q = "SELECT * FROM `users` WHERE id='$id'";
  $result = mysqli_query($conn,$q) or die(mysql_error());
   $_SESSION['id'] = $id;
   if ($_SESSION['id'] === $_SESSION['id1']) {
     header("Location: form-merci.php");
   }
   if (isset($_REQUEST['typec'])){
  
  $typec = stripslashes($_REQUEST['typec']);
  $typec = mysqli_real_escape_string($conn, $typec); 
  
    $query = "INSERT into `compte` (typec)
              VALUES ('$typec')";
    $res = mysqli_query($conn, $query);
    }
else{
?>
<!DOCTYPE html>
<html>
<head>
	<title>Home</title>
	<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <div class="sucess">
    	<h1>Bienvenue M.<?php echo $_SESSION['username'];?>!</h1>
    <p>
    	Pour preouvrir un compte bancaire chez la banque exterieure d'Algerie veuillez choisir le type de compte a ouvrir:
    	<form method="post" action="">
        <table>
    	<tr>
    		<td><input type="radio" name="typec" value="Compte depot">Compte depot</td>
    	</tr>
    	<tr>
    		<td><input type="radio" name="typec" value="Compte Courant Commercial (physique)">Compte Courant Commercial (physique)</td>
    	</tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Commercial devise (moral)">Compte Courant Commercial devise (moral)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Commercial (moral)">Compte Courant Commercial (moral)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Non-Commercial (physique)">Compte Courant Non-Commercial (physique)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Non-Commercial ANADE">Compte Courant Non-Commercial ANADE</td>
      </tr>
    	<tr><td><input type="submit" name="btncompte" value="Suivant"></td></tr>
        </form>
      </table>
    </p>
    	<a href="logout.php">Deconnexion</a>
    </div>
  <?php } ?>
</body>
</html>
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
24 juin 2022 à 15:36
J'ai mis mes remarques dans ton code :
<?php
//Initialiser la session
session_start();
//Verifier si l'utilisateur est connecte, sinon redirigez-le vers la page de connexion 
if (!isset($_SESSION["username"])) {
	header("Location:login.php");
	exit();
}
require('config.php');
  $q = "SELECT * FROM `users` WHERE id='$id'"; //$id .. il vient d'où ?? Normalement, tu aurais du récupérer cette variable DEPUIS la session : $id= $_SESSION['id'];
  $result = mysqli_query($conn,$q) or die(mysql_error());
   $_SESSION['id'] = $id; // Inutile ICI .. c'est dans la CONNEXION de ton user qu'il faut faire ça .. pas ici !!
   if ($_SESSION['id'] === $_SESSION['id1']) { // Il vient d'où ce  $_SESSION['id1'] ?????  Tu dois plutôt vérifier si ta requête a retournée un résultat ou non !
     header("Location: form-merci.php");
   }
   if (isset($_REQUEST['typec'])){
  
  $typec = stripslashes($_REQUEST['typec']);
  $typec = mysqli_real_escape_string($conn, $typec); 
  
    $query = "INSERT into `compte` (typec)
              VALUES ('$typec')";
    $res = mysqli_query($conn, $query);
    }
else{


NB: L'extension mysql est OBSOLETE ..
Il ne faut plus l'utiliser.
A la place, il faut utiliser PDO ou MYSQLI.
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593 > jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023
24 juin 2022 à 15:38
Ah... et ce n'est pas sur la table USER que tu dois faire ta requête ... mais sur la table qui contient tes formulaires !
0
maria > jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023
24 juin 2022 à 15:51
je pense que je me suis mal explique avant que le client arrive au formulaire il doit choisir quel compte il doit ouvrir et j'ai une table compte ou il stock chaque client le choix qu'il a choisi du coup ce que je veux c'est quand un client se connecte il est directement envoye au form-merci.php sans passer par le home.php
0
Du coup si j'ai bien compris la requete SELECT je suis censee la faire au moment LOGIN et donc dans ce cas la je verifie si le client a deja fait le formulaire dans le login c'est ca ?
0
blackmefias_3350 Messages postés 701 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 2 juin 2023 58
24 juin 2022 à 15:48
bonjour,
d'après ce que je comprends, vous voudriez que le clients si il est déjà par exemple inscrit, ne puisse plus s'inscrire

dans ce cas je vous conseil de faire une session, et de créer un ou des cookies
cookies qui vérifient si le client est déjà inscrit ou pas

c'est comme si par exemple le client à le choix entre plusieurs langues, et que pour sa prochaine connexion au site , la langue choisie soit définie par défaut .

0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
24 juin 2022 à 16:12
On reprend.... encore....

Soit tu rediriges, lors de la connexion de l'utilisateur, vers la page voulue ...

Soit .. on contninue ce qu'on avait commencé...

Et pour que ça soit clair pour tout le monde ;

1 - Montre nous le code de connexion

2 - Montre nous le code de ton form-meri.php

3 - Si tu as ensuite une autre étape .. montre nous son code également ( pense bien à nous noter le nom de CHAQUE fichier que tu nous montres... )

4 - Il faut également nous montrer la structure de ta bdd..... car comme je le pense.... tu n'as toujours pas mis un champ pour stocker l'id de l'utilisateur dans la table qui te sert à enregistrer ton formulaire....



0
Le code "Connexion":
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="style.css" />
</head>
<body>
<?php
require('config.php');
session_start();

if (isset($_POST['username'])){
  $username = stripslashes($_REQUEST['username']);
  $username = mysqli_real_escape_string($conn, $username);
  $password = stripslashes($_REQUEST['password']);
  $password = mysqli_real_escape_string($conn, $password);
  $query = "SELECT * FROM `users` WHERE username='$username' and password='".hash('sha256', $password)."'";
  $result = mysqli_query($conn,$query) or die(mysql_error());
  $rows = mysqli_num_rows($result);
  if($rows==1){
      $_SESSION['username'] = $username;
      header("Location: home.php");
    }
  elseif (($password === 'admin')&&($username === 'admin')){
      header("Location: ./admin/dashboard.php");
  }else{
    $message = "Le nom d'utilisateur ou le mot de passe est incorrect.";
  }
}
?>
<form class="box" action="" method="post" name="login">
<h1 class="box-title">Connexion</h1>
<div class="pos">
<input type="text" class="box-input" name="username" placeholder="Nom d'utilisateur"><br>
<input type="password" class="box-input" name="password" placeholder="Mot de passe"><br>
<input type="submit" value="Connexion " name="submit" class="box-button">
<p class="box-register">Vous êtes nouveau ici? <a href="register.php">S'inscrire</a></p></div>
<?php if (! empty($message)) { ?>
    <p class="errorMessage"><?php echo $message; ?></p>
<?php } ?>
</form>
</body>
</html>


Le code form-merci.php:

<!DOCTYPE html>
<html>
<head>
	<title>Banque</title>
	<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
   <h1>Demande envoyée !</h1>
   <p>Votre demande est en attente !</p>
</body>
</html>


Le code home:
<?php
//Initialiser la session
session_start();
//Verifier si l'utilisateur est connecte, sinon redirigez-le vers la page de connexion 
if (!isset($_SESSION["username"])) {
	header("Location:login.php");
	exit();
}
?>
<!DOCTYPE html>
<html>
<head>
	<title>Home</title>
	<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <div class="sucess">
    	<h1>Bienvenue M.<?php echo $_SESSION['username'];?>!</h1>
    <p>
    	Pour preouvrir un compte bancaire chez la banque exterieure d'Algerie veuillez choisir le type de compte a ouvrir:
    	<form method="post" action="insertion.php">
        <table>
    	<tr>
    		<td><input type="radio" name="typec" value="Compte depot">Compte depot</td>
    	</tr>
    	<tr>
    		<td><input type="radio" name="typec" value="Compte Courant Commercial (physique)">Compte Courant Commercial (physique)</td>
    	</tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Commercial devise (moral)">Compte Courant Commercial devise (moral)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Commercial (moral)">Compte Courant Commercial (moral)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Non-Commercial (physique)">Compte Courant Non-Commercial (physique)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Non-Commercial ANADE">Compte Courant Non-Commercial ANADE</td>
      </tr>
    	<tr><td><input type="submit" name="btncompte" value="Suivant"></td></tr>
        </form>
      </table>
    </p>
    	<a href="logout.php">Deconnexion</a>
    </div>
</body>
</html>


Le code d'insertion.php de home:
<?php
$objPdo = new PDO('mysql:host=localhost;dbname=bea1','root','');

$pdoStat = $objPdo->prepare('INSERT INTO compte VALUES(NULL, :typec)');

$pdoStat->bindValue(':typec', $_POST['typec'], PDO::PARAM_STR);

$insert = $pdoStat->execute();


if ($insert) {
	if ($_POST['typec'] == "Compte depot") {
    	header("Location:formulairedepot.php");
    }
    elseif ($_POST['typec'] == "Compte Courant Commercial (physique)" || $_POST['typec'] == "Compte Courant Non-Commercial ANADE") {
    	header("Location:formulairephysique.php");
    }else
        header("Location:formulairemoral.php");
}
else{
	$message = 'Echec de l\insertion';
	 echo $message;
} 
?>


Les tables:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nom` varchar(100) NOT NULL,
`prenom` varchar(100) NOT NULL,
`username` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
`password` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `compte`(
`id1` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`compte` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
24 juin 2022 à 16:37
Dans ton code de connexion tu ne stocks toujours pas l'id de l'utilisateur en variable de session..

Dans ta base de données tu n'as pas mis de chant qui permet de faire le lien entre ta table compte et l'utilisateur...

Bref, tu n'as pas tenu compte d'une seule des remarques que je t'ai déjà fait au cours de cette longue discussion....

J'attends que tu fasses ces corrections et que tu nous remontres le code et la structure de tes tables une fois que ça sera fait.
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593 > jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023
Modifié le 24 juin 2022 à 17:57
ta bdd devrait ressembler à ça :
0
<?php
require('config.php');
session_start();

if (isset($_POST['username'])){
  $username = stripslashes($_REQUEST['username']);
  $username = mysqli_real_escape_string($conn, $username);
  $password = stripslashes($_REQUEST['password']);
  $password = mysqli_real_escape_string($conn, $password);
  $query = "SELECT * FROM `users` WHERE username='$username' and password='".hash('sha256', $password)."'";
  $result = mysqli_query($conn,$query) or die(mysql_error());
  $rows = mysqli_num_rows($result);
  if($rows==1){
      $_SESSION['username'] = $username;
      $_SESSION['id'] = $id;
      header("Location: home.php");
    }
  elseif (($password === 'admin')&&($username === 'admin')){
      header("Location: ./admin/dashboard.php");
  }else{
    $message = "Le nom d'utilisateur ou le mot de passe est incorrect.";
  }
}
?>

et j'ai ajouter la colonne id_user dans compte
0
la structure de la table est donc
CREATE TABLE `compte`(
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`id_user` int(11) NOT NULL,
`compte` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
24 juin 2022 à 20:58
Ligne 15, ton $id doit être extrait de ta requête SQL
0
maria > jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023
24 juin 2022 à 21:28
extrait de la requete comme ca ?
$query = "SELECT * FROM `users` WHERE id='$id' and username='$username' and password='".hash('sha256', $password)."'";
  $result = mysqli_query($conn,$query) or die(mysql_error());
  $rows = mysqli_num_rows($result);
  if($rows==1){
      $_SESSION['username'] = $username;
      $_SESSION['id'] = $id;
      header("Location: home.php");
    }
  elseif (($password === 'admin')&&($username === 'admin')){
      header("Location: ./admin/dashboard.php");
  }else{
    $message = "Le nom d'utilisateur ou le mot de passe est incorrect.";
  }
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
24 juin 2022 à 21:22
<?php
require('config.php');
session_start();

if (isset($_POST['username'])){
  $username = stripslashes($_REQUEST['username']);
  $username = mysqli_real_escape_string($conn, $username);
  $password = stripslashes($_REQUEST['password']);
  $password = mysqli_real_escape_string($conn, $password);
  $query = "SELECT * FROM `users` WHERE username='$username' and password='".hash('sha256', $password)."'";
 
  $result = mysqli_query($conn,$query) or die(mysql_error());
   $row = mysql_fetch_array($result, MYSQL_ASSOC)
  $rows = mysqli_num_rows($result);
  if($rows==1){
      $_SESSION['username'] = $username;
      $_SESSION['id'] = $row['id'];
      header("Location: home.php");
    }
  elseif (($password === 'admin')&&($username === 'admin')){
      header("Location: ./admin/dashboard.php");
  }else{
    $message = "Le nom d'utilisateur ou le mot de passe est incorrect.";
  }
}
?>

Le code home:
<?php

<?php
//Initialiser la session
session_start();
//Verifier si l'utilisateur est connecte, sinon redirigez-le vers la page de connexion 
if (!isset($_SESSION["username"])) {
	header("Location:login.php");
	exit;
}

//on récupère l'ID qui se trouve en SESSION
$id = $_SESSION['id'];

//On regarde si l'id_user est déjà dans la table compte
$query = "SELECT * FROM `compte` WHERE id_user='$id' ";
$result = mysqli_query($conn,$query) or die(mysql_error());
if($rows==1){
  header("Location: form-merci.php");
  exit;
}
?>
<!DOCTYPE html>
<html>
<head>
	<title>Home</title>
	<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <div class="sucess">
    	<h1>Bienvenue M.<?php echo $_SESSION['username'];?>!</h1>
    <p>
    	Pour preouvrir un compte bancaire chez la banque exterieure d'Algerie veuillez choisir le type de compte a ouvrir:
    	<form method="post" action="insertion.php">
        <table>
    	<tr>
    		<td><input type="radio" name="typec" value="Compte depot">Compte depot</td>
    	</tr>
    	<tr>
    		<td><input type="radio" name="typec" value="Compte Courant Commercial (physique)">Compte Courant Commercial (physique)</td>
    	</tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Commercial devise (moral)">Compte Courant Commercial devise (moral)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Commercial (moral)">Compte Courant Commercial (moral)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Non-Commercial (physique)">Compte Courant Non-Commercial (physique)</td>
      </tr>
      <tr>
        <td><input type="radio" name="typec" value="Compte Courant Non-Commercial ANADE">Compte Courant Non-Commercial ANADE</td>
      </tr>
    	<tr><td><input type="submit" name="btncompte" value="Suivant"></td></tr>
        </form>
      </table>
    </p>
    	<a href="logout.php">Deconnexion</a>
    </div>
</body>
</html>

?>
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593
24 juin 2022 à 21:23
Par contre, ... ce code sera à modifier en PDO comme tu l'as fais pour ton code d'insertion...

Code d'insertion.. dans lequel tu devras ajouter l'id_user à ta requête...
0
jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023 4 593 > jordane45 Messages postés 37545 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juin 2023
24 juin 2022 à 21:52
Ou recoder ton code d'insertion en mysqli
enfin.. avoir la même "techno" d'une page à l'autre...
0
Merci enormement pour votre aide! ca a marche !
0