Erreur lecture écrite base de données
Posté : 21 mars 2019, 10:48
Bonjour, voila tout fonctionnait hier cependant aujourd'hui plus rien ne fonctionne et rien n'a été modifié. Je n'arrive plus à écrire sur ma base de données quand un utilisateur s'inscrit et je n'arrive pas non plus à vérifier le mot de passe quand il se connecte.
Je vous fournit le code de la page login et register ainsi que la structure de la bdd, merci.
Fonction pour login:
Page register:
Structure bdd:

Merci à vous pour votre aide.
Je vous fournit le code de la page login et register ainsi que la structure de la bdd, merci.
Fonction pour login:
Code : Tout sélectionner
<?php
session_start();
// Info de co.
$DATABASE_HOST = 'localhost';
$DATABASE_USER = 'root';
$DATABASE_PASS = '****';
$DATABASE_NAME = 'espace_membre';
// Connection à la base
$con = mysqli_connect($DATABASE_HOST, $DATABASE_USER, $DATABASE_PASS, $DATABASE_NAME);
if ( mysqli_connect_errno() ) {
// En cas d'erreur
die ('Erreur connexion BDD: ' . mysqli_connect_error());
}
// Voir si les données sont bien reçus
if ( !isset($_POST['username'], $_POST['password']) ) {
// Données non reçus
die ('Veuillez remplir le champ nom utilisateur et mot de passe !');
}
// Préparation de la bdd
if ($stmt = $con->prepare('SELECT id, password FROM accounts WHERE username = ?')) {
$stmt->bind_param('s', $_POST['username']);
$stmt->execute();
// Stocker le résultat
$stmt->store_result();
if ($stmt->num_rows > 0) {
$stmt->bind_result($id, $password);
$stmt->fetch();
// Vérifier le mot de passe
if (password_verify($_POST['password'], $password)) {
// Connection de l'utilisateur
// Créer la session
session_regenerate_id();
$_SESSION['loggedin'] = TRUE;
$_SESSION['name'] = $_POST['username'];
$_SESSION['id'] = $id;
header('Location: home.php');
} else {
echo 'Mot de passe incorrect !';
}
} else {
echo 'Nom utilisateur incorrect !';
}
$stmt->close();
}Code : Tout sélectionner
<?php
//connexion à la base de données:
$BDD = array();
$BDD['host'] = "localhost";
$BDD['user'] = "root";
$BDD['pass'] = "****";
$BDD['db'] = "espace_membre";
$mysqli = mysqli_connect($BDD['host'], $BDD['user'], $BDD['pass'], $BDD['db']);
if(!$mysqli) {
echo "Connexion non établie.";
exit;
}
//par défaut, on affiche le formulaire (quand il validera le formulaire sans erreur avec l'inscription validée, on l'affichera plus)
$AfficherFormulaire=1;
//traitement du formulaire:
if(isset($_POST['username'],$_POST['password'])){//l'utilisateur à cliqué sur "S'inscrire", on demande donc si les champs sont défini avec "isset"
if(empty($_POST['username'])){//le champ username est vide, on arrête l'exécution du script et on affiche un message d'erreur
echo "Le champ username est vide.";
} elseif(!preg_match("#^[a-zA-Z0-9]+$#",$_POST['username'])){//le champ username est renseigné mais ne convient pas au format qu'on souhaite qu'il soit, soit: que des lettres minuscule + des chiffres (je préfère personnellement enregistrer le username de mes accounts en minuscule afin de ne pas avoir deux username identique mais différents comme par exemple: Admin et admin)
echo "Le username doit être renseigné en lettres minuscules sans accents, sans caractères spéciaux.";
} elseif(strlen($_POST['username'])>25){//le username est trop long, il dépasse 25 caractères
echo "Le username est trop long, il dépasse 25 caractères.";
} elseif(empty($_POST['password'])){//le champ mot de passe est vide
echo "Le champ Mot de passe est vide.";
} elseif(empty($_POST['email'])){//le champ mot de passe est vide
echo "Le champ Email est vide.";
} elseif(empty($_POST['poids'])){//le champ mot de passe est vide
echo "Le champ Poids est vide.";
} elseif(mysqli_num_rows(mysqli_query($mysqli,"SELECT * FROM accounts WHERE username='".$_POST['username']."'"))==1){//on vérifie que ce username n'est pas déjà utilisé par un autre membre
echo "Ce username est déjà utilisé.";
} elseif(!preg_match("#^[0-9]+$#",$_POST['poids'])){
echo "Le champ poids doit être uniquement en chiffres.";
} else {
//toutes les vérifications sont faites, on passe à l'enregistrement dans la base de données:
//Bien évidement il s'agit là d'un script simplifié au maximum, libre à vous de rajouter des conditions avant l'enregistrement comme la longueur minimum du mot de passe par exemple
if(!mysqli_query($mysqli,"INSERT INTO accounts SET username='".$_POST['username']."', password='".md5($_POST['password'])."', email='".$_POST['email']."', poids='".$_POST['poids']."'")){//on crypte le mot de passe avec la fonction propre à PHP: md5()
echo "Une erreur s'est produite: ".mysqli_error($mysqli);
} else {
echo "Vous êtes inscrit avec succès!";
//on n'affiche plus le formulaire
$AfficherFormulaire=0;
}
}
}
if($AfficherFormulaire==1){
?>
<head>
<link href="register.css" rel="stylesheet" type="text/css">
<meta charset="utf-8">
<title>Inscription - Performance Saut</title>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css">
</head>
<body>
<div class="register">
<form method="post" action="register.php">
<div class="center-text-h-v">
<input type="text" name="username" placeholder="Nom d'utilisateur" required>
<input type="password" name="password" placeholder="Mot de passe" required><br>
<input type="text" name="email" placeholder="Email" required>
<input type="text" name="poids" placeholder="Poids (en KG)" required>
</form>
<form action="/panel_inscription/home.php" method="get">
<input type="submit" value="S'inscrire">
</form>
</div>
</body>
<?php
}Merci à vous pour votre aide.