Fatal error
Résolu
LePtitCodeur
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
LePtitCodeur Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
LePtitCodeur Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour mon code php ne fonctionne pas le problème vient de la ligne 12, dans le vrai code j'ai remplacer l'user et le mdp par les vrai identifiants.
Voici le code
mon hôte de base de données : mysql-leptitcodeur.alwaysdata.net
J'ai essayer de remplacer dans le code le http:// par le vide, mais sa fait la même choses.
Voila merci de me répondre si vous avez la réponse ;)
Signé
leptitcodeur
Voici le code
<?php if(isset($_POST['submit'])) { $username = htmlentities(trim($_POST['username'])); $password = htmlentities(trim($_POST['password'])); $repeatpassword = htmlentities(trim($_POST['repeatpassword'])); if($username&&$password&&$repeatpassword) { if($password==$repeatpassword) { $connect = mysql_connect('http://mysql-leptitcodeur.alwaysdata.net','user','mdp') or die('Error'); mysql_select_db('leptitcodeur_connect'); $query = mysql_query("INSERT INTO users VALUES('','$username','$password')"); die("Inscription terminée<a href='login.php'> connectez vous</a>"); }else echo"Les deux mots de passes doivent êtres identiques !"; }else echo"Veuillez saisir tout les champs !"; } ?> <!DOCTYPE [/html/htmlintro.php3 html]> <html> <head> <title>Register | LePtitCodeur</title> <meta charset="utf-8" /> </head> <body> <form method="POST" action="register.php"> <p>Votre Pseudo :</p> <input type="text" name="username" placeholder="Pseudo" /> <p>Votre Mot De Passe :</p> <input type="password" name="password" placeholder="Mot De Passe" /> <p>Répétez votre Mot De Passe</p> <input type="password" name="repeatpassword" placeholder="Mot De Passe"><br /><br /> <input type="submit" value="S'inscrire" name="submit" /> </form> </body> </html>
mon hôte de base de données : mysql-leptitcodeur.alwaysdata.net
J'ai essayer de remplacer dans le code le http:// par le vide, mais sa fait la même choses.
Voila merci de me répondre si vous avez la réponse ;)
Signé
leptitcodeur
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, lecture conseillée: https://www.php.net/manual/fr/mysqlinfo.api.choosing.php
Bonjour,
Pour commencer ... l'extension mysql est OBSOLETE.
Tu dois passer à PDO ou Mysqli !
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Si tu choisis PDO :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite, bien entendu que le HOSTNAME de ta BDD c'est sans le http
Sur la doc de alwaysdata on peut lire :
Donc si tu as une erreur... c'est que tu as un pb d'identifiant ou que tu essayes d'accéder à ta bdd depuis ailleurs que l'hébergement lui même.
Enfin bon... passe à PDO ou mysqli .. et regarde ce que ça donne.
Pour commencer ... l'extension mysql est OBSOLETE.
Tu dois passer à PDO ou Mysqli !
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Si tu choisis PDO :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite, bien entendu que le HOSTNAME de ta BDD c'est sans le http
Sur la doc de alwaysdata on peut lire :
Hôte : mysql-[moncompte].alwaysdata.net
Port : 3306
Interface d'administration : https://phpmyadmin.alwaysdata.com/
Donc si tu as une erreur... c'est que tu as un pb d'identifiant ou que tu essayes d'accéder à ta bdd depuis ailleurs que l'hébergement lui même.
Enfin bon... passe à PDO ou mysqli .. et regarde ce que ça donne.
Bon j'ai essayer et voila ce qui ce passe. Je suis aller en localhost, mais sa fonctionne pas voici les codes et quelques images
Code PhP et HTML : signin.php
Le code de traitement : traitement-signin.php
Voici l'erreur :

Et voici ma page phpmyadmin mysql


