Édition de profil en PHP
TitouanPrs
Messages postés
49
Statut
Membre
-
TitouanPrs Messages postés 49 Statut Membre -
TitouanPrs Messages postés 49 Statut Membre -
Bonjour, je suis entrain de créer une page d'édition de profil utilisateur, mais lorsque j'exécute le code, j'ai plusieurs erreurs :
- Notice: Undefined index: username in C:\wamp64\www\projet\dashboard\settings.php on line 7
- Notice: Undefined index: username_confirm in C:\wamp64\www\projet\dashboard\settings.php on line 7
- Notice: Undefined index: password in C:\wamp64\www\BurgerQuiz\projet\settings.php on line 16
- Notice: Undefined index: password_confirm in C:\wamp64\www\projet\dashboard\settings.php on line 16
- Notice: Undefined index: password in C:\wamp64\www\projet\dashboard\settings.php on line 20
Mon code :
Pouvez-vous m'aider svp :) ?
- Notice: Undefined index: username in C:\wamp64\www\projet\dashboard\settings.php on line 7
- Notice: Undefined index: username_confirm in C:\wamp64\www\projet\dashboard\settings.php on line 7
- Notice: Undefined index: password in C:\wamp64\www\BurgerQuiz\projet\settings.php on line 16
- Notice: Undefined index: password_confirm in C:\wamp64\www\projet\dashboard\settings.php on line 16
- Notice: Undefined index: password in C:\wamp64\www\projet\dashboard\settings.php on line 20
Mon code :
<?php
session_start();
require_once('../includes/functions.php');
require_once('../includes/database.php');
if(!empty($_POST['username']) || $_POST['username'] != $_POST['username_confirm']) {
$_SESSION['flash']['danger'] = "Les noms d'utilisateur que vous avez indiqué ne correspondent pas.";
} else {
$user_id = $_SESSION['auth']->id;
$username = $_SESSION['auth']->username;
$pdo->prepare('UPDATE users SET username = ? WHERE id = ?')->execute([$username, $user_id]);
$_SESSION['flash']['success'] = "Votre nom d'utilisateur a bien été mis à jour.";
}
if(!empty($_POST['password']) || $_POST['password'] != $_POST['password_confirm']) {
$_SESSION['flash']['danger'] = "Les mots de passe que vous avez indiqué ne correspondent pas.";
} else {
$user_id = $_SESSION['auth']->id;
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$pdo->prepare('UPDATE users SET password = ? WHERE id = ?')->execute([$password, $user_id]);
$_SESSION['flash']['success'] = "Votre mot de passe a bien été mis à jour.";
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="description" content="Burger Quiz"/>
<meta name="author" content="Titouan Paris"/>
<link rel="stylesheet" href="style.css"/>
<link rel="icon" href="img/icon.png"/>
<title>Burger Quiz - Mon compte</title>
</head>
<body>
<?php
include_once('../includes/header.php');
access_denied_dashboard();
?>
<h1>Mon compte Burger Quiz</h1>
<?php
include_once('../includes/header_dashboard.php');
?>
<h2>Mes paramètres :</h2>
<p>Nom d'utilisateur :</p>
<form class="settings_username" action="" method="post">
<table>
<tr>
<td>
<label for="username_now">Pseudonyme actuel</label>
</td>
<td>
<input type="text" name="username_now" id="username_now" value="<?= $_SESSION['auth']->username ?>" disabled>
</td>
</tr>
<tr>
<td>
<label for="username">Nouveau nom d'utilisateur</label>
</td>
<td>
<input type="text" name="username" id="username" placeholder="Nouveau pseudonyme">
</td>
</tr>
<tr>
<td>
<label for="username_confirm">Confirmer nouveau nom d'utilisateur</label>
</td>
<td>
<input type="text" name="username_confirm" id="username_confirm" placeholder="Nouveau pseudonyme">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="submit" value="Modifier">
</td>
</tr>
</table>
</form>
<p>Adresse email :</p>
<form class="settings_email" action="" method="post">
<table>
<tr>
<td>
<label for="email_now">Adresse email actuelle</label>
</td>
<td>
<input type="email" name="email_now" id="email_now" value="<?= $_SESSION['auth']->email ?>" disabled>
</td>
</tr>
<tr>
<td>
<label for="email">Nouvelle adresse email</label>
</td>
<td>
<input type="email" name="email" id="email" placeholder="Nouvelle adresse email">
</td>
</tr>
<tr>
<td>
<label for="email_confirm">Confirmer nouvelle adresse email</label>
</td>
<td>
<input type="email" name="email_confirm" id="email_confirm" placeholder="Nouvelle adresse email">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="submit" value="Modifier">
</td>
</tr>
</table>
</form>
<p>Mot de passe :</p>
<form class="settings_password" action="" method="post">
<table>
<tr>
<td>
<label for="password">Nouveau mot de passe</label>
</td>
<td>
<input type="password" name="password" id="password" placeholder="Nouveau mot de passe">
</td>
</tr>
<tr>
<td>
<label for="password_confirm">Confirmer nouveau mot de passe</label>
</td>
<td>
<input type="password" name="password_confirm" id="password_confirm" placeholder="Nouveau mot de passe">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="submit" value="Modifier">
</td>
</tr>
</table>
</form>
<?php
include_once('../includes/footer.php');
?>
</body>
</html>
Pouvez-vous m'aider svp :) ?
A voir également:
- Édition de profil en PHP
- Voir qui regarde mon profil facebook - Guide
- Qui regarde mon profil instagram - Guide
- Everest home edition - Télécharger - Informations & Diagnostic
- Photo de profil - Guide
- Capture d'écran photo de profil whatsapp - Accueil - Messagerie instantanée
2 réponses
Merci :)
J'ai réussi à le faire mais il m'affiche l'ID avant le username :
https://drive.google.com/file/d/1b3sRH5tS8O0wjB2bEV2nYs-_sp3k5NhW/view?usp=drive_open
Je souhaiterais enlever cet ID d'avant le username, afin que seul le username soit affiché.
Si vous voulez le code complet :
https://drive.google.com/drive/folders/1VlDVjcJNI0quzW6xBivs9Q0QNKbS87cu?usp=drive_open
Merci d'avance :)
J'ai réussi à le faire mais il m'affiche l'ID avant le username :
https://drive.google.com/file/d/1b3sRH5tS8O0wjB2bEV2nYs-_sp3k5NhW/view?usp=drive_open
Je souhaiterais enlever cet ID d'avant le username, afin que seul le username soit affiché.
Si vous voulez le code complet :
https://drive.google.com/drive/folders/1VlDVjcJNI0quzW6xBivs9Q0QNKbS87cu?usp=drive_open
Merci d'avance :)
Merci de poster ton code directement sur le forum ( en utilisant les balises de code : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code )
De plus, seul le code qui correspond à ton image nous interesse pour l'instant.
AU passage, avant de voir si le souci d'affichage ( de ce "1") vient du code... as tu vérifié directement dans ta BDD ce que contiennent tes champs ?
De plus, seul le code qui correspond à ton image nous interesse pour l'instant.
AU passage, avant de voir si le souci d'affichage ( de ce "1") vient du code... as tu vérifié directement dans ta BDD ce que contiennent tes champs ?
Voici le code correspondant à l'image :
Le "1" correspond à l'ID de l'utilisateur.
Oui j'ai bien vérifié ma base de données.
Voici son contenu si vous souhaitez :
https://drive.google.com/file/d/1okkUOnn1uIx4sgX2MxtuvtYRCDVQ1Zk6/view?usp=drive_open
<?php
session_start();
require_once('includes/functions.php');
require_once('includes/database.php');
// Modification Pseudonyme
if(isset($_POST['username']) && $_POST['username_confirm']) {
if(empty($_POST['username'] || $_POST['username_confirm'])) {
$_SESSION['flash']['danger'] = "Vous n'avez pas rempli tous les champs.";
} elseif($_POST['username'] != $_POST['username_confirm']) {
$_SESSION['flash']['danger'] = "Les pseudonymes que vous avez indiqué sont différents.";
} elseif(!preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username'])) {
$_SESSION['flash']['danger'] = "Le pseudonyme que vous avez indiqué n'est pas valide.";
} else {
$user_id = $_SESSION['auth']->id;
$username = $_POST['username'];
$pdo->prepare('UPDATE users SET username = ? WHERE id = ?')->execute([$username, $user_id]);
header('Location: settings.php');
$_SESSION['flash']['success'] = "Votre nom d'utilisateur a bien été mis à jour.";
exit();
}
// Modification Adresse email
} elseif(isset($_POST['email']) && $_POST['email_confirm']) {
if(empty($_POST['email'] || $_POST['email_confirm'])) {
$_SESSION['flash']['danger'] = "Vous n'avez pas rempli tous les champs.";
} elseif($_POST['email'] != $_POST['email_confirm']) {
$_SESSION['flash']['danger'] = "Les adresses email que vous avez indiqué sont différents.";
} elseif(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$_SESSION['flash']['danger'] = "L'adresse email que vous avez indiqué n'est pas valide.";
} else {
$user_id = $_SESSION['auth']->id;
$email = $_POST['email'];
$pdo->prepare('UPDATE users SET email = ? WHERE id = ?')->execute([$email, $user_id]);
header('Location: settings.php');
$_SESSION['flash']['success'] = "Votre adresse email a bien été mise à jour.";
exit();
}
// Modification Mot de passe
} elseif(isset($_POST['password']) && $_POST['password_confirm']) {
if(empty($_POST['password'] || $_POST['password_confirm'])) {
$_SESSION['flash']['danger'] = "Vous n'avez pas rempli tous les champs.";
} elseif($_POST['password'] != $_POST['password_confirm']) {
$_SESSION['flash']['danger'] = "Les mots de passe que vous avez indiqué sont différents.";
} else {
$user_id = $_SESSION['auth']->id;
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$pdo->prepare('UPDATE users SET password = ? WHERE id = ?')->execute([$password, $user_id]);
header('Location: settings.php');
$_SESSION['flash']['success'] = "Votre mot de passe a bien été mis à jour.";
exit();
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="description" content="Burger Quiz"/>
<meta name="author" content="Titouan Paris"/>
<link rel="stylesheet" href="style.css"/>
<link rel="icon" href="img/icon.png"/>
<title>Burger Quiz - Mon compte</title>
</head>
<body>
<?php
include_once('includes/header.php');
access_denied_dashboard();
?>
<h1>Mon compte Burger Quiz</h1>
<?php
include_once('includes/header_dashboard.php');
?>
<h2>Mes paramètres :</h2>
<p>Nom d'utilisateur :</p>
<form class="settings_username" action="" method="post">
<table>
<tr>
<td>
<label for="username_now">Pseudonyme actuel</label>
</td>
<td>
<input type="text" name="username_now" id="username_now" value="<?=
$user_id = $_SESSION['auth']->id;
$req = $pdo->prepare('SELECT username FROM users WHERE id = ?');
$req->execute([$user_id]);
$username_db = $req->fetch();
echo($username_db->username);
?>" disabled>
</td>
</tr>
<tr>
<td>
<label for="username">Nouveau nom d'utilisateur</label>
</td>
<td>
<input type="password" name="username" id="username" placeholder="Nouveau pseudonyme">
</td>
</tr>
<tr>
<td>
<label for="username_confirm">Confirmer nouveau nom d'utilisateur</label>
</td>
<td>
<input type="text" name="username_confirm" id="username_confirm" placeholder="Nouveau pseudonyme">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="submit" value="Modifier">
</td>
</tr>
</table>
</form>
<p>Adresse email :</p>
<form class="settings_email" action="" method="post">
<table>
<tr>
<td>
<label for="email_now">Adresse email actuelle</label>
</td>
<td>
<input type="email" name="email_now" id="email_now" value="<?=
$user_id = $_SESSION['auth']->id;
$req = $pdo->prepare('SELECT email FROM users WHERE id = ?');
$req->execute([$user_id]);
$email_db = $req->fetch();
echo($email_db->email);
?>" disabled>
</td>
</tr>
<tr>
<td>
<label for="email">Nouvelle adresse email</label>
</td>
<td>
<input type="email" name="email" id="email" placeholder="Nouvelle adresse email">
</td>
</tr>
<tr>
<td>
<label for="email_confirm">Confirmer nouvelle adresse email</label>
</td>
<td>
<input type="email" name="email_confirm" id="email_confirm" placeholder="Nouvelle adresse email">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="submit" value="Modifier">
</td>
</tr>
</table>
</form>
<p>Mot de passe :</p>
<form class="settings_password" action="" method="post">
<table>
<tr>
<td>
<label for="password">Nouveau mot de passe</label>
</td>
<td>
<input type="password" name="password" id="password" placeholder="Nouveau mot de passe">
</td>
</tr>
<tr>
<td>
<label for="password_confirm">Confirmer nouveau mot de passe</label>
</td>
<td>
<input type="password" name="password_confirm" id="password_confirm" placeholder="Nouveau mot de passe">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="submit" value="Modifier">
</td>
</tr>
</table>
</form>
<?php
include_once('includes/footer.php');
?>
</body>
</html>
Le "1" correspond à l'ID de l'utilisateur.
Oui j'ai bien vérifié ma base de données.
Voici son contenu si vous souhaitez :
https://drive.google.com/file/d/1okkUOnn1uIx4sgX2MxtuvtYRCDVQ1Zk6/view?usp=drive_open
Je t'invite également à gérer correctement les erreurs PDO
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et sinon...
pourquoi faire plusieurs requêtes alors qu'une seule suffirait ??
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et sinon...
pourquoi faire plusieurs requêtes alors qu'une seule suffirait ??
$req = $pdo->prepare('SELECT username FROM users WHERE id = ?');
$req = $pdo->prepare('SELECT email FROM users WHERE id = ?');
$sql = "SELECT username, email
FROM users
WHERE id = ?"
try{
$req = $pdo->prepare($sql);
$req->execute([$user_id]);
$user = $req->fetch();
}catch(Exception $e){
echo " Erreur : ".$e->getMessage();
}
Fais aussi un petit tour ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code