Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de connexion PDO

    28 décembre 2017 à 15:16:06

    Bonjour,

    Je souhaite créer une page d'inscription pour mon site, et le problème est qu'il ne veut pas insérer les données dans la base de donnée et il ne m'affiche aucune erreur.

    Voici mon code :

    <!DOCTYPE html>
    <html>
        <head>
        	<title>S'inscrire | PrograMed-IP.com</title>
        	<meta charset="utf-8"/>
        	<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        	<link href="../css/inscription.css" rel="stylesheet" type="text/css"/>
        </head>
        <body>
        	<?php
        	    include '../includes/header_nav.html';
        	    for($i = 0; $i != 5; $i++){
        	    	echo '<br/>';
        	    }
        	?>
        	<form method="POST" action="">
        		<table align="center">
        			<tr>
        				<td>
        		            <label for="prenom">Votre pr&eacute;nom : </label>
        		        </td>
        		        <td>
        		        	<input type="text" name="prenom" id="prenom" placeholder="Entrez votre pr&eacute;nom" required/>
        		        </td>
        		    </tr>
        		    <tr>
        		    	<td>
        		    		<label for="pseudo">Cr&eacute;ez un pseudo : </label>
        		    	</td>
        		    	<td>
        		    		<input type="text" name="pseudo" id="pseudo" placeholder="Entrez votre pseudo" required/>
        		    	</td>
        		    </tr>
        		    <tr>
                        <?php
                            if(isset($emailerror)){
                                echo $emailerror;
                            }
                        ?>
        		    	<td>
        		    		<label for="email">Votre e-mail : </label>
        		    	</td>
        		    	<td>
        		    		<input type="email" name="email" id="email" placeholder="xyz@exemple.com" required/>
        		    	</td>
        		    </tr>
        		    <tr>
                        <?php
                            if(isset($erreurpass)){
                                echo $erreurpass;
                            }
                        ?>
        		    	<td>
        		    		<label for="passwd">Cr&eacute;ez un mot de passe : </label>
        		    	</td>
        		    	<td>
        		    		<input type="password" name="passwd" id="passwd" placeholder="Entrez un mot de passe" required/>
        		    	</td>
        		    </tr>
        		    <tr>
        		    	<td>
        		    		<label for="confirm-passwd">Confirmez votre mot de passe : </label>
        		    	</td>
        		    	<td>
        		    		<input type="password" name="confirm-passwd" id="confirm-passwd" placeholder="R&eacute;-entrez votre mot de passe" required/>
        		    	</td>
        		    </tr>
        		</table>
                <br/>
                <center>
                    <input type="submit" name="submit" value="S'inscrire"/>
                </center>
        	</form>
        	<br/>
        	<br/>
        	<?php
                $dbconnect = new PDO('mysql:host=127.0.0.1;dbname=website_accounts', 'root', '');
                if(isset($_POST['submit'])){
                    if(!empty($_POST['prenom']) AND !empty($_POST['pseudo']) AND !empty($_POST['email']) AND!empty($_POST['passwd']) AND!empty($_POST['confirm-passwd'])){
                        $prenom = strip_tags($_POST['prenom']);
                        $pseudo = strip_tags($_POST['pseudo']);
                        $email = strip_tags($_POST['email']);
                        $passwd = sha1($_POST['passwd']);
                        $confirm = sha1($_POST['confirm-passwd']);
                        $passwdlength = strlen($passwd);
                        if($passwdlength < 8){
                            $erreurpass = '<span style="color: #bbb" align="center">Le mot de passe doit contenir au moins 8 caractères</span>';
                            if(filter_var($email, FILTER_VALIDATE_EMAIL)){
                                if($passwd == $confirm){
                                    $inscription = $dbconnect->prepare('INSERT INTO no_offer_accounts(prenom, pseudo, email, passwd) VALUES (?, ?, ?)');
                                    $inscription->execute(array($prenom, $pseudo, $email, $passwd));
                                }
                                else{
                                    echo '<span style="color: #ee4444;" align="center">Vos mot de passe ne correspondent pas !</span>';
                                }
                            }
                            else{
                                $emailerror = '<span style="color: #bbb;" align="center">Ceci n\'est pas un e-mail !</span>';
                            }
                        }
                    }
                    else{
                        echo '<span style="color: #ee4444;">Tous les champs doivent être remplis !</span>';
                    }
                }
        	?>
        </body>
    </html>

    -
    Edité par ProgramedIp 28 décembre 2017 à 15:17:52

    • Partager sur Facebook
    • Partager sur Twitter
      28 décembre 2017 à 15:21:51

      Salut !

      Avant toute chose, direction la FAQ PHP en passant par le lien dans ma signature, ceci afin d'activer l'affichage des erreurs PHP ET PDO.

      J'ai bien vu ce qui pose problème en fait : quelque part, il y a trois trucs attendus, mais on en fournit 4… Avec le message d'erreur, ce sera très clair  ^^

      -
      Edité par Ymox 28 décembre 2017 à 15:23:24

      • Partager sur Facebook
      • Partager sur Twitter
        28 décembre 2017 à 15:28:48

        En effet, ligne 90 il te manque un "?" :) Comme le disait Ymox pense à activer les erreurs en local pour pouvoir débugger ton script.

        Bonne journée!

        • Partager sur Facebook
        • Partager sur Twitter
          29 décembre 2017 à 8:40:39

          Ça ne veut encore pas marcher !

          -
          Edité par ProgramedIp 29 décembre 2017 à 8:49:13

          • Partager sur Facebook
          • Partager sur Twitter
            29 décembre 2017 à 11:00:09

            On n'a encore pas de message d'erreur… Aurais-tu encore pas activé leur affichage ?

            • Partager sur Facebook
            • Partager sur Twitter
              29 décembre 2017 à 12:57:56

              Et comment le faire?

              Quand je vois dans la configuration de php, je trouve que "display_errors" est coché.

              Je suis sur Wamp 3.1.0 avec php 7.1.9

              • Partager sur Facebook
              • Partager sur Twitter
                30 décembre 2017 à 23:12:38

                OK pour PHP, reste de le faire pour PDO.

                Avant toute chose, direction la FAQ PHP en passant par le lien dans ma signature, ceci afin d'activer l'affichage des erreurs PHP ET PDO.

                -
                Edité par Ymox 30 décembre 2017 à 23:12:56

                • Partager sur Facebook
                • Partager sur Twitter
                  2 janvier 2018 à 19:14:35

                  Je n'ai pas trouvé la section "activer l'affichage des erreurs PHP et PDO" (ou quelque chose ressemblable) dans le lien de la FAQ que t'as mis.

                  -
                  Edité par ProgramedIp 2 janvier 2018 à 19:25:49

                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 janvier 2018 à 21:05:34

                     $dbconnect = new PDO('mysql:host=127.0.0.1;dbname=website_accounts', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));
                    
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 janvier 2018 à 12:38:27

                      Ah ! tu parles de :

                      $dbconnect->setAttribut(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                      Oui je l'ai bien activé en mettant :

                      catch(PDOException $e){
                          echo 'Vos données n\'ont pas pus être enregistrées !<br/>Erreur : ' .$e->getMessage();
                      }
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 janvier 2018 à 8:36:14

                        On est d'accord que tu as bien changé la connexion comme te l'a montré philodick (et comme c'est expliqué dans la FAQ) ou que tu as bien mis ce qui correspond à ton premier bloc de code ? Parce que juste le second ne fait que capturer les erreurs s'il y en a de jetées, mais si tu ne demandes pas qu'il y en ait , ça ne servira pas à grand chose.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 janvier 2018 à 10:35:27

                          Je reformule : mettre un try { … } catch (…) { … } n'active pas les erreurs, cela ne fait que les capturer s'il y en a. Mais pour qu'il y en ait, il faut le demander à PDO (en plus de demander à PHP), d'où l'utilité de l'autre partie.

                          -
                          Edité par Ymox 4 janvier 2018 à 10:35:51

                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 janvier 2018 à 17:42:15

                            Salut,

                            Ca m'affiche bien des erreurs, plutot basiques (des fautes de frappe), mais j'ai dus aussi enlever l'autoloader.

                            Je corrigerais les erreurs et je te signalerais si ça ne fonctionne pas encore.^^

                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 janvier 2018 à 8:34:40

                              Salut,

                              J'ai corrigé le problème et ça marche très bien. Mais, quand j'ai fait la page de connexion, il me renvoie une erreur bizarre :

                              Fatal error: Uncaught PDOException: You cannot serialize or unserialize PDOStatement instances in [no active file]:0 Stack trace: #0 [internal function]: PDOStatement->__sleep() #1 {main} thrown in [no active file] on line 0

                              Voici mon code :

                              <?php
                                  if(isset($_POST['submit'])){
                                      if(!empty($_POST['user']) AND !empty($_POST['pass'])){
                                          $user = strip_tags($_POST['user']);
                                          $pass = sha1($_POST['pass']);
                                          $db_connect = new PDO('mysql:host=localhost;dbname=website', 'root', 'Local-Server/PrograMed', [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
                                          $verif = $db_connect->prepare('SELECT * FROM accounts WHERE pseudo = ? AND passwd = ?');
                                          $verif->execute([$user, $pass]);
                                          $exist = $verif->rowCount();
                                          if($exist === 1){
                                              $email = $db_connect->prepare('SELECT accounts.email FROM accounts WHERE pseudo = ? AND passwd = ?');
                                              $email->execute([$user, $pass]);
                                              $check_email = $email->rowCount();
                                              $email->fetch();
                                              $prenom = $db_connect->prepare('SELECT accounts.prenom FROM accounts WHERE pseudo = ? AND passwd = ?');
                                              $prenom->execute([$user, $pass]);
                                              $check_prenom = $prenom->rowCount();
                                              $prenom->fetch();
                                              $verif->fetch();
                                              $_SESSION['prenom'] = $prenom;
                                              $_SESSION['pseudo'] = $user;
                                              $_SESSION['email'] = $email;
                                              $_SESSION['pass'] = $pass;/*
                                              echo '<script> document.location.href = "index.php?id=profile"; </script>';*/
                                          }
                                          else{
                                              $verif = $db_connect->prepare('SELECT * FROM accounts WHERE email = ? AND passwd = ?');
                                              $verif->execute([$user, $pass]);
                                              $exist = $verif->rowCount();
                                              if($exist === 1){
                                                  $pseudo = $db_connect->prepare('SELECT accounts.pseudo FROM accounts WHERE email = ? AND passwd = ?');
                                                  $pseudo->execute([$user, $pass]);
                                                  $check_pseudo = $pseudo->rowCount();
                                                  $pseudo->fetch();
                                                  $prenom = $db_connect->prepare('SELECT accounts.prenom FROM accounts WHERE email = ? AND passwd = ?');
                                                  $prenom->execute([$user, $pass]);
                                                  $check_prenom = $prenom->rowCount();
                                                  $prenom->fetch();
                                                  $verif->fetch();
                                                  $_SESSION['prenom'] = $prenom;
                                                  $_SESSION['pseudo'] = $pseudo;
                                                  $_SESSION['email'] = $user;
                                                  $_SESSION['pass'] = $pass;/*
                                                  echo '<script> document.location.href = "index.php?id=profile"; </script>';*/
                                              }
                                              else{
                                                  $err = '<span style="color: #f44;">E-mail, pseudo ou mot de passe incorrecte(s)</span>';
                                              }
                                          }
                                      }
                                  }
                              ?>
                              <!DOCTYPE html>
                              <html>
                                  <head>
                                      <title>Se connecter | PrograMed-IP.com</title>
                                      <meta http-equiv="Content-Type" content="text/html"/>
                                      <meta charset="utf-8"/>
                                      <meta http-equiv="Content-Language" content="fr-FR"/>
                                      <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
                                      <link rel="stylesheet" type="text/css" href="css/connect.css"/>
                                      <link rel="stylesheet" type="text/css" href="css/icons.css"/>
                                      <link rel="stylesheet" type="text/css" href="css/footer.css"/>
                                      <link rel="stylesheet" type="text/css" href="css/header_nav.css"/>
                                  </head>
                                  <body>
                                      <div id="desktop">
                                          <?php include 'includes/header_nav.html'; ?>
                                          <div id="form" align="center">
                                              <h2 style="text-align:center;">Se connecter</h2>
                                              <form method="POST">
                                                  <table>
                                                      <tr>
                                                          <td>
                                                              <label for="user">E-mail ou pseudo : </label>
                                                          </td>
                                                          <td>
                                                              <input type="text" name="user" id="user"/>
                                                          </td>
                                                      </tr>
                                                      <tr>
                                                          <td>
                                                              <label for="pass">Mot de passe : </label>
                                                          </td>
                                                          <td>
                                                              <input type="password" name="pass" id="pass"/>
                                                          </td>
                                                      </tr>
                                                  </table>
                                                  <button type="submit" name="submit" id="submit">Se connecter</button>
                                                  <div id="errors">
                                                      <?php if(isset($err)){ echo $err; } ?>
                                                  </div>
                                              </form>
                                              <p style="font-size: 14px;">Pas encore de compte ? Créez-en un <a href="index.php?id=register">ici</a> !</p>
                                          </div>
                                          <?php include 'includes/footer.html'; ?>
                                          <script type="text/javascript" src="js/fix_menu.js"></script>
                                      </div>
                                  </body>
                              </html>

                              Merci pour vos réponses.

                              NB : Le mot de passe a changé car j'ai installé Apache, PHP, MySQL et phpMyAdmin manuellement.

                              -
                              Edité par ProgramedIp 12 janvier 2018 à 8:42:59

                              • Partager sur Facebook
                              • Partager sur Twitter
                                12 janvier 2018 à 9:03:24

                                Bonjour,

                                Tu essayes de mettre tout le résultat de la requête en session, ça ne va pas. Il faut que tu fetch la requête et qu'ensuite tu prennent juste le  prenom, etc...

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 janvier 2018 à 10:34:46

                                  Salut,

                                  sinon tu peux aussi sélectionner plusieurs champs en une seule requête, ça évite de faire 3 requêtes pour le mail/nom/prénom ;) => voir les cours

                                  ++

                                  -
                                  Edité par christouphe 12 janvier 2018 à 10:35:00

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    14 janvier 2018 à 20:50:23

                                    Salut,

                                    J'ai reglé le problème mais il ne veut pas enregistrer les $_SESSION.

                                    Voici le nouveau code :

                                    (page de connexion)

                                    <?php
                                        $db_connect = new PDO('mysql:host=127.0.0.1;dbname=website', 'root', 'Local-Server/PrograMed', [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
                                        if(isset($_POST['submit'])){
                                            if(!empty($_POST['user']) && !empty($_POST['pass'])){
                                                $user = strip_tags($_POST['user']);
                                                $pass = sha1($_POST['pass']);
                                                $verif = $db_connect->prepare('SELECT * FROM accounts WHERE email = ? AND passwd = ?');
                                                $verif->execute([$user, $pass]);
                                                $exist = $verif->rowCount();
                                                if($exist === 1){
                                                    $connect = $verif->fetch();
                                                    $_SESSION['id'] = $connect['id'];
                                                    $_SESSION['prenom'] = $connect['prenom'];
                                                    $_SESSION['pseudo'] = $connect['pseudo'];
                                                    $_SESSION['email'] = $connect['email'];
                                                    $_SESSION['pass'] = $connect['passwd'];
                                                    header('Location: index.php?id=profile&user=' .$connect['id']);
                                                    exit();
                                                }
                                                else{
                                                    $verif = $db_connect->prepare('SELECT * FROM accounts WHERE pseudo = ? AND passwd = ?');
                                                    $verif->execute([$user, $pass]);
                                                    $exist = $verif->rowCount();
                                                    if($exist === 1){
                                                        $connect = $verif->fetch();
                                                        $_SESSION['id'] = $connect['id'];
                                                        $_SESSION['prenom'] = $connect['prenom'];
                                                        $_SESSION['pseudo'] = $connect['pseudo'];
                                                        $_SESSION['email'] = $connect['email'];
                                                        $_SESSION['pass'] = $connect['passwd'];
                                                        header('Location: index.php?id=profile&user=' .$connect['id']);
                                                        exit();
                                                    }
                                                }
                                            }
                                        }
                                    ?>
                                    <!DOCTYPE html>
                                    <html>
                                        <head>
                                            <title>Se connecter | PrograMed-IP.com</title>
                                            <meta http-equiv="Content-Type" content="text/html"/>
                                            <meta charset="utf-8"/>
                                            <meta http-equiv="Content-Language" content="fr-FR"/>
                                            <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
                                            <link rel="stylesheet" type="text/css" href="css/connect.css"/>
                                            <link rel="stylesheet" type="text/css" href="css/icons.css"/>
                                            <link rel="stylesheet" type="text/css" href="css/footer.css"/>
                                            <link rel="stylesheet" type="text/css" href="css/header_nav.css"/>
                                        </head>
                                        <body>
                                            <div id="desktop">
                                                <?php include 'includes/header_nav.html'; ?>
                                                <div id="form" align="center">
                                                    <h2 style="text-align:center;">Se connecter</h2>
                                                    <form method="POST">
                                                        <table>
                                                            <tr>
                                                                <td>
                                                                    <label for="user">E-mail ou pseudo : </label>
                                                                </td>
                                                                <td>
                                                                    <input type="text" name="user" id="user"/>
                                                                </td>
                                                            </tr>
                                                            <tr>
                                                                <td>
                                                                    <label for="pass">Mot de passe : </label>
                                                                </td>
                                                                <td>
                                                                    <input type="password" name="pass" id="pass"/>
                                                                </td>
                                                            </tr>
                                                        </table>
                                                        <button type="submit" name="submit" id="submit">Se connecter</button>
                                                        <div id="errors">
                                                            <?php if(isset($err)){ echo $err; } ?>
                                                        </div>
                                                    </form>
                                                    <p style="font-size: 14px;">Pas encore de compte ? Créez-en un <a href="index.php?id=register">ici</a> !</p>
                                                </div>
                                                <?php include 'includes/footer.html'; ?>
                                                <script type="text/javascript" src="js/fix_menu.js"></script>
                                            </div>
                                        </body>
                                    </html>

                                    (page "profile")

                                    <?php
                                        $db_connect = new PDO('mysql:host=localhost;dbname=website', 'root', 'Local-Server/PrograMed', [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
                                        if(isset($_GET['user']) AND $_GET['user'] > 0){
                                            $user = intval($_GET['user']);
                                            $request = $db_connect->prepare('SELECT * FROM accounts WHERE id = ?');
                                            $request->execute([$user]);
                                            $infos = $request->fetch();
                                    ?>
                                    <!DOCTYPE html>
                                    <html lang="fr-FR">
                                        <head>
                                            <title>Profil | PrograMed-IP.com</title>
                                            <meta charset="utf-8"/>
                                            <meta http-equiv="Content-Type" content="text/html"/>
                                            <meta http-equiv="Content-Language" content="fr-FR"/>
                                            <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
                                            <link rel="stylesheet" type="text/css" href="css/header_nav.css"/>
                                            <link rel="stylesheet" type="text/css" href="css/footer.css"/>
                                            <link rel="stylesheet" type="text/css" href="css/profile.css"/>
                                            <link rel="stylesheet" type="text/css" href="css/icons.css"/>
                                        </head>
                                        <body>
                                            <div id="desktop">
                                                <?php include 'includes/header_nav.html'; ?>
                                                <div id="content">
                                                    <h2><?=$infos['pseudo'] ?></h2>
                                                    <div id="img">
                                                        <img src="photos/" style="height: 50px; width: 50px; border-radius: 50%;"/>
                                                    </div>
                                                    <div id="personnal_infos">
                                                        <p>Pr&eacute;nom : <?= $infos['prenom']; ?></p>
                                                        <p>Pseudo : <?= $infos['pseudo']; ?></p>
                                                        <p>E-mail : <?= $infos['email']; ?></p>
                                                        <?php if(isset($_SESSION['id']) && $id === $_SESSION['id']){ ?>
                                                        <a href="#">Editer le profil</a>
                                                        <a href="index.php?id=deconnect" id="deconnect">Se d&eacute;connecter</a>
                                                    </div>
                                                </div>
                                            </div>
                                        </body>
                                    </html>
                                    <?php
                                        }
                                    ?>




                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      15 janvier 2018 à 10:07:30

                                      Je l'ai mis dans une autre page index.php. La voilà :

                                      <?php
                                          session_start();
                                          if(isset($_GET['id'])){
                                          	$id = $_GET['id'];
                                          }
                                          else{
                                          	$id = 'home';
                                          }
                                          if($id === 'home'){
                                          	require '../pages/home.php';
                                          }
                                          elseif($id === 'register'){
                                          	require '../pages/register.php';
                                          }
                                          elseif($id === 'connect'){
                                          	require '../pages/connect.php';
                                          }
                                          elseif($id === 'profile'){
                                              require '../pages/profile.php';
                                          }
                                          elseif($id === 'deconnect'){
                                          	require '../pages/deconnect.php';
                                          }
                                      ?>



                                      -
                                      Edité par ProgramedIp 15 janvier 2018 à 10:08:56

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        15 janvier 2018 à 21:49:14

                                        Il faut le mettre dans toutes les pages où tu utilises des variables de session.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          17 janvier 2018 à 9:18:29

                                          Tu ne m'as pas compris, j'ai fait une page "index.php" et dans l'url je lui passe un id ($_GET['id']), si cette variable existe, sa valeur sera stockée dans une variable $id. Si la variable $id est égale à "home" il va inclure la page "home.php", si $id  = "connect", il inclut la page "connect.php".

                                          Voici pour être plus lisible :

                                          <?php
                                              session_start();
                                              if(isset($_GET['id'])){//Si la variable $_GET['id'] existe, sa valeur va être stockée dans $id
                                                  $id = $_GET['id'];
                                              }
                                              else{
                                                  $id = 'home';
                                              }
                                              if($id === 'home'){//Si $id est égale à "home", on inclut la page home.php
                                                  require '../pages/home.php';
                                              }
                                              elseif($id === 'register'){//Si $id est égale à "register", on inclut la page register.php
                                                  require '../pages/register.php';
                                              }
                                              elseif($id === 'connect'){//Si $id est égale à "connect", on inclut la page connect.php
                                                  require '../pages/connect.php';
                                              }
                                              elseif($id === 'profile'){//Si $id est égale à "profile", on inclut la page profile.php
                                                  require '../pages/profile.php';
                                              }
                                              elseif($id === 'deconnect'){//Si $id est égale à "deconnect", on inclut la page deconnect.php
                                                  require '../pages/deconnect.php';
                                              }
                                          ?>

                                          Donc après avoir inclut la page connect.php, ça sera comme ça :

                                          <?php
                                              session_start();
                                              $db_connect = new PDO('mysql:host=127.0.0.1;dbname=website', 'root', 'root', [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
                                              if(isset($_POST['submit'])){
                                                  if(!empty($_POST['user']) && !empty($_POST['pass'])){
                                                      $user = strip_tags($_POST['user']);
                                                      $pass = sha1($_POST['pass']);
                                                      $verif = $db_connect->prepare('SELECT * FROM accounts WHERE email = ? AND passwd = ?');
                                                      $verif->execute([$user, $pass]);
                                                      $exist = $verif->rowCount();
                                                      if($exist === 1){
                                                          $connect = $verif->fetch();
                                                          $_SESSION['id'] = $connect['id'];
                                                          $_SESSION['prenom'] = $connect['prenom'];
                                                          $_SESSION['pseudo'] = $connect['pseudo'];
                                                          $_SESSION['email'] = $connect['email'];
                                                          $_SESSION['pass'] = $connect['passwd'];
                                                          header('Location: index.php?id=profile&user=' .$connect['id']);
                                                          exit();
                                                      }
                                                      else{
                                                          $verif = $db_connect->prepare('SELECT * FROM accounts WHERE pseudo = ? AND passwd = ?');
                                                          $verif->execute([$user, $pass]);
                                                          $exist = $verif->rowCount();
                                                          if($exist === 1){
                                                              $connect = $verif->fetch();
                                                              $_SESSION['id'] = $connect['id'];
                                                              $_SESSION['prenom'] = $connect['prenom'];
                                                              $_SESSION['pseudo'] = $connect['pseudo'];
                                                              $_SESSION['email'] = $connect['email'];
                                                              $_SESSION['pass'] = $connect['passwd'];
                                                              header('Location: index.php?id=profile&user=' .$connect['id']);
                                                              exit();
                                                          }
                                                      }
                                                  }
                                              }
                                          ?>
                                          <!DOCTYPE html>
                                          <html>
                                              <head>
                                                  <title>Se connecter | PrograMed-IP.com</title>
                                                  <meta http-equiv="Content-Type" content="text/html"/>
                                                  <meta charset="utf-8"/>
                                                  <meta http-equiv="Content-Language" content="fr-FR"/>
                                                  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
                                                  <link rel="stylesheet" type="text/css" href="css/connect.css"/>
                                                  <link rel="stylesheet" type="text/css" href="css/icons.css"/>
                                                  <link rel="stylesheet" type="text/css" href="css/footer.css"/>
                                                  <link rel="stylesheet" type="text/css" href="css/header_nav.css"/>
                                              </head>
                                              <body>
                                                  <div id="desktop">
                                                      <?php include 'includes/header_nav.html'; ?>
                                                      <div id="form" align="center">
                                                          <h2 style="text-align:center;">Se connecter</h2>
                                                          <form method="POST">
                                                              <table>
                                                                  <tr>
                                                                      <td>
                                                                          <label for="user">E-mail ou pseudo : </label>
                                                                      </td>
                                                                      <td>
                                                                          <input type="text" name="user" id="user"/>
                                                                      </td>
                                                                  </tr>
                                                                  <tr>
                                                                      <td>
                                                                          <label for="pass">Mot de passe : </label>
                                                                      </td>
                                                                      <td>
                                                                          <input type="password" name="pass" id="pass"/>
                                                                      </td>
                                                                  </tr>
                                                              </table>
                                                              <button type="submit" name="submit" id="submit">Se connecter</button>
                                                              <div id="errors">
                                                                  <?php if(isset($err)){ echo $err; } ?>
                                                              </div>
                                                          </form>
                                                          <p style="font-size: 14px;">Pas encore de compte ? Créez-en un <a href="index.php?id=register">ici</a> !</p>
                                                      </div>
                                                      <?php include 'includes/footer.html'; ?>
                                                      <script type="text/javascript" src="js/fix_menu.js"></script>
                                                  </div>
                                              </body>
                                          </html>

                                          Et pour profile.php, c'est comme ça :

                                          <?php
                                              session_start();
                                              $db_connect = new PDO('mysql:host=localhost;dbname=website', 'root', 'root', [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
                                              if(isset($_GET['user']) AND $_GET['user'] > 0){
                                                  $user = intval($_GET['user']);
                                                  $request = $db_connect->prepare('SELECT * FROM accounts WHERE id = ?');
                                                  $request->execute([$user]);
                                                  $infos = $request->fetch();
                                          ?>
                                          <!DOCTYPE html>
                                          <html lang="fr-FR">
                                              <head>
                                                  <title>Profil | PrograMed-IP.com</title>
                                                  <meta charset="utf-8"/>
                                                  <meta http-equiv="Content-Type" content="text/html"/>
                                                  <meta http-equiv="Content-Language" content="fr-FR"/>
                                                  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
                                                  <link rel="stylesheet" type="text/css" href="css/header_nav.css"/>
                                                  <link rel="stylesheet" type="text/css" href="css/footer.css"/>
                                                  <link rel="stylesheet" type="text/css" href="css/profile.css"/>
                                                  <link rel="stylesheet" type="text/css" href="css/icons.css"/>
                                              </head>
                                              <body>
                                                  <div id="desktop">
                                                      <?php include 'includes/header_nav.html'; ?>
                                                      <div id="content">
                                                          <h2><?=$infos['pseudo'] ?></h2>
                                                          <div id="img">
                                                              <img src="photos/" style="height: 50px; width: 50px; border-radius: 50%;"/>
                                                          </div>
                                                          <div id="personnal_infos">
                                                              <p>Pr&eacute;nom : <?= $infos['prenom']; ?></p>
                                                              <p>Pseudo : <?= $infos['pseudo']; ?></p>
                                                              <p>E-mail : <?= $infos['email']; ?></p>
                                                              <?php if(isset($_SESSION['id']) && $id === $_SESSION['id']){ ?>
                                                              <a href="#">Editer le profil</a>
                                                              <a href="index.php?id=deconnect" id="deconnect">Se d&eacute;connecter</a>
                                                          </div>
                                                      </div>
                                                  </div>
                                              </body>
                                          </html>
                                          <?php
                                              }
                                          ?>

                                          -
                                          Edité par ProgramedIp 17 janvier 2018 à 9:20:24

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            17 janvier 2018 à 9:39:23

                                            Salut,

                                            déjà ceci est complètement idiot:

                                            un id ($_GET['id']), si cette variable existe, sa valeur sera stockée dans une variable $id

                                            Utilise directement $_GET, je ne sais pas où vous avez appris ce genre d'âneries, mais bravo...

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              17 janvier 2018 à 10:03:07

                                              C'est plus facile d'écrire $id que $_GET['id']. Autre chose, j'ai mis que si $_GET['id'] n'existe pas, la variable $id sera égale à "home", donc si dans l'url on écrit "index.php" ou "index.php?id=home", ça renvoierai la même page.

                                              Ca éviterait une erreur 404 (puisque ça ne marche pas pour moi, ici).

                                              -
                                              Edité par ProgramedIp 17 janvier 2018 à 10:07:02

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                17 janvier 2018 à 10:49:47

                                                pourquoi utilises-tu === ?? c'est utile surtout pour le typage des booléen.

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  17 janvier 2018 à 12:24:52

                                                  Pour dire par exemple :

                                                  SI $id est strictement égale à ...

                                                      ALORS ...

                                                  EDIT : Peut-tu m'aider s'il te plaît ici, j'ai un problème avec Apache.

                                                  -
                                                  Edité par ProgramedIp 17 janvier 2018 à 12:29:03

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    17 janvier 2018 à 12:38:38

                                                    Non strictement c'est ==, là tu testes la valeur ET le type.
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      17 janvier 2018 à 12:43:36

                                                      Dans le tutoriel que je suis (un tutoriel sur la poo), il utilises ça. Si tu veux le tuto, le voici.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      Problème de connexion PDO

                                                      × 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.
                                                      • Editeur
                                                      • Markdown