Correction de code PHP : Login/Password
Einsvinci
Messages postés
30
Statut
Membre
-
Einsvinci Messages postés 30 Statut Membre -
Einsvinci Messages postés 30 Statut Membre -
Bonjour,
J'ai trouvé un code d'authentification (Login+Mot de passe) sur Youtube. Il marche bien dans le tito vidéo. Je l'ai repris comme tel.
Mais quand je l'essaie, il me donne l'erreur suivante :

Pour information, j'ai pris la vidéo tuto sur Youtube au lien suivant : https://www.youtube.com/watch?v=B1_yi7HM0Cg
Je vous donne les fichiers ci-dessous :
1. CONNECTION.PHP
2. INDEX.PHP
3. USER.PHP
NB : Une petite modif sur la forme du formulaire de connexion a été opérée. Les messages d'erreurs ont été traduits. C'est tout. Pour le reste, c'est pareil.
Merci pour votre aide.
Einsvinci
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
J'ai trouvé un code d'authentification (Login+Mot de passe) sur Youtube. Il marche bien dans le tito vidéo. Je l'ai repris comme tel.
Mais quand je l'essaie, il me donne l'erreur suivante :

Pour information, j'ai pris la vidéo tuto sur Youtube au lien suivant : https://www.youtube.com/watch?v=B1_yi7HM0Cg
Je vous donne les fichiers ci-dessous :
1. CONNECTION.PHP
<?php
class Connection {
public function dbConnect () {
return new PDO ("mysql:host=localhost; dbname=Login", "root", "");
}
}
?>
2. INDEX.PHP
<?php
include_once('User.php');
if(isset($_POST['submit'])){
$name = $_POST['user'];
$pass = $_POST['pass'];
$object = new User();
$object->Login($name, $pass);
}
?>
<!DOCTYPE html>
<head>
</head>
<body style="font-family:helvetica, arial, verdana; font-size:12px;">
<span style="font-size:15px; font-weight:bold; color:#000000; text-shadow:0px 0px 1px #808080;">ESPACE ACHETEUR :</span>
<p style="font-style:italic;">Veuillez entrer vos identifiants pour vous accéder au formulaire d'achat des produits voulus.</p>
<div style="width:500px;height:40px; border:1px solid #009900; padding:20px 5px 5px 5px;" align="center">
<form method="post" action="index.php">
Login <input type="text" name="user" placeholder="Login" size="12" maxlength="10" style="border:1px solid #009900;">
Mot de passe <input type="password" name="pass" placeholder="**********" size="12" maxlength="10" style="border:1px solid #009900;">
<input type="submit" name="submit" value="Connexion">
</form>
</div>
</body>
</html>
3. USER.PHP
<?php
include_once(connection.php);
class User {
private $db;
public function _construct (){
this-> $db = new Connection ();
this-> $db = this->$db->dbConnect();
}
public function Login ($name, $pass){
if(!empty($name)&& !empty($pass)){
$st=this->$db->prepare("SELECT FROM users WHERE name =? AND pass = ?");
$st->BindParam(1, $name);
$st->BindParam(2, $pass);
$st->execute();
if ($st->rowCount()==1){
echo "Identifiants corrects : accès autorisé !"
}else{
echo "Identifiants incorrects !"
}
}else{
echo "Veuillez entrer votre login et votre mot de passe !"
}
}
}
?>
NB : Une petite modif sur la forme du formulaire de connexion a été opérée. Les messages d'erreurs ont été traduits. C'est tout. Pour le reste, c'est pareil.
Merci pour votre aide.
Einsvinci
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
2 réponses
-
Bonjour,
1- Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
2 - Ne manquerait-il pas un Underscore à ta fonction contruct ?
https://www.php.net/manual/fr/language.oop5.decon.php
-
Salut,
Ton utilisation de $this et des propriétés de classe n'est pas correct.
La pseudo variable $this doit s'écrire avec un $, tandis que l'appel/l'affectation des propriétés de classe via $this se fait sans $.
private $db; public function __construct (){ $this->db = new Connection (); $this->db = $this->db->dbConnect(); }
Idem dans la méthode Login().
Comme le précise jordane45, la méthode __construct s'écrit avec deux underscores.
Bonne journée