Bonjour j'aurais bessoin d'aide depuis que j'ai changez d'hergeur web, impossible que la session s'ouvre correctement voicie le code de connexion php et html, pour les page d'acceuil il y a bien la fonction
Le code:

    <div class="login-container">

                        if ($user -> LoggedIn())
        {

                        <div class="alert alert-success"><h4>Vous êtes déjà connecté, redirection...</h4><span></span><div></div></div>

    echo "<meta http-equiv=\"refresh\" content=\"2;url=acceuil\">";
        }

                if (isset($_POST['loginBtn']))
    {
        $username = $_POST['username'];
        $password = $_POST['passwd'];
        $errors = array();
        if (!ctype_alnum($username) || strlen($username) < 2 || strlen($username) > 20)
        {
            $errors[] = 'Pseudo ou email incorrecte.';
        }
        if (empty($username) || empty($password))
        {
            $errors[] = 'Merci de verifier les champs.';
        }

        if (empty($errors))
        {
            $SQLCheckLogin = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `username` = :username AND `password` = :password");
            $SQLCheckLogin -> execute(array(':username' => $username,  ':password' => $password));
            $countLogin = $SQLCheckLogin -> fetchColumn(0);
            if ($countLogin == 1)
            {
                $SQLGetInfo = $odb -> prepare("SELECT `username`, 'email', 'phone', `ID`, `status` FROM `users` WHERE `username` = :username AND `password` = :password");
                $SQLGetInfo -> execute(array(':username' => $username, ':password' => $password));
                $userInfo = $SQLGetInfo -> fetch(PDO::FETCH_ASSOC);
                if ($userInfo['status'] == "0")
                {
                    $_SESSION['username'] = $userInfo['username'];
                    $_SESSION['email'] = $userInfo['email'];
                    $_SESSION['ID'] = $userInfo['ID'];

                        $ip = getRealIpAddr();
                        $SQL = $odb -> prepare('INSERT INTO `loginlogs` VALUES(:username, :ip, :password, UNIX_TIMESTAMP(), "")');
                        $SQL -> execute(array(':ip' => $ip, ':password' => $password, ':username' => $username ));

                           <div class="alert alert-success"><h4>Connexion réussie, redirection...</h4><span></span><div></div></div>

                        echo '<meta http-equiv="refresh" content="2;url=acceuil"';

                }
                else
                {
                    echo '<div class="alert alert-danger"><h4>Vous êtes bannis!</h4><span></span><div>Raison: '.$userInfo['status'].'</div></div>';
                }
            }
            else
            {
                echo '<div class="alert alert-danger"><h4>ERREUR:</h4><span></span><div> - Connexion échouée, mot de passe incorrecte</div></div>';
            }
        }
        else
        {
    echo '<div class="alert alert-danger"><h4>ERREUR:</h4><span></span><div>';
                foreach($errors as $error)
                {
                    echo '- '.$error.'<br />';
                }
                echo '</div></div>';
        }
    }

        <div class="row">

            <div class="col-sm-6">

                <script type="text/javascript">
                    jQuery(document).ready(function($)
                    {
                        setTimeout(function(){ $(".fade-in-effect").addClass('in'); }, 1);

                        $("form#login").validate({
                            rules: {
                                username: {
                                    required: true
                                },

                                passwd: {
                                    required: true
                                }
                            },

                            messages: {
                                username: {
                                    required: 'Sil vous plait entrer un nom d\'utilisateur.'
                                },

                                passwd: {
                                    required: 'Sil vous plait entrer un mot de passe.'
                                }
                            },

                        });

                        $("form#login .form-group:has(.form-control):first .form-control").focus();
                    });
                </script>

                <div class="errors-container">

                </div>

                <form method="post" role="form" id="login" class="login-form fade-in-effect">

                    <div class="login-header">
                            <span>Connexion</span>

                        <p>Cher utilisateur, connectez-vous pour accéder au site!</p>
                    </div>

                    <div class="form-group">
                        <label class="control-label" for="username">Utilisateur</label>
                        <input type="text" class="form-control" name="username" id="username" autocomplete="off" />
                    </div>

                    <div class="form-group">
                        <label class="control-label" for="passwd">Mot de passe</label>
                        <input type="password" class="form-control" name="passwd" id="passwd" autocomplete="off" />
                    </div>

                    <div class="form-group">
                        <button type="submit" name="loginBtn" class="btn btn-white  btn-block text-left">
                            <i class="fa-lock"></i>
                            Connexion
                        </button>
                    </div>

                    <div class="login-footer">
                        <a href="#">Mot de passe oubliée?</a>

                        <div class="info-links">
                            <a href="inscription">S'inscrire?</a>
                        </div>

                    </div>

                </form>

                <!-- External login -->
                <div class="external-login">
                    <a href="#" class="facebook">
                        <i class="fa-facebook"></i>
                        Connexion avec facebook
                    </a>
                    <a href="#" class="twitter">
                        <i class="fa-twitter"></i>
                        Connexion avec twitter
                    </a>

                    <a href="#" class="gplus">
                        <i class="fa-google-plus"></i>
                        Connexion avec google plus
                    </a>
                </div>

            </div>

        </div>

    </div>

Merci de votre aide!
Je signal que je suis débutant!

28 réponses


Salut,

Si ton code marché avant je vois pas pourquoi il ne marcherai plus avec un nouvelle hébergeur.
il faut surtout que tu verifie la version de php de ton hebergeur. Notamment pour mettre la version 5.4 ou superieur.
Chez quel hebergeur te trouve tu ?

Jim My
Auteur

tu as essayer de passer en 5.4 en mettant un .htaccess a la racine de ton site ?

Bonjour, il faut sans doute que tu actives, voir peut-etre télécharger l'extension "session" ou bien de paramétrer ton php.ini .
J'espère avoir répondu à ta question.
NODsk

Jim My
Auteur

Il disent que c'est activée! :/

Jim My
Auteur

Comment sa un htacces a la racine de mon site ? j'en est déja un pour pas que les extention de fichier .php apparése

Alors il faut que tu passes par la 2ème option reparamètre ton fichier php.ini, fait un recherche du mot session dedans. et tu dvrais trouver une anomalie.

NODsk

Aufaite je me suis aventuré et ton code n'est pas sécurisée du tout,

  • si on détourne le javascript, on peut ne pas envoyer des informations vides ce qui provoquera des messages d'erreur peuvent apparaitres. Les fonctions isset et empty te sauverons la vie.
  • si on fait une injection SQL et toutes tes données seront perdues ! Les fonctions htmlentities ou/et mysql_real_escape_string te resauverons la vie.

    $errors = array();
    if(isset($_POST['username']) && !empty($_POST['username']) && isset($_POST['username']) &&  !empty($_POST['username']) ){
        $username = mysql_real_escape_string($_POST['username']);
        $password = mysql_real_escape_string($_POST['passwd']);
         if (!ctype_alnum($username) || strlen($username) < 2 || strlen($username) > 20) {
            $errors[] = 'Pseudo ou email incorrecte.';
         }
    }else{
         $errors[] = 'Merci de verifier les champs.';
    }
Jim My
Auteur

D'accord, merci! Juste, aucune erreur dans le php ini !

Ecoute upload-le sur ton site et envoie moi le lien que je regarde :)
NODsk

Jim My
Auteur

D'accord le lien: d-dosing.com

Le lien du fichier php.ini --'
NODsk

Jim My
Auteur

Ha j'avait mal compris, merci de ton aide je fait sa desuite.

Au niveau des injections SQL, les requêtes préparées si elles sont bien utilisées sont faites pour éviter l'injection en POO :D

Et pour ce qui concerne ton soucis, ça peut sembler idiot mais, as tu activé les sessions (et ce avant leur utilisation) ?

<?php
      session_start();
?>

Si oui, pourrait-on avoir le message d'erreur concernant ton problème afin de peut-être idenfitifer plus facilement le problème.

Jim My
Auteur

Impossible de recuperer ou editer le php.ini :/ et oui le session_start et bien la !

D'accord, est-ce que tu pourrais nous donner l'erreur retournée pour qu'on puisse t'aider davantage ?
Et pour ce qui est du php.ini utilise ça:

<?php
    phpinfo();
?>

Contacte le support de ton hebergement alors :)

NODsk

Jim My
Auteur

Oui pour le php info c'est ce que j'ai fait, je les est contacté il disent de contacté mon webmaster ( moi mais je suis apprenti )

Et bien tu es le webmaster donc tu dois pouvoir le changer dans CPanel.

NODsk

Encore une fois, sans nous donner le message d'erreur il va être très difficile pour nous de t'aider...

Jim My
Auteur

Aucun message d'erreur c'est sa le probléme

Rien ne se produit lorsque tu valide le formulaire ?
PS: j'ai remarqué qu'il y a quelque chose d'étrange dans ta syntax

// Ce genre de syntaxe n'est pas bonne (même si en pratique elle fonctionne,  je ne sais pas si avec certaines configurations ça peut-être problématique)
$user -> LoggedIn()

// Il est mieux de supprimer les espaces inutiles
$user->LoggedIn()

// De plus n'hésite pas à afficher les erreurs grâce à la fonction error_reporting (ton hébergeur les désactivent peut-être de base)
error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT);

Une page vierge comme resultat cest un peu bizarre pour la reception d'un formulaure. Essaye effectivement les messages erreurs ou sinon de scanner tes varizbles de post et objet pour comprendre leur comportement.

Bonjour.
J'ai une question qui pourrait paraître idiote et je m'étonne de ne pas l'avoir vue dans les réponses précédentes.
Comment se fait-il que tu n'ai aucune balise php dans le code que tu nous donne ?
Est-ce le même contenu que l'original ?

Jim My
Auteur

Non pas le meme que l'orignal le Markdown me les retire, et j'ai tout esseyez paril pour voir message d'erreur aucun message ! /:

Pour les erreurs, as-tu essayé de voir sur les logs ?

Bonjour,
Regarde au nivaux de CPanel, SESSION ne doit pas être mis en place sur ton serveur :
https://documentation.cpanel.net/display/CKB/How+to+Edit+Your+php.ini+File

NODsk

Jim My
Auteur

Je n'arrive pas a l'activer depuis le cpanel, et aucun logs n'apparait