Validation par administrateur d'une inscription

Résolu/Fermé
Drillan Messages postés 41 Date d'inscription dimanche 29 janvier 2012 Statut Membre Dernière intervention 3 juin 2015 - 29 avril 2014 à 12:59
Drillan Messages postés 41 Date d'inscription dimanche 29 janvier 2012 Statut Membre Dernière intervention 3 juin 2015 - 23 mai 2014 à 22:40
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

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 dimanche 29 janvier 2012 Statut Membre Dernière intervention 3 juin 2015 10
29 avril 2014 à 14:06
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
29 avril 2014 à 14:10
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 dimanche 29 janvier 2012 Statut Membre Dernière intervention 3 juin 2015 10
Modifié par Drillan le 29/04/2014 à 15:00
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
29 avril 2014 à 15:13
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 dimanche 29 janvier 2012 Statut Membre Dernière intervention 3 juin 2015 10
Modifié par Drillan le 29/04/2014 à 15:30
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
29 avril 2014 à 15:34
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 dimanche 29 janvier 2012 Statut Membre Dernière intervention 3 juin 2015 10
Modifié par Drillan le 29/04/2014 à 15:54
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
29 avril 2014 à 16:12
"/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 dimanche 29 janvier 2012 Statut Membre Dernière intervention 3 juin 2015 10
29 avril 2014 à 16:17
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 dimanche 29 janvier 2012 Statut Membre Dernière intervention 3 juin 2015 10
29 avril 2014 à 16:30
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
23 mai 2014 à 15:38
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 dimanche 29 janvier 2012 Statut Membre Dernière intervention 3 juin 2015 10
23 mai 2014 à 22:40
:3
0