Bonjour, j'ai fait un formulaire d'inscription, et dès qu'on s'inscrit, ça m'indique "successful registration !" alors que au final rien est rentrer dans la bdd.
Voila le PHP:
<?php
require_once 'config.php'; // On inclu la connexion à la bdd
// Si les variables existent et qu'elles ne sont pas vides
if(!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
{
// Patch XSS
$pseudo = htmlspecialchars($_POST['pseudo']);
$email = htmlspecialchars($_POST['email']);
$password = htmlspecialchars($_POST['password']);
$password_retype = htmlspecialchars($_POST['password_retype']);
// On vérifie si l'utilisateur existe
$check = $bdd->prepare('SELECT pseudo, email, password FROM utilisateurs WHERE email = ?');
$check->execute(array($email));
$data = $check->fetch();
$row = $check->rowCount();
$email = strtolower($email); // on transforme toute les lettres majuscule en minuscule pour éviter que Foo@gmail.com et foo@gmail.com soient deux compte différents ..
// Si la requete renvoie un 0 alors l'utilisateur n'existe pas
if($row == 0){
if(strlen($pseudo) <= 30){ // On verifie que la longueur du pseudo <= 100
if(strlen($email) <= 100){ // On verifie que la longueur du mail <= 100
if(filter_var($email, FILTER_VALIDATE_EMAIL)){ // Si l'email est de la bonne forme
if($password === $password_retype){ // si les deux mdp saisis sont bon
// On hash le mot de passe avec Bcrypt, via un coût de 12
$cost = ['cost' => 12];
$password = password_hash($password, PASSWORD_BCRYPT, $cost);
// On stock l'adresse IP
$ip = $_SERVER['REMOTE_ADDR'];
// On insère dans la base de données
$insert = $bdd->prepare('INSERT INTO utilisateurs(pseudo, email, password, ip, wallet, emailpaypal) VALUES(:pseudo, :email, :password, :ip, :wallet, :emailpaypal)');
$insert->execute(array(
'pseudo' => $pseudo,
'email' => $email,
'password' => $password,
'ip' => $ip,
'wallet' => "3",
'emailpaypal' => ""
));
// On redirige avec le message de succès
header('Location:signup.php?reg_err=success');
die();
}else{ header('Location: signup.php?reg_err=password'); die();}
}else{ header('Location: signup.php?reg_err=email'); die();}
}else{ header('Location: signup.php?reg_err=email_length'); die();}
}else{ header('Location: signup.php?reg_err=pseudo_length'); die();}
}else{ header('Location: signup.php?reg_err=already'); die();}
}
?>
tu as probablement une erreur dans ton fichier config.php.
Tu l'inclus, mais, comme on ne sait pas ce qu'il y a dedans. Si le nouvel utilisateur n'est pas ajouté dans la BDD c'est qu'il y a une couille entre le submit et la BDD.
Dans ta précipitation, tu as oublié le fichier le plus important.
je me suis dit la même chose mais nan puisque j’utilise exactement le même fichier pour le formulaire de connexion et le formulaire de connexion marche a merveille, je ne comprend pas, vraiment pas.
merci quand même
si tu veux que je te montre plus de fichier je suis là.
Ton code fonctionne chez moi, comme dis plus haut tu dois avoir une erreur lors de la requête (taille de colonne trop petite pour le password ? type incorrect de colonne ? ou autre...)
Dans ton fichier "config.php", tu as pensé à activer les erreurs PDO ?
Par ailleurs, utiliser htmlspecialchars avant d'enregistrer des données n'est pas une bonne pratique. Plutôt utiliser cette fonction lors de l'affichage des données dans ton HTML
Salut hippomssc, oui j’ai mis les erreurs PDO dans le fichier config.php mais dit moi est ce que toi ça a marcher juste en copiant et en collant ou tu as modifié certaine chose ? Et non, aucun problème avec la base de donnée, puisque hier matin j’ai juste pris un autre HTML d’un autre formulaire d’inscription et ça a marcher mais comme le css netait pas très beau j’ai mis les input dans le formulaire que moi j’ai fait mais boom plus rien ne marche, donc je me suis dit tant pis et j’ai pris l’autre code mais ça marcher plus, a ce moment là jai vrillé, et Je me rappelle pas avoir changer quelque chose.
hippomssc a écrit:
Salut,
Ton code fonctionne chez moi, comme dis plus haut tu dois avoir une erreur lors de la requête (taille de colonne trop petite pour le password ? type incorrect de colonne ? ou autre...)
Dans ton fichier "config.php", tu as pensé à activer les erreurs PDO ?
Par ailleurs, utiliser htmlspecialchars avant d'enregistrer des données n'est pas une bonne pratique. Plutôt utiliser cette fonction lors de l'affichage des données dans ton HTML
Tu as corrigé assez rapidement, mais fais quand même attention avant de poster des infos aussi critiques (comme des identifiants de bdd ;)), surtout vu les données très sensibles que tu stockes en BDD...
3 choses :
- Si tu as une BDD hébergée (pas en local donc), il faut que tu modifies l'host lors de l'instanciation de la connexion avec la BDD -> ici tu as toujours "localhost", regarde sur le site web de ton hébergeur, normalement tu dois avoir l'host de renseigné avec les identifiants de connexion de la BDD.
$bdd = new PDO("mysql:host=A_MODIFIER;dbname=;charset=utf8;", "TON_IDENTIFIANT", "TON_PASSWORD");
- Certains hébergeurs bloquent les connexions qui ne sont pas sur leurs serveurs, ce qui veut dire que si tu travaille en localhost tu ne pourras pas communiquer avec ta bdd hébergée. Il est donc possible qu'il faille d'abord que tu héberge ton site sur les serveurs de ton hébergeur pour pouvoir interagir avec la BDD. Le mieux serait que tu travailles avec une BDD en local avant de passer sur une BDD hébergée.
- Tu n'as pas activé les erreurs PDO : rajoute la ligne que je t'ai mis juste avant (en remplaçant la variable de l'exemple avec ta variable "bdd")
Commence déjà par activer les erreurs PDO, on verra la suite après
J'ai ajouter la lignes et ça me dit "Cette page ne fonctionne pas", et par ailleurs je pense que le fichier Config ne pose pas problème puisque dès que jessaie de mettre un compte existant bah ça m'indique ALREADY EXISTING ACCOUNT donc ça se connecte bien a la BDD.
hippomssc a écrit:
Tu as corrigé assez rapidement, mais fais quand même attention avant de poster des infos aussi critiques (comme des identifiants de bdd ;)), surtout vu les données très sensibles que tu stockes en BDD...
3 choses :
- Si tu as une BDD hébergée (pas en local donc), il faut que tu modifies l'host lors de l'instanciation de la connexion avec la BDD -> ici tu as toujours "localhost", regarde sur le site web de ton hébergeur, normalement tu dois avoir l'host de renseigné avec les identifiants de connexion de la BDD.
$bdd = new PDO("mysql:host=A_MODIFIER;dbname=;charset=utf8;", "TON_IDENTIFIANT", "TON_PASSWORD");
- Certains hébergeurs bloquent les connexions qui ne sont pas sur leurs serveurs, ce qui veut dire que si tu travaille en localhost tu ne pourras pas communiquer avec ta bdd hébergée. Il est donc possible qu'il faille d'abord que tu héberge ton site sur les serveurs de ton hébergeur pour pouvoir interagir avec la BDD. Le mieux serait que tu travailles avec une BDD en local avant de passer sur une BDD hébergée.
- Tu n'as pas activé les erreurs PDO : rajoute la ligne que je t'ai mis juste avant (en remplaçant la variable de l'exemple avec ta variable "bdd")
Commence déjà par activer les erreurs PDO, on verra la suite après
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
Mauvais titre
Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.
Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).
De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.
Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.
Merci de modifier votre titre. Pour cela, éditez le premier message de votre sujet.
(titre originel : Trouvez le problème PHP)
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Bonjour, est-ce que tu peux peut-être dans un premier temps, supprimer où mettre en commentaire la ligne qui effectue la redirection lorsque l'inscription est effectué avec succès.
// On redirige avec le message de succès
header('Location:signup.php?reg_err=success');
Je me demande si PHP et/où MySQL n'ont pas logger une erreur qui a put être caché par la redirection.
En enlevant la redirection normalement si il n'y a pas d'erreur (logger) tu dois avoir une page complétement blanche.
Bonsoir, aucune erreur juste une page blanche, vraiment bizarre.
SamuelGaborieau3 a écrit:
Bonjour, est-ce que tu peux peut-être dans un premier temps, supprimer où mettre en commentaire la ligne qui effectue la redirection lorsque l'inscription est effectué avec succès.
// On redirige avec le message de succès
header('Location:signup.php?reg_err=success');
Je me demande si PHP et/où MySQL n'ont pas logger une erreur qui a put être caché par la redirection.
En enlevant la redirection normalement si il n'y a pas d'erreur (logger) tu dois avoir une page complétement blanche.
J'ai ajouter la lignes et ça me dit "Cette page ne fonctionne pas"
- Edité par MrLeak 20 août 2022 à 1:34:43
Ce message ressemble à celui par défaut de ton navigateur pour indiquer qu'il y a une erreur lors du traitement du code serveur (ton php), normalement tu devrais avoir le message d'erreur d'affiché pour te guider dans ton débogage.
Est-ce que tu peux vérifier dans ton php.ini (fichier de configuration php) que l'option "display_errors" est bien sur "On".
(Si tu utilises wamp, le fichier se trouve dans wamp64/bin/php/php.LA_VERSION_DE_PHP_QUE_TU_UTILISES/php.ini
Ou alors, tu rajoutes dans ton fichier "config.php" ces deux lignes pour activer les erreurs :
C'est bon, mon champs de l'ip etait de max 20 j'ai monter a 200 et ça marche, merci beaucoup hippomssc <3
hippomssc a écrit:
Hello,
MrLeak a écrit:
J'ai ajouter la lignes et ça me dit "Cette page ne fonctionne pas"
- Edité par MrLeak 20 août 2022 à 1:34:43
Ce message ressemble à celui par défaut de ton navigateur pour indiquer qu'il y a une erreur lors du traitement du code serveur (ton php), normalement tu devrais avoir le message d'erreur d'affiché pour te guider dans ton débogage.
Est-ce que tu peux vérifier dans ton php.ini (fichier de configuration php) que l'option "display_errors" est bien sur "On".
(Si tu utilises wamp, le fichier se trouve dans wamp64/bin/php/php.LA_VERSION_DE_PHP_QUE_TU_UTILISES/php.ini
Ou alors, tu rajoutes dans ton fichier "config.php" ces deux lignes pour activer les erreurs :
Hélas non : c'est tout aussi vague… Essayez de résumer en une phrase le souci que vous rencontrez (pas la cause, puisque vous la cherchez).
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Erreur PHP MySQL
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
suggestion de présentation.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Pas d'aide concernant le code par MP, le forum est là pour ça :)