Gestion d'utilisateur

ruffin - Modifié le 5 déc. 2017 à 16:32
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 - 12 déc. 2017 à 11:06
Bonjour,
J'ai besoin d'aide s'il vous plaît; voici une formulaire d'inscription d'une personne qui veux s'inscrire; mais il attend une accord de la part d'administration avant qu'il devenue membre. Si l'administration accepte donc il est membre si non... Le problème c'est que je ne sais pas comment faire tout les conditions en php.

<form method="POST" action="signup.php">
  <input type="text" name="username" placeholder="Utilisateur"/>
  <select name="role">
      <option>Abonné</option>
      <option>Visiteur</option>
  </select>
  <input type="password" name="password" placeholder="Mot de passe">
  <input type="password" name="password" placeholder="Confirmer le mot de passe">

  <input type="submit" name="password" value="Sign up">
</form>

EDIT : Ajout des balises de code

2 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
5 déc. 2017 à 16:33
Bonjour,

Et qu'as tu dans ton fichier signup.php ?
Qu'as tu commencé à coder ?
Qu'utilises tu pour connecter ton site à ta bdd ? PDO ? Mysqli ?
Sais tu faire des requêtes SQL ?
Sais tu faire des IF ?

0
/*Nom de la BDD*/
fiche

/*voici le SQL*/
CREATE TABLE IF NOT EXISTS `users` (
`NUM` int(11) NOT NULL AUTO_INCREMENT,
`LOGIN` varchar(50) NOT NULL,
`PASSWORD` varchar(25) NOT NULL,
`ROLE` varchar(25) NOT NULL,
PRIMARY KEY (`NUM`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;

/*Voila la connexion avec mysql*/
<?php
try{
$strConnection = 'mysql:host=localhost;dbname=fiche';
$pdo = new PDO($strConnection, 'root', '');
}catch(PDOException $e){
$msg = 'ERREUR PDO dans '.$e->getMessage();
die($msg);
}
?>
/*Voila le code dans le SignUp*/
<?php
$username = "";
$password_1 = "";
$errors = array();

$db = mysqli_connect('localhost', 'root', '', 'fiche');

if (isset($_POST['valider'])) {
$username = mysql_real_escape_string($_POST['username']);
$password_1 = mysql_real_escape_string($_POST['password_1']);
$password_2 = mysql_real_escape_string($_POST['password_2']);


//
if (empty($username)) {
array_push($errors, "Veuillez remplir le champ du nom d'utilisateur");
}
if (empty($password_1)) {
array_push($errors, "Veuillez remplir le champ du mot de passe");
}

if ($password_1 !=$password_2) {
array_push($errors, "Le deux mot de passe ne sont pas identique.");
}

//Insertion dans la base de donnée
if (count($errors) == 0) {
$role = $_POST['role'];
$sql = "INSERT INTO users(LOGIN,PASSWORD,ROLE) VALUES ('$username', '$password_1', '$role')";
mysqli_query($db, $sql);
$_SESSION['username'] = $username;
$_SESSION['SUCCESS'] = "Felicitation, vous avez une nouvelle compte";
header("location: menu.php");
}
}
?>
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
11 déc. 2017 à 19:24
Bonsoir,

1 - Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

2 - En 20 lignes de codes .. tu as réussi à mélanger 3 technos !


Sachant qu'on va exclure la vielle techno mysql qui est obsolète.... laquelle parmis les deux restantes tu vas utiliser ??
Si c'est PDO .. je t'invite à lire ceci : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

3 - Tu utilises les variables de session
$_SESSION['username'] = $username;
$_SESSION['SUCCESS'] = "Felicitation, vous avez une nouvelle compte"; 

Mais à aucun moment je n'ai vu de
 session_start();


4 - Au moins le temps du dev ... retire la redirection...
Sinon tu ne verras jamais les éventuels messages d'erreur

5 - Pour correctement écrire ton code, merci de lire et d'appliquer ceci :
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code


6 - Concernant ton besoin de faire "valider" l'inscription... il faut que tu ajoutes à ta table users un champ pour y stocker l'état validé ou non
Une fois fait ... il te suffira de faire une requête sur ce champ pour savoir si l'utilisateur a son compte autorisé par un admin ou non...
Au passage .. tu nous montres le code de connexion à la bdd (en pdo ...) ... mais en aucun cas le code que tu as utilisé pour "loguer" ton user.
Car c'est à cet endroit là que tu devrais vérifier si son compte est actif ou non.


0
au début j'ai crée une sécurité comme ceci:
<?php
session_start();
if (!(isset($_SESSION['PROFILE']))) { // PROFILE est une variable
header("location:login.php"); // rediriger dans la page login pour qu'il authentifie
}
?>
dans la table users il y a une attribue ROLE et dans le role il y a aussi SCOLARITE et CONSULTANT après j'ai codé une code comme ceci:
<?php
require_once("connexion.php");
if (!($_SESSION["PROFILE"]["ROLE"]=="SCOLARITE")) {
header("location:$_SERVER[HTTP_REFERER]");
}
?>
dans cette condition s'il est scolarité donc il est comme admin vous connaissez le rôle d'admin, et s'il est consultant donc il ne peut rien faire.
J'ai ajouté une attribue validation dans ma table et dans cette validation il y a oui et non. Mais je ne sais pas comment faire la requête.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
12 déc. 2017 à 11:06
Commence donc par nous montrer ton code corrigé en ayant tenu compte de mes remarques précédentes...

NB (deuxième rappel !!! ) : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
Rejoignez-nous