ruffin
-
Modifié le 5 déc. 2017 à 16:32
jordane45
Messages postés37543Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 8 juin 2023
-
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>
jordane45
Messages postés37543Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 8 juin 2023341 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 ?
//
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");
}
}
?>
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.
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.
jordane45
Messages postés37543Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 8 juin 2023341 12 déc. 2017 à 11:06
Commence donc par nous montrer ton code corrigé en ayant tenu compte de mes remarques précédentes...
11 déc. 2017 à 08:37
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");
}
}
?>