Bonjour à tous et bienvenue dans ce quatrième épisode cette série de tutoriels sur l’espace membre en PHP. Aujourd’hui, nous allons créer la page de modification de données.

 

 


Sources

 

<?php
session_start();

if(isset($_SESSION['user'])) {
	header("location:profile.php?user=" . $_SESSION['user']['id']);
}

$bdd = new PDO("mysql:host=127.0.0.1;dbname=tuto_espace_membre;charset=utf8", "root", "");


if(isset($_POST['confirm_register'])) {

	if(isset($_POST['email']) AND isset($_POST['username']) AND isset($_POST['password']) AND isset($_POST['password_confirm'])) {
		if(!empty($_POST['email']) AND !empty($_POST['username']) AND !empty($_POST['password']) AND !empty($_POST['password_confirm'])) {

			$email = trim(htmlspecialchars($_POST['email']));
			$username = trim(htmlspecialchars($_POST['username']));
			$password = htmlspecialchars($_POST['password']);
			$password_confirm = trim(htmlspecialchars($_POST['password_confirm']));

			if(strlen($email) <= 255) {
				if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
					if(strlen($username) >= 3 AND strlen($username) <= 255) {
						if(strlen($password) >= 8 AND strlen($password) <= 100) {
							if($password == $password_confirm) {

								$password_crypted = sha1($password);

								$req = $bdd->prepare("INSERT INTO users (pseudo, email, password) VALUES (?,?,?)");
								$req->execute(array($username, $email, $password_crypted));

								$error = "Votre compte a été créé avec succès !";

							} else {
								$error = "Vos mots de passes ne correspondent pas";
							}
						} else {
							$error = "Votre mot de passe doit comporter entre 8 et 100 caractères";
						}
					} else {
						$error = "Votre pseudo doit comporter entre 3 et 255 caractères";
					}
				} else {
					$error = "Votre email a un format incorrect";
				}
			} else {
				$error = "Votre email doit faire moins de 255 caractères";
			}


		} else {
			$error = "Veuillez remplir tous les champs";
		}
	}
}

if(isset($_SESSION['user'])) {
	var_dump($_SESSION['user']);
}

?>

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<title>S'inscrire</title>
	</head>

	<body>

		<header></header>

		<h1>S'inscrire</h1>

		<form method="POST" action="">

			<table>

				<tr>
					<td>
						<label>Votre Email :</label>
					</td>
					<td>
						<input type="email" name="email">
					</td>
				</tr>

				<tr>
					<td>
						<label>Choisissez un pseudo :</label>
					</td>
					<td>
						<input type="text" name="username">
					</td>
				</tr>

				<tr>
					<td>
						<label>Choisissez un mot de passe :</label>
					</td>
					<td>
						<input type="password" name="password">
					</td>
				</tr>

				<tr>
					<td>
						<label>Confirmez votre mot de passe :</label>
					</td>
					<td>
						<input type="password" name="password_confirm">
					</td>
				</tr>

				<tr><td></td></tr>

				<tr>
					<td></td>
					<td>
						<button type="submit" name="confirm_register">S'inscrire</button>
					</td>
				</tr>

			</table>

		</form>

		<?php if(isset($error)) { echo $error; } ?>


		<nav>
			<a href="login.php">Déja un compte ? Connectez-vous !</a>
		</nav>

		<footer></footer>

	</body>
Fichier register.php

 

<?php
session_start();

if(isset($_SESSION['user'])) {
	header("location:profile.php?user=" . $_SESSION['user']['id']);
}

$bdd = new PDO("mysql:host=127.0.0.1;dbname=tuto_espace_membre;charset=utf8", "root", "");

if(isset($_POST['confirm_login'])) {
	if(isset($_POST['email']) AND isset($_POST['password'])) {
		if(!empty($_POST['email']) AND !empty($_POST['password'])) {

			$email = htmlspecialchars($_POST['email']);
			$password = htmlspecialchars($_POST['password']);

			$req = $bdd->prepare("SELECT * FROM users WHERE email = ? AND password = ?");
			$req->execute(array($email, sha1($password)));

			if($req->rowCount() == 1) {
				
				$user = $req->fetch();
				$_SESSION['user'] = $user;
				header("location:profile.php?user=" . $_SESSION['user']['id']);

			} else {
				$error = "Nom d'utilisateur ou mot de passe incorrect";
			}

		}
	} else {
		$error = "Erreur";
	}
}

?>

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<title>Se connecter</title>
	</head>

	<body>

		<header></header>

		<h1>Se connecter</h1>

		<form method="POST" action="">

			<table>

				<tr>
					<td>
						<label>Votre Email :</label>
					</td>
					<td>
						<input type="email" name="email">
					</td>
				</tr>

				<tr>
					<td>
						<label>Votre mot de passe :</label>
					</td>
					<td>
						<input type="password" name="password">
					</td>
				</tr>

				<tr><td></td></tr>

				<tr>
					<td></td>
					<td>
						<button type="submit" name="confirm_login">Se connecter</button>
					</td>
				</tr>

			</table>

		</form>

		<?php if(isset($error)) { echo $error; } ?>


		<nav>
			<a href="register.php">Pas encore de compte ? Inscrivez vous !</a>
		</nav>

		<footer></footer>

	</body>
