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   -
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é";
}
}
A voir également:

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 )
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
0
kihonen Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour l'info des balises de code , pour le mot de passe j'attends déjà de le réussir sans le crypter , et pour le if je ne vois pas comment vérifier que les informations de mon formulaire correspondent à celle de la BDD sans ce if c'était pour ça .
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > kihonen Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Le where de ta requête est déjà là pour ça
0
kihonen Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
c'est vrai donc si je le retire est laisse comme ça c'est bon ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > kihonen Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
oui. ( avec son accolade fermante bien entendu.)
0
kihonen Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
déjà merci beaucoup , du coup sa marche presque j'ai juste une nouvelle erreur qui apparaît qui est "Trying to access array offset on value of type bool" et je vois pas pourquoi l'une de mes valeurs serai un booléen .
il me dit ça pour le if du mot de passe .
0
kihonen Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
alors pour le code :
<?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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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.
0
kihonen Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > kihonen Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
regarde ma réponse précédente
0
kihonen Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
merci beaucoup , maintenant ça marche , donc merci de la patience dont tu as fais preuve avec un néophyte comme moi.
je devrais m'en sortir avec le cryptage du mot de passe et le try / catch donc merci .
0