Validation par administrateur d'une inscription

Résolu
Drillan Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -  
Drillan Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,


Je suis actuellement en train de créer un site web, qui comportera un espace membre ainsi qu'un espace administration.
Lorsque qu'un utilisateur se créé un compte, il rempli un formulaire avec son adresse mail et son mot de passe, auxquels s'ajoutent une colonne id qui s'auto incrémente ainsi qu'une autre colonne "actif" qui a 0 de valeur de base.
Tant que cette valeur est à 0, l'utilisateur ne peut pas se connecter, et donc visiter les pages "privées" du site internet.
Lorsque la personne a soumit son inscription, l'administrateur pourra ouvrir le fichier validation.php, et pourra voir une ligne avec les informations concernant ce nouvel inscrit. Il pourra alors accepter ou rejeter sa candidature : S'il l'accepte, alors la table se met à jour et la colonne "actif" sera égale à 1, et s'il la refuse, toutes les informations concernant ce nouvel inscrit seront supprimées.

J'ai donc essayé de faire cette page validation.php en m'inspirant d'un cours d'OpenClassroom mais en modifiant / adaptant le code à mes besoins, et ça coince, je ne peux même pas obtenir les informations du nouvel inscrit.

<?php
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('udccas69', $base);
$quete = mysql_query("SELECT * FROM inscrits");

if($quete === FALSE) {
    die(mysql_error()); // TODO: better error handling
}

while($validation = mysql_fetch_array($quete))
{
	echo 'identifiant: ';
	echo $validation['email'];
	echo ' Mot de passe: ';
	echo $validation['passe'];
	echo '<a href="validation.php?action=accepter&id='.$validation['id'].'">Accepter</a>';
	echo '<a href="validation.php?action=refuser&id='.$validation['id'].'">Refuser</a>';
	echo '<br/>';
}
 
if(isset($_GET['action']) AND isset($_GET['id']))
{
	$action = $_GET['action'];
		if($action == "accepter")
		{
			'id' = $_GET['id'];
			$quete2 = mysql_query("SELECT * FROM inscrits WHERE id='id'");
			$connexion = mysql_fetch_array($quete2);
			'passe' = $connexion['passe'];
			'email' = $connexion['email'];
			mysql_query("UPDATE inscrits SET actif = '1'");
		}
	elseif($action == "refuser")
	{
		$id = $_GET['id'];
		mysql_query("DELETE FROM inscrits WHERE id='id'");
	}
}
?>



Quelqu'un pourrait-il donc m'éclairer sur ce qui pose problème et que faire pour réparer ça ?

Je précise que je n'ai que peu d'expérience avec le PHP / MySQL, et qu'il ne serait pas surprenant que dans ce code se cache une énormité que je n'ai pas vue ^^'

Je vous remercie d'avance !
A voir également:

6 réponses

Utilisateur anonyme
 
Hello,

moi je ferais de la manière suivante :

Page de validation
Affiche à l'administrateur tous les comptes qui ne sont pas encore validé
page : validation.php

1] Vérifie que l'utilisateur courant (celui qui est sur la page) est bien un administrateur

2] Sélectionner les utilisateurs dans la BDD qui ne sont pas actif (SELECT * FROM users WHERE actif=0)

3] Afficher sur ta page html avec un lien <a href="validationscript.php?id=$idutilisateur">valider</a>

Traitement de la validation
Passe un utilisateur inactif en actif
validationscript.php?id=$id

1] Vérifie que l'utilisateur courant (celui qui est sur la page) est bien un administrateur

2] Vérifie que $_GET['id'] est bien un nombre

3] mettre à jour le champ user concerné dans la bdd (UPDATE users SET actif=1 WHERE id=$_GET['id'] AND actif=0)

4] faire une redirection sur validation.php


EDIT : je reste à ta disposition si tu as de plus ample question :)

A+ Seezer
0
Drillan Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   10
 
Bonjour Seezer, merci de ta réponse !

Petite question, je suis en train de modifier le code selon tes conseils, mais comment et où est ce que je met en place de quoi supprimer la personne de la base de données ?

Merci d'avance !
0
Utilisateur anonyme
 
Hello,
- tu peux mettre un deuxième lien à côté de valider <a href="validationdelete.php?id=">supprimer</a>

sauf qu'au lieu de faire un UPDATE tu fais un DELETE * FROM users WHERE id=$_GET['id'] AND actif=0

P.S. du coup je te conseil d'adapter le nom des pages à ta site web (validation.php - validation_accept.php - validation_delete.php) pour que ça te donne quelque chose de logique :)