Fichier login.php

 

<?php
session_start();
session_destroy();
header("location:login.php");
?>
Fichier logout.php

 

<?php 
session_start();

$bdd = new PDO("mysql:host=127.0.0.1;dbname=tuto_espace_membre;charset=utf8", "root", "");

if(isset($_GET['user'])) {

	$id = htmlspecialchars($_GET['user']);

	$req = $bdd->prepare("SELECT * FROM users WHERE id = ?");
	$req->execute(array($id));

	if($req->rowCount() == 1) {

		$user = $req->fetch();

	} else {
		die("Utilisateur introuvable");
	}

} else {
	die("Aucun utilisateur précisé");
}

if(isset($_SESSION['user'])) {
	if($_SESSION['user']['id'] == $user['id']) {
		$set = 1;
	} else {
		$set = 0;
	}
} else {
	$set = 0;
}

?>

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<title>Informations sur l'utilisateur</title>
	</head>

	<body>

		<header></header>

		<h1>Informations sur l'utilisateur</h1>

		<table>
			<tr>
				<td>Pseudo :</td>
				<td><?= $user["pseudo"]; ?></td>
			</tr>
			<tr>
				<td>Email :</td>
				<td><?= $user["email"]; ?></td>
			</tr>
			<?php if($set == 1) { ?>
			<tr>
				<td><a href="update.php">Modifier mes informations</a></td>
				<td><a href="logout.php">Me déconnecter</a></td>
			</tr>
			<?php } ?>
		</table>

		<footer></footer>

	</body>

</html>
Fichier profile.php

 

<?php
session_start();

$bdd = new PDO("mysql:host=127.0.0.1;dbname=tuto_espace_membre;charset=utf8", "root", "");

if(!isset($_SESSION['user']['id'])) {
	header("location:login.php");
}

if(isset($_POST['confirm_update'])) {

	if(isset($_POST['username'])) {
		if($_POST["username"] != $_SESSION['user']['pseudo']) {
			$pseudo = htmlspecialchars($_POST['username']);
			if(strlen($pseudo) >= 3 AND strlen($pseudo) <= 255) {
				
				$req = $bdd->prepare("UPDATE users SET pseudo = ? WHERE id = ?");
				$req->execute(array($pseudo, $_SESSION['user']['id']));
				$_SESSION['user']['pseudo'] = $pseudo;

			} else {
				$error = "Votre pseudo doit comporter entre 3 et 255 caractères";
			}
		}
	}

	if(isset($_POST['email'])) {
		if($_POST['email'] != $_SESSION['user']['email']) {
			$email = htmlspecialchars($_POST['email']);
			if(strlen($email) <= 255) {
				if(filter_var($email, FILTER_VALIDATE_EMAIL)) {

					$req = $bdd->prepare("UPDATE users SET email = ? WHERE id = ?");
					$req->execute(array($email, $_SESSION['user']['id']));
					$_SESSION['user']['email'] = $email;

				}
			} else {
				$error = "Votre email doit faire moins de 255 caractères";
			}
		}
	}

	if(isset($_POST['password'])) {
		if($_POST['password'] == $_POST['password2']) {
			$password = htmlspecialchars($_POST['password']);
			if(strlen($password) >= 8 AND strlen($password) <= 100) {

				$req = $bdd->prepare("UPDATE users SET password = ? WHERE id = ?");
				$req->execute(array(sha1($password), $_SESSION['user']['id']));
				$_SESSION['user']['password'] = sha1($password);

			}
		} else {
			$error = "Vos mots de passes ne correspondent pas";
		}
	}

}

?>

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8">
		<title>Modifier mes informations</title>
	</head>

	<body>

		<header></header>

		<h1>Modifier mes informations</h1>

		<form method="POST" action="">
			<table>
				<tr>
					<td>Pseudo :</td>
					<td><input type="text" name="username" value="<?= $_SESSION['user']["pseudo"]; ?>"/></td>
				</tr>
				<tr>
					<td>Email :</td>
					<td><input type="email" name="email" value="<?= $_SESSION['user']["email"]; ?>"/></td>
				</tr>
				<tr>
					<td>Nouveau mot de passe :</td>
					<td><input type="password" name="password"/></td>
				</tr>
				<tr>
					<td>Confirmation du nouveau mot de passe :</td>
					<td><input type="password" name="password2"/></td>
				</tr>

				<tr><td></td></tr>

					<tr>
						<td></td>
						<td>
							<button type="submit" name="confirm_update">Modifier mes informations</button>
						</td>
					</tr>

			</table>
		</form>


		<?php if(isset($error)) { echo $error; } ?>

		<a href="profile.php?user=<?= $_SESSION['user']['id'] ?>">Retour au profil</a>

		<footer></footer>

	</body>

</html>
Fichier update.php

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *