Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
Je peux pas faire tout ça en sql quand même ?Et bien je pense qu'il suffirait de comparer les identifiant rentré avec les identifiant admin et si ça correspond, pof on redirige vers la page d'administration
Je ferais d'abord une requête pour sélectionner l'id de l'admin :(postgres étant mon admin)
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT id FROM vv_utilisateur WHERE id='postgres'
La requête dans une variable $admin disons.
Aprés je ferais :
Resterai plus qu'à l'insérer dans mon script de vérification. Je ferais ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $_SESSION['id'] = $admin; $_SESSION['membre'] = TRUE; header("location:admin.php");
Mais je suis pas sur du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 <?php session_start(); require 'connect.php'; $id = $_POST['id']; $mdp = $_POST['password']; //$sql= "SELECT * FROM vv_utilisateur WHERE id='$id' AND mdp='$mdp'"; try { $admin = "SELECT id FROM vv_utilisateur WHERE id='postgres'"; $sql = "SELECT count(*) as compteur FROM vv_utilisateur WHERE id=? AND password=?"; $r = $dbh->prepare($sql); $r->execute(array($id, $mdp)); $d = $r->fetch(); if ($d['compteur'] > 0) { $_SESSION['id'] = $admin; $_SESSION['membre'] = TRUE; header("location:admin.php"); die(); } else { if($d['compteur'] > 0){ $_SESSION['id'] = $id; $_SESSION['membre'] = TRUE; header("location:visite.php"); die(); } else { $_SESSION['membre'] = FALSE; header("location:index.php"); die(); } catch (PDOException $ex) { die('echec : ' . $ex->getMessage()); }
Heu....si id='postgres' est une réponse correcte de ta db , alors on a un souci....car tu démarres mal ton projet.
Ton id devrais être un nombre autoincrémenté (en PostgreSQL il doit être de type sérial).
Ensuite tu devrais avoir un champs dans ta db qui soit par exemple 'statut' où tu pourrais mettre amdministrateur ou user ou lecteur ou......
Réfléchi bien à ce que tu veux faire.
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
Quel erreur j'ai fait.. Je m'excuse de vous avoir fais planchez sur mon problème alors que ma table n'était même pas bonne. Méaculpa.
Avant de reprendre mon développement, j'ai recréer ma base avec un id autoincrémenter cette fois et j'ai rejouter une collone pseudo et statut :
Pourrais tu me dire si ma base est correct de cette manière ?
Si oui, j'ai modifier mon verifuti.php du coup :
Et il marche de cette manière là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <?php session_start(); require 'connect.php'; $pseudo = $_POST['pseudo']; $mdp = $_POST['password']; //$sql= "SELECT * FROM vv_utilisateur WHERE id='$id' AND mdp='$mdp'"; try { $sql = "SELECT count(*) as compteur FROM vv_utilisateur WHERE pseudo=? AND password=?"; $r = $dbh->prepare($sql); $r->execute(array($pseudo, $mdp)); $d = $r->fetch(); if ($d['compteur'] > 0) { $_SESSION['pseudo'] = $pseudo; $_SESSION['membre'] = TRUE; header("location:admin.php"); die(); } else { $_SESSION['membre'] = FALSE; header("location:index.php"); die(); } } catch (PDOException $ex) { die('echec : ' . $ex->getMessage());
Alors en tenant compte, qua tu auras fait toutes les vérification possible pour qu'il ne soit pas possible d'avoir deux fois le même pseudo(par une contrainte unique en db par exemple).
Tu peux facilement faire ceci en modifiant le sql
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $sql = "SELECT count(*) as compteur,statut FROM vv_utilisateur WHERE pseudo=? AND password=?"; $r = $dbh->prepare($sql); $r->execute(array($pseudo, $mdp)); $d = $r->fetch(); if ($d['compteur'] > 0) { $_SESSION['pseudo'] = $pseudo; $_SESSION['membre'] = TRUE; if($d['statut']==='administrateur'){ //je dirige quelque part }else{ //je dirige ailleurs } } else { $_SESSION['membre'] = FALSE; header("location:index.php"); die(); }
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
J'imagine que oui
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
D'après ce que j'ai trouvé sur le net il faut le faire via une reqête sql.
Selon la doc Postgre la syntaxe pour ajouter une contrainte d'unicité est la suivant :
Le soucis c'est que je ne vois pas à quoi correspond "autre_nom".. Ma requête donne ça pour le moment :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER TABLE produits ADD CONSTRAINT autre_nom UNIQUE (no_produit);
Je ne vois pas ce que je dois mettre. Si je ne met rien, le sql me renvois une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER TABLE vv_utilisateur ADD CONSTRAINT autre_nom UNIQUE (pseudo);
C'est le nom de ta contrainte pour que le moteur sache de quoi on parle, tu peux la nommer unique_contrainte_pseudo
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
J'ai donc exécuté la requête dans la base mais cela ne fonctionne pas et renvois l'erreur :
Donc là je suis un peu bloqué.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT COUNT(*) AS total FROM (ALTER TABLE vv_utilisateur ADD CONSTRAINT unique_contrainte_pseudo UNIQUE (pseudo)) AS sub
Serais ce plus simple de recréer la table et de mettre la contraintes dès la création ?
Bon appétit !
Heu ici, je pense que le mieux pour toi serait de prendre un peu de temps pour lire les tutos suivants http://sql.developpez.com/#commencer-sql
Parce que là, on va perdre du temps ensemble, et il sera plus facile d'expliquer quand on comprend de quoi on parle.
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
Bien je m’attelle a ça, en tout cas merci pour ton aide depuis quelque jours
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager