Page 1 sur 1

Ré-écrire le code de ma page de login.php

Posté : 19 juil. 2016, 03:44
par dupontpauline83
Bonjour à tous,

Actuellement j'ai un site intranet, qui est stocké sur un serveur wamp, avec PHP version 5.4.3 . Je souhaiterais migrer sur PHP7.0, mais le code php de mon site est très très obselete. je recherche quelqu'un qui pourrait me ré-écrire ce morceau de code de ma page de login.php :
<?php

if(isset($_POST['submit']))
{
    $pseudo = htmlspecialchars(trim($_POST['pseudo']));
    $password = htmlspecialchars(trim($_POST['password']));

    if(empty($pseudo))
    {
        echo "<font color='red'>Veuillez saisir votre Nom d'utilisateur!<br/></font>";
    }
   
    else if(empty($password))
    {
        echo "<font color='red'>Veuillez saisir votre mot de passe!</font>";
    }
    else{

    mysql_connect('localhost','root','');
    mysql_select_db('matable');

    $password = md5($password);

    $login = mysql_query("SELECT * FROM usersite WHERE username='$pseudo'AND password='$password'");

    $rows = mysql_num_rows($login);
   
    if($rows == 1)
    {

        $_SESSION['pseudo'] = $pseudo;

        header('location:index.php');    

    }else echo "<font color='red'>Utilisateur, mot de passe!</font>";

    }
}

?>

Merci d'avance. :D

Re: Ré-écrire le code de ma page de login.php

Posté : 19 juil. 2016, 09:53
par Ryle
Bonjour,

Effectivement, l'extension et les fonctions mysql sont aujourd'hui dépréciées (elles n'évoluent plus et ne sont plus maintenues) et il est recommandé d'utiliser mysqli ou PDO pour les connexions à la base de données. Mais cela concerne l'ensemble de ton site et pas uniquement l'authentification.
Un petit tuto pour passer de MySQL à MySQLi : faq-tutoriels/passer-mysql-mysqli-pdo-t276282.html

Au delà de obsolescence de ces méthodes, il faudrait aussi je pense apporter une attention particulière à la sécurité. C'est de l'intranet donc pas forcément aussi grave que si c'était en ligne, mais néanmoins, le fait d'avoir des mots de passe en clair dans la base n'est pas une bonne pratique, et le fait de ne pas contrôler/protéger les variables que tu reçois contre les injections avant de les utiliser dans une requête SQL peut également être dangereux.

Par exemple, si l'utilisateur saisi comme mot de passe la valeur "' OR 1=1 LIMIT '0','1", la requête que tu vas exécuter sera la suivante :
SELECT * FROM usersite WHERE username=''AND password='' OR 1=1 LIMIT '0','1'
qui va regarder s'il existe un utilisateur sans nom et sans mot de passe OU si 1 est bien égal à 1... et le voilà connecté avec le premier utilisateur de la liste :)