Plus simple que ça..
Oki, fait moi la requête sql qui correspond à ce que tu viens de dire
Version imprimable
Je peux pas faire tout ça en sql quand même ?Citation:
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: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:
1
2
3
4 $_SESSION['id'] = $admin; $_SESSION['membre'] = TRUE; header("location:admin.php");
Mais je suis pas sur du tout.Code:
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.
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 :
Pièce jointe 166845
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:
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:
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(); }
J'imagine que oui
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: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: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
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: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.
Bien je m’attelle a ça, en tout cas merci pour ton aide depuis quelque jours :)