Merci de vos réponses.
Code PhP et HTML : signin.php
<!DOCTYPE html> <html lang="fr"> <head> <title>Inscription</title> <meta charset="utf-8" /> <!-- CSS --> <style type="text/css"> .h1-one{ width: 80%; border-bottom: 2px solid black; position: absolute; left: 5%; } .h1-one h1 { font-family: 'Montserrat Alternates', sans-serif; } .styl { font-family: 'Montserrat', sans-serif; width: 250px; } .erreur { color: red; } </style> </head> <header> </header> <body> <div class="h1-one"> <h1>Inscription</h1> </div> <br /><br /><br /><br /><br /><br /> <form method="POST" action="traitement-signin.php"> <table> <tr> <td> <label for="id" class="styl">Choisissez votre identifiant : </label> </td> <td> <input type="text" name="id" id="id" placeholder="Pseudo" class="styl" /> </td> </tr> <tr> <td> <label for="em" class="styl">Renseignez votre email : </label> </td> <td> <input type="email" name="email" id="em" placeholder="Email" class="styl" /> </td> </tr> <tr> <td> <label for="em2" class="styl">Confirmez votre email : </label> </td> <td> <input type="email" name="email2" id="em2" placeholder="Confirmez votre email" class="styl" /> </td> </tr> <tr> <td> <label for="md" class="styl">Choisissez votre mot de passe : </label> </td> <td> <input type="password" name="password" id="md" placeholder="Votre Mot De Passe" class="styl" /> </td> </tr> <tr> <td> <label for="md2" class="styl">Retapez votre mot de passe : </label> </td> <td> <input type="password" name="password2" id="md2" placeholder="Retapez votre Mot De Passe" class="styl" /> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> <input type="submit" name="submit" value="S'inscrire" class="styl" /> </td> </tr> </table> </form> <div class="erreur"> <?php if(isset($_GET['error'])) {echo $_GET['error'];} ?> </div> </body> <footer> </footer> </html>
Le code de traitement : traitement-signin.php
<?php $connect = new PDO("mysql:host=localhost;dbname=tutoriels;charset=utf-8","root",""); if(isset($_POST['submit'])) { if(isset($_POST['id'],$_POST['email'], $_POST['email2'], $_POST['password'], $_POST['password2'])) { if(!empty($_POST['id']) AND !empty($_POST['email']) AND !empty($_POST['email2']) AND !empty($_POST['password']) AND !empty($_POST['password2'])) { $pseudo = htmlspecialchars($_POST['id']); $email = htmlspecialchars($_POST['email']); $email2 = htmlspecialchars($_POST['email2']); $password = htmlspecialchars($_POST['password']); $password2 = htmlspecialchars($_POST['password2']); if(strlen($pseudo) < 255) { if(strlen($pseudo) >= 3 ) { if($email == $email2) { if($password == $password2) { if(strlen($password) >= 8) { if(strlen($password) < 255) { $insert = $connect->prepare("INSERT INTO users (pseudo,email,password)VALUES (?,?,?)"); $insert->execute(array($pseudo,$email,$password)); }else { header('location:signin.php?error=Votre mot de passe doit contenir moins de 255 caractère !'); } }else { header('location:signin.php?error=Votre mot de passe doit contenir plus de 8 caractère !'); } }else {header('location:signin.php?error=Vos mot de passes sont différents !'); } }else { header('location:signin.php?error=Vos email doivent êtres identiques !'); } }else { header('location:signin.php?error=Le speudo doit être superieur ou égale à 3 caractères !'); } } else { header('location:signin.php?error=Le speudo doit être inférieur à 255 caractères !'); } } else { header('location:signin.php?error=Veuillez remplir tout les champs !'); } } } ?>
Voici l'erreur :

Et voici ma page phpmyadmin mysql

Merci de vos réponses.
Relis bien le lien que je t'ai donné :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et au passage, ton code pourrait être légèrement amélioré :
Par contre, tu n'utilises pas la bonne méthode pour stocker les password....
Maintenant on utilise la fonction password_verify pour authentifier un utilisateur.
https://www.php.net/manual/fr/function.password-verify.php et donc, pour encoder le password : http://php.net/manual/fr/function.password-hash.php
Et donc je t'invite à regarde ce code :
https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7
//connexion à la bdd require_once "tonFichierDeConnexionATaBdd.php"; //fonction de redirection function redirect($errorMsg){ header('location:signin.php?error='.$errorMsg); exit(); //toujours mettre un exit apres une redirection } //récupération propre des variables AVANT de les utiliser $pseudo = !empty($_POST['id']) ? $_POST['id'] : NULL; $email = !empty($_POST['email']) ? $_POST['email'] : NULL; $email2 = !empty($_POST['email2']) ? $_POST['email2'] : NULL; $password = !empty($_POST['password']) ? $_POST['password'] : NULL; $password2 = !empty($_POST['password2']) ? $_POST['password2'] : NULL; if(isset($_POST['submit'])) { if($id && $email && $email2 && $password && $password2){ if(strlen($pseudo) >= 255) redirect('Le speudo doit être inférieur à 255 caractères !'); if(strlen($pseudo) <3 ) redirect('Le speudo doit être superieur ou égale à 3 caractères !'); if($email != $email2) redirect('Vos email doivent êtres identiques !'); if($password != $password2) redirect('Vos mot de passes sont différents !'); if(strlen($password) < 8) redirect('Votre mot de passe doit contenir plus de 8 caractère !'; if(strlen($password) > 255 ) redirect('Votre mot de passe doit contenir moins de 255 caractère !'; $sql = "INSERT INTO users (pseudo,email,password)VALUES (?,?,?)"; $datas = array($pseudo,$email,$password); try{ $insert = $connect->prepare($sql); $insert->execute($datas); }catch(Exception $e){ echo "Erreur dans la requête ! " .$e->getMessage(); die(); } }else{ redirect("Veuillez remplir tout les champs !"); } }
Par contre, tu n'utilises pas la bonne méthode pour stocker les password....
Maintenant on utilise la fonction password_verify pour authentifier un utilisateur.
https://www.php.net/manual/fr/function.password-verify.php et donc, pour encoder le password : http://php.net/manual/fr/function.password-hash.php
Et donc je t'invite à regarde ce code :
https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7