Partage
  • Partager sur Facebook
  • Partager sur Twitter

CRÉATION DE GESTION DE L'ESPACE MEMBRE

18 juillet 2019 à 2:39:09

​je voudrais créer la gestion de l'espace d'un utilisateur mais mon code affiche des erreurs dont je ne peut identifier.

 Si vous pouvez m'aider à le résoudre, cela me fera énormément plaisir.

Voici mon code Registre.php On me dit que, l'erreur se trouve à la ligne 115.

<?php 
require_once 'include/function.php';

session_start();
if(!empty($_POST)){

    $errors[] = array();

    require_once('config/database.php');

if (empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username'])) {

     $errors['username'] = "Votre pseudo n'est pas valide (Alphanumerique)";

}else{

$req = $pdo-&gt;prepare('SELECT id FROM users WHERE username = ?');

$req-&gt;execute([$_POST['username']]);

$user = $req-&gt;fetch(); // permet de recuperer le premier enregistrement = fetch()

if ($user) {

  $errors['username'] = 'Ce pseudo est déjà pris';

}

}

if (empty($_POST['email']) || filter_var($_POST['email'], !FILTER_VALIDATE_EMAIL)) {

	$errors['email'] = "Votre email n'est pas valide";

} else {

	$req = $pdo-&gt;prepare('SELECT id FROM users WHERE email = ?');

    $req-&gt;execute([$_POST['email']]);

    $user = $req-&gt;fetch(); // permet de recuperer le premier enregistrement = fetch()

    if ($user) {

    	$errors['email'] = "Cet email est déjà pris!";

    }

    
}

if (empty($_POST['password']) || $_POST['password'] != $_POST['password_corfim']) {

	$errors['password'] = "Vous devez rentrer un mot de passe valide";
}


if(empty($errors)){

// On enregistre les informations dans la base de données 
$req = $pdo-&gt;prepare("INSERT INTO users SET username = ?, password = ?, email = ?, confirmation_token = ?");
// On ne sauvegardera pas le mot de passe en clair dans la base mais plutôt un hash
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
// On génère le token qui servira à la validation du compte 
$token = str_random(60);

$req-&gt;execute([$_POST['username'], $password, $_POST['email'], $token]);

$user_id = $pdo-&gt;lastInsertId();
// On envoit l'email de confirmation
mail($_POST['email'], 'Confirmation de votre compte', "Afin de valider votre compte merci de cliquer sur ce lien\n\nhttp://http://localhost/DALIGUEPA2/confirm.php?id=$user_id&amp;token=$token");
// On redirige l'utilisateur vers la page de login avec un message flash
$_SESSION['flash']['success'] = 'Un email de confirmation vous a été envoyé pour valider votre compte';

header('Location: login.php');

exit();

}

}

?>

<?php require('include/header.php') ?>

</pre>

S'inscrire

<?php if(!empty($errors)): ?>

Vous n'avez pas rempli le formulaire correctement!

  • <?php foreach($errors as $error): ?>

  • <?= $error; ?>

    <?php endforeach; ?>

<?php endif; ?>

</pre><form method="post" action="">

<label class="control-label" for="">Pseudo:</label> <input type="text" class="form-control" name="username" />
           <div>
              &lt;label class="control-label" for=""&gt;Email:&lt;/label&gt;
              &lt;input type="email" class="form-control" name="email" /&gt;</div>

           <div>
              &lt;label class="control-label" for=""&gt;mot de pass:&lt;/label&gt;
              &lt;input type="password" class="form-control" name="password" /&gt;</div>

           <div>
              &lt;label class="control-label" for=""&gt;confirmer votre mot de pass:&lt;/label&gt;
              &lt;input type="password" class="form-control" name="password_corfim" /&gt;</div>

<button type="submit" class="btn btn-primary">M'inscrire</button>

</form>

<?php require('include/footer.php') ?>

  • Partager sur Facebook
  • Partager sur Twitter
18 juillet 2019 à 3:34:26

Bonjour,

Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Merci de colorer votre code à l'aide du bouton Code

Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.

Majuscules abusives

L'écriture en majuscules est considérée comme une parole criée et diminue autant la lisibilité du texte que sa compréhension. Les majuscules abusives sont donc interdites aussi bien dans les titres que dans les messages.

Manque de Politesse

Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?

  • Partager sur Facebook
  • Partager sur Twitter
18 juillet 2019 à 5:03:03

Bonjour.

En plus de ce qu'a dit le modérateur et que tu dois appliquer, je vais commencer par une erreur que tu as dés le début.

Il est inutile d'incrémenter un tableau juste avec un tableau vide, donc au lieu de l'incrémenter, tu as juste à définir la variable, soit via un tableau vide si tu le souhaites.

Ensuite, de la manière que tu crées le tableau d'erreurs et la manière que tu l'utilises dans la boucle est incorrecte, car lorsque tu vas afficher la variable erreur dans la boucle, ce ne sera pas la valeur, soit le message qui sera affiché, mais la clé du tableau, soit par exemple email.