A+ Seezer
0
Drillan Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   10
 
Re Seezer, voilà actuellement ce que j'ai répartis sur mes 3 fichiers :

validation.php :

<?php
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('udccas69', $base);
$quete = mysql_query("SELECT * FROM inscrits");

if($quete === FALSE) {
    die(mysql_error()); // TODO: better error handling
}

while($validation = mysql_fetch_array($quete))
{
 echo 'identifiant: ';
 echo $validation['email'];
 echo ' Mot de passe: ';
 echo $validation['passe'];
 echo '<a href="validationscript.php?id='.$_GET['id'].'">Accepter</a>';
 echo '<a href="suppressionscript.php?id='.$_GET['id'].'">Refuser</a>';
 echo '<br/>';

}
?>


validationscript.php :

<?php

$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('udccas69', $base);
$quete = mysql_query("SELECT * FROM inscrits");


if (is_numeric($_GET['id'])) 
{ 
 mysql_query("UPDATE inscrits SET actif = '1' WHERE id=$_GET[id] AND actif='0'");
 header('validation.php');
} 

else
{
 echo "Problème dans la base de données, contacter l'administrateur au plus vite.";
}

?>


suppressionscript.php :


<?php

$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('udccas69', $base);
$quete = mysql_query("SELECT * FROM inscrits");


if (is_numeric($_GET['id'])) 
{ 
 mysql_query("DELETE FROM inscrits WHERE id='id'");
 header('validation.php');
} 

else
{
 echo "Problème dans la base de données, contacter l'administrateur au plus vite.";
}

?>


Aurais-je oublié quelque chose ? Sachant que la "protection du dossier" administrateur ne presse pas, je compte mettre tout ça dans un dossier et le site ne sera mit en ligne qu'en Septembre :)

Merci d'avance !
0
Utilisateur anonyme
 
1. pour afficher les erreurs de mysql_query j'ai toujours fait comme ça :
mysql_query('requete') or die (mysql_error());
ce qui remplacerait ton if (à toi de voir comment tu veux faire) :D

2. un petit
mysql_close($base);
à la fin de tes pages.

3. dans tes 2 requêtes SQL si tes champs id/actif sont des INT, tu peux mettre id=id et actif=0 ou actif=1 (sans les ' ' )

4. dans ta requête SQL DELETE je rajouterais un
WHERE id=$_GET['id'] AND actif=0
histoire de ne pas supprimer un utilisateur actif (après à toi de voir ce que tu veux faire).
0
Drillan Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   10
 
J'ai pu corriger pour le 2, 3 et 4, mais je ne vois pas de quel "if" tu parles, serait-ce
 if (is_numeric($_GET['id'])) 
?
0
Utilisateur anonyme
 
non le
if($quete === FALSE) {
    die(mysql_error()); // TODO: better error handling
}
// tu peux le rajouter à ton mysql_query
$quete = mysql_query("SELECT * FROM inscrits") or die (mysql_error());


:)
0
Drillan Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   10
 
Ok, c'est corrigé...

Du coup j'ai voulu faire des tests, j'ai voulu supprimer une inscription, ce qui m'a donné une erreur 404 (le lien était le suivant : "http://localhost/projects/Tests/suppressionscript.php?id=" )

Et quand j'ai voulu l'ajouter, ça m'a donné l'erreur : "Problème dans la base de données, contacter l'administrateur au plus vite."

Quelle ironie...

Je pense que j'ai du supprimer quelque chose qu'il ne fallait pas, peut être le
'id' = $_GET['id'];
, que je devrais mettre dans validationscript.php et suppressionscript.php... t'en penses quoi ? ^^'
0

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

Posez votre question
Utilisateur anonyme
 
"/Tests/suppressionscript.php?id=" il y avait bien un numéro après id= ??

exemple : /Tests/suppressionscript.php?id=12 ?
0
Drillan Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   10
 
Non, justement pas, c'est pour ça que je l'ai précisé ! Je suis en train de recréer un autre compte test, parce que je m'aperçois que l'id est égal à 0... Bizarre.
0
Drillan Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   10
 
Ok donc en fait quand j'ai importé ma table, j'ai oublié le "auto_increment" pour "id", donc évidemment, tout est resté à 0 -_-

Du coup, j'ai recréé une table de données et recréé un compte mais j'ai exactement la même erreur qu'avant...
0
Utilisateur anonyme
 
N'hésites pas à passer le sujet en résolu si tel est le cas !

A+ Seezer
0
Drillan Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   10
 
:3
0