Php mysql connexion
Résolu
kihonen
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
kihonen Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
kihonen Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
excusez moi de vous dérangez, alors je fais un site pour une entreprise et celle-ci a besoin d'un système de connexion. Je me suis donc tourner vers PHP et Mysql , j'arrive à créer de nouveau utilisateurs mais impossible de se connecter , voici mon code , si vous pouviez m'aider sa serai gentil .
<?php
session_start();
if (isset($_POST['username'], $_POST['password'])) {
$username = $_POST['username'];
$pass = $_POST['password'];
$db = new PDO('mysql:host=localhost;dbname=u783201149_Util;charset=utf8', 'u783201149_admin', 'Admin2003');
$sql = "SELECT * FROM 'User' where username = ?";
$result = $db->prepare($sql);
$result->execute(array($username));
if ($result == $username) {
$data = $result->fetch();
if ($pass == $data['password']) {
echo "Connexion effectuée";
$_SESSION['username'] = $username;
}
} else {
$sql = "INSERT INTO `User` (`username`, `password`) VALUES (?, ?)";
$result = $db->prepare($sql);
$result->execute(array($username, $pass));
echo "Enregistrement effectué";
}
}
<?php
session_start();
if (isset($_POST['username'], $_POST['password'])) {
$username = $_POST['username'];
$pass = $_POST['password'];
$db = new PDO('mysql:host=localhost;dbname=u783201149_Util;charset=utf8', 'u783201149_admin', 'Admin2003');
$sql = "SELECT * FROM 'User' where username = ?";
$result = $db->prepare($sql);
$result->execute(array($username));
if ($result == $username) {
$data = $result->fetch();
if ($pass == $data['password']) {
echo "Connexion effectuée";
$_SESSION['username'] = $username;
}
} else {
$sql = "INSERT INTO `User` (`username`, `password`) VALUES (?, ?)";
$result = $db->prepare($sql);
$result->execute(array($username, $pass));
echo "Enregistrement effectué";
}
}
A voir également:
- Php mysql connexion
- Gmail connexion - Guide
- Connexion chromecast - Guide
- Gmail connexion autre compte - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Mysql community server - Télécharger - Bases de données
2 réponses
Bonjour,
Déjà, pour poster du code sur le forum, merci à l'avenir de le faire en utilisant les balises de code.
Explications à lire ici
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Ensuite...
Ce if ne sert à rien ( et est faux de toutes façons )
Et enfin.. attention à ne pas stocker les mots de passe en clair dans la bdd
il faut les "crypter" ...
Regarde la fonction password_hash
Je t'invite également à activer la gestion des erreurs PDO dans ton code pour être sûr de ne pas avoir d'erreurs dans tes requêtes
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Déjà, pour poster du code sur le forum, merci à l'avenir de le faire en utilisant les balises de code.
Explications à lire ici
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Ensuite...
Ce if ne sert à rien ( et est faux de toutes façons )
if ($result == $username) {
Et enfin.. attention à ne pas stocker les mots de passe en clair dans la bdd
il faut les "crypter" ...
Regarde la fonction password_hash
Je t'invite également à activer la gestion des erreurs PDO dans ton code pour être sûr de ne pas avoir d'erreurs dans tes requêtes
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
alors pour le code :
et le message d'erreur est :
Notice: Trying to access array offset on value of type bool in /home/u783201149/domains/xn--trechy-auto-bilan-9sb.com/public_html/contenu/base.php on line 16
<?php session_start(); if (isset($_POST['username'], $_POST['password'])) { $username = $_POST['username']; $pass = $_POST['password']; $db = new PDO('mysql:host=localhost;dbname=u783201149_Util;charset=utf8', 'u783201149_admin', 'Admin2003'); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM 'User' where username = ?"; $result = $db->prepare($sql); $result->execute(array($username)); $data = $result->fetch(); if ($pass == $data['password']) { echo "Connexion effectuée"; $_SESSION['username'] = $username; } } else { $db = new PDO('mysql:host=localhost;dbname=u783201149_Util;charset=utf8', 'u783201149_admin', 'Admin2003'); $sql = "INSERT INTO `User` (`username`, `password`) VALUES (?, ?)"; $result = $db->prepare($sql); $result->execute(array($username, $pass)); echo "Enregistrement effectué"; } ?>
et le message d'erreur est :
Notice: Trying to access array offset on value of type bool in /home/u783201149/domains/xn--trechy-auto-bilan-9sb.com/public_html/contenu/base.php on line 16
Déjà .. tu n'as pas besoin de refaire une connexion à la bdd à 50 endroits dans ton code...
Tu la fait UNE fois au début du ficher .. ça suffira.
Ensuite.. tu n'as pas appliqué exactement ce qui est donné dans le lien..
Il manque les TRY/CATCH
Et enfin.. ton erreur vient certainement de ta requête SQL .. et des quotes que tu as mis autour du nom de ta table.
Tu la fait UNE fois au début du ficher .. ça suffira.
Ensuite.. tu n'as pas appliqué exactement ce qui est donné dans le lien..
Il manque les TRY/CATCH
Et enfin.. ton erreur vient certainement de ta requête SQL .. et des quotes que tu as mis autour du nom de ta table.
et avec les erreurs activée je passe à ça : : Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''User' where username = 'Remond'' at line 1 in /home/u783201149/domains/xn--trechy-auto-bilan-9sb.com/public_html/contenu/base.php:14 Stack trace: #0 /home/u783201149/domains/xn--trechy-auto-bilan-9sb.com/public_html/contenu/base.php(14): PDOStatement->execute(Array) #1 {main} thrown in /home/u783201149/domains/xn--trechy-auto-bilan-9sb.com/public_html/contenu/base.php on line 14
il me dit ça pour le if du mot de passe .