Autre chose, pourquoi faire deux requête SQL pour vérifier l'existence d'un enregistrement avec le nom d'utilisateur ou l'email ?

Tu peux largement le faire avec une seule requête SQL avec en condition le nom d'utilisateur et l'email, soit par exemple :

SELECT username, email FROM users WHERE username = ? OR email = ?

Ensuite, si tu récupères un enregistrement c'est qu'il y en a un qui existe déjà soit par rapport au nom d'utilisateur ou l'email passé en condition et si tu veux vraiment lui indiquer lequel des deux est déjà prit, tu fais une condition du style if ... elseif.

Autre chose, même si ça ne remplace pas la vérification coté PHP, tu pourrais ajouter l'attribut required à tes input, ça permettra de faire une pré-validation côté client.

  • Partager sur Facebook
  • Partager sur Twitter

Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

18 juillet 2019 à 11:12:48

Bonjour, à tous désolé pour le manque de respect, cela a été une erreur de ma part. Je ferai plus attention la prochaine fois.

  Merci pour la remarque.

  • Partager sur Facebook
  • Partager sur Twitter
18 juillet 2019 à 12:32:38

@MireilleYepie Pourriez vous éditer votre premier message pour :

  • en retirer le majuscule du titre
  • mettre le code en forme pour que celui-ci soit plus lisible

Merci.

  • Partager sur Facebook
  • Partager sur Twitter
4 août 2019 à 5:53:00

Bonjour à tous, s'ils vous plaît, je voudrais créer la gestion de l'espace d'un utilisateur mais mon code affiche des erreurs dont je ne peut identifier.

 Si vous pouvez m'aider à le résoudre, cela me fera énormément plaisir.

Voici mon code Registre.php On me dit que, l'erreur se trouve à la ligne 115.

require_once 'include/function.php'; session_start();
if(!empty($_POST)){ $errors[] = array(); require_once('config/database.php'); if (empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username'])) { $errors['username'] = "Votre pseudo n'est pas valide (Alphanumerique)"; 

}else{

$req = $pdo->prepare('SELECT id FROM users WHERE username = ?'); $req->execute([$_POST['username']]); $user = $req->fetch(); // permet de recuperer le premier enregistrement = fetch() if ($user) { $errors['username'] = 'Ce pseudo est déjà pris'; } 

}

if (empty($_POST['email']) || filter_var($_POST['email'], !FILTER_VALIDATE_EMAIL)) { 	$errors['email'] = "Votre email n'est pas valide"; } else { 	$req = $pdo->prepare('SELECT id FROM users WHERE email = ?'); $req->execute([$_POST['email']]); $user = $req->fetch(); // permet de recuperer le premier enregistrement = fetch() if ($user) { 	$errors['email'] = "Cet email est déjà pris!"; } } if (empty($_POST['password']) || $_POST['password'] != $_POST['password_corfim']) { 	$errors['password'] = "Vous devez rentrer un mot de passe valide"; } if(empty($errors)){ // On enregistre les informations dans la base de données $req = $pdo->prepare("INSERT INTO users SET username = ?, password = ?, email = ?, confirmation_token = ?"); // On ne sauvegardera pas le mot de passe en clair dans la base mais plutôt un hash $password = password_hash($_POST['password'], PASSWORD_BCRYPT); // On génère le token qui servira à la validation du compte $token = str_random(60); $req->execute([$_POST['username'], $password, $_POST['email'], $token]); $user_id = $pdo->lastInsertId(); // On envoit l'email de confirmation mail($_POST['email'], 'Confirmation de votre compte', "Afin de valider votre compte merci de cliquer sur ce lien\n\nhttp://http://localhost/DALIGUEPA2/confirm.php?id=$user_id&token=$token"); // On redirige l'utilisateur vers la page de login avec un message flash $_SESSION['flash']['success'] = 'Un email de confirmation vous a été envoyé pour valider votre compte'; header('Location: login.php'); exit(); 

}

}

?>

<?php require('include/header.php') ?>

S'inscrire

<?php if(!empty($errors)): ?>

Vous n'avez pas rempli le formulaire correctement!

<?php foreach($errors as $error): ?>

<?= $error; ?>

<?php endforeach; ?>

<?php endif; ?>

<form method="post" action="">

<label class="control-label" for="">Pseudo:</label> <input type="text" class="form-control" name="username" />

<label class="control-label" for="">Email:</label> <input type="email" class="form-control" name="email" />
<label class="control-label" for="">mot de pass:</label> <input type="password" class="form-control" name="password" />
<label class="control-label" for="">confirmer votre mot de pass:</label> <input type="password" class="form-control" name="password_corfim" />

<button type="submit" class="btn btn-primary">M'inscrire</button>

</form>

<?php require('include/footer.php') ?>

  • Partager sur Facebook
  • Partager sur Twitter