Bonjour,
Je suis nouveau en programmation.
Voila je rencontre un petit problème avec mon code.
Formulaire d'inscription dans BDD via PDO
J'ai 2 fichiers:
un fichier database.inc.php contenant que ce bout de code:
<?php $recettes = new PDO('mysql:dbname=testdb;dbname=recettes;host=127.0.0.1;charset=utf8mb4', 'root', ''); ?>
et un fichier subscribe.php:
`
<?php
//Les inc
include("inc/header.inc.php");
include_once("inc/timer.inc.php");
include_once("inc/database.inc.php");
// Test si remplissage et sécurité filter_input
if (isset($_POST['formSubcription'])) {
$loginSub = filter_input(INPUT_POST,'loginSub');
$prenom = filter_input(INPUT_POST,'prenom');
$nom = filter_input(INPUT_POST,'nom');
//prise de sha1, pas md5, test
$passwordSub = sha1($_POST['passwordSub']);
$passwordSub2 = sha1($_POST['passwordSub2']);
if (!empty($_POST['loginSub']) and !empty($_POST['prenom']) and !empty($_POST['nom']) and !empty($_POST['passwordSub'])) {
$loginSublength = strlen($loginSub);
if ($loginSublength >= 4 and $loginSublength <= 10) {
$reqloginSub = $cooking->prepare("SELECT * FROM membres WHERE loginSub = ?)");
$reqloginSub->execute(array($loginSub));
//Test si loginSub existe
$loginSubexists = $reqloginSub->rowCount();
if ($loginSubexists == 0) {
if ($passwordSub2 == $passwordSub) {
$subcription = $recettes->prepare("INSERT INTO membres ('idMembre,gravatar,login,password,statut,prenom,nom,dateCrea') VALUES (?,?,?,?,?,?,?,NOW())");
$subcription->execute(array('','','',$loginSub, $passwordSub,'membre', $prenom, $nom,''));
header('Location: profile.php');
} else {
$erreur = "Les mots de passe ne correspondent pas";
}
} else {
$erreur = "Le login est déjà utilisé";
}
} else {
$erreur = "Votre login doit être compris entre 5 et 10 caractères";
}
} else {
$erreur = "Tous les champs doivent être remplis";}
}
?>
<!Doctype html>
<html>
<head>
<title>Enregistrement</title>
<meta charset="utf-8">
<meta name="keywords" content="recettes cuisine">
<meta name="description" content="recettes">
<meta name="author" content=" Olivier">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- 1- Bootstrap-->
<link rel="stylesheet" href="css/bootstrap-grid.min.css">
<link rel="stylesheet" href="css/bootstrap.min.css">
<!-- 2- Mes feuilles de style-->
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<a href="index.php">Accueil</a>
<div class="container-fluid">
<div class="container">
<div class="row">
<form method="post" action="">
<label for="loginSub">login</label>
<input type="text" name="loginSub" id="loginSub" placeholder="login"><br><br>
<label for="prenom">Prenom</label>
<input type="text" name="prenom" id="prenom" placeholder="prenom"><br><br>
<label for="nom">Nom</label>
<input type="text" name="nom" id="nom" placeholder="nom"><br><br>
<label for="passwordSub">Mot de Passe</label>
<input type="password" name="passwordSub" id="passwordSub" placeholder="Mot de Passe"><br><br>
<label for="passwordSub2">Confirmation Mot de Passe</label>
<input type="password" name="passwordSub2" id="passwordSub2" placeholder="Confirmation Mot de Passe"><br><br>
<input type="submit" name = "formSubcription" value="S'enregistrer">
</form>
</div>
</div>
</div>
<!-- Vérification sécurité htmlspecialchars et htmlentities-->
<!--
<span><?php echo htmlspecialchars($loginSub);?></span><br>
<span><?php echo htmlspecialchars($nom);?></span><br>
<span><?php echo htmlentities($prenom);?></span><br>
-->
</body>
<?php
// Vérification erreur formulaire
if (isset($erreur)) {
echo $erreur;
}
//footer
include("inc/footer.inc.php");
?>
</html>
`
Ce formulaire servirait à insérer des utilisateurs dans une BDD
J'aimerais que ce formulaire insère des utilisateurs dans ma bdd 'membres" (avec vérification que le login n'ait pas déjà été utilisé).
=> Seulement, ce formulaire ne permet de remplir que le login, nom, prénom et mot de passe alors que ma table comporte plus de champs.
Ce que j'obtiens
L'insertion ne se fait pas mais je suis bien redirigé vers profile.php grace au header('location: profile.php');
Pourtant quand je teste via un SELECT * FROM membres ou un var_dump, les infos s'affichent.
Voyez vous un élément qui fait que ca ne marche pas et que j'aurais zappé?
D'avance merci et bonnes fêtes.