Php / formulaire

Bonjour, j'aimerais votre avis sur un code que j'ai fait qui consiste à accéder par un formulaire à une page protégée , je voudrais savoir si ya des choses qu'on peut améliorer niveau sécurité et propreté :

<form method="post" action="gloup.php">
<input type="text" name="username" value="Erina" > <br />
<input type="password" name="pass" value="********"> <br /> <br />
<input type="submit" value="valid">
</form>

<?php

if(isset($_POST['username']) && isset($_POST['pass']))
{
$username = $_POST['username'];
$pass = $_POST['pass'];

if($username == 'erina' && $pass = 'couki')
{
header('Location:gloup.php');
die;
}
else
{
header('Location:vok.php');
die;
}
}
?>

Donc ici dans mon formulaire , si la valeur du pseudo vaut erina et celle du mot de passe vaut couki j'accède à la page gloup.php sinon c'est la page vok.php qui s'affiche .

merci de votre aide .

7 réponses

  1. Tu pourrais, par exemple, y ajouter des cookies et ajouter des utilisateurs via une base sql
    0
    1. çà ne répond pas trop à ma question , j'aimerais savoir si ce code a des problèmes de sécurité et si au niveau de la syntaxe il est comment dire " propre" , merci
      0
      1. personne ne peut me dire si je peux améliorer le script au niveau de la sécurité ou de la syntaxe svp ?
        0
        1. personne peut m'aider pour cette petite question , ici il s'agit juste d'accéder à une page , dois je par exemple utilise htmlspecialchars , le code est il propre...?

          merci
          0
          1. Bonjour,

            Déja quand tu mets:
            <input type="text" name="username" value="Erina" >
            tu vas donner la moité du code, puisque tu affiche l'username, avec un emajuscule d'ailleurs qui ne serra pas correcte puisque tu fais plus loin
            if($username == 'erina'

            Il est bon aussi de faire un petit coup de htmlentities(...) pour éviter les codes malicieux
            un contrôle aussi sur la longueur

            Regardes aussi sur Google comment mettre en plac le mécanisme des sessions PHP (avec cookies)

            Inspires toi de ça:
            <?php
            // Les identifiants sont transmis ?
                    if(!empty($_POST['username']) && !empty($_POST['pass'])) {
            			// verif integrite des saisies, pas de balises html, longueur maxi 15 caracteres lettres ou chiffres
            			$RE = "^[a-zA-Z0-9][a-zA-Z0-9_]{1,15}$";// caract acceptes pour login et mdp et  longueur chaine 15 maxi
            			if (ereg($RE,$_POST['username']) && ereg($RE,$_POST['password'])){
            				$username = htmlentities( $_POST['login']) ;
            				$pass = htmlentities($_POST['password']) ;
            				// si les deux saisies sont ok on continue l'auth
            				 if($username == 'erina' && $pass = 'couki'){
            					header('Location:ta_page_destination.php');
            					
            				}else{
            					header('Location:ta_page_saisie_login_pass.php');
            				
            				}
            			}
            			
            		}else {
                     // si les identifiants n'ont pas ete saisis
            		 echo  'Veuillez entrer vos identifiants!';
                 }
            
            ?>
            
            et en haut de chaque page à protéger tu mets:
            
            <code><?php
            session_start() ;
            if(!isset($_SESSION['page']) || $_SESSION['page'] == ""){
            // si deconnecté ou accès direct a la page sans être loggué, on renvoie à la page de saisie des login et pass
            // attention le header (  ) ne doit êtr e précédé d'aucun caractère HTML
            	header("Location: ta_page_formulaire_de_saisie_login_pass.html") ;
            }
            else
            {
            ?>
            <html>
            ta page html
            </html>
            <?php
            }
            ?>

            </code>
            0
            1. Bonjour,
              En effet tu n'utilise pas la fonction htmlentities() ce qui est risqué!
              0
              1. Salut,

                c'est encore moi, je viens de me rendre compte que j'ai oublié un bout de code, alors la première partie est:

                <?php
                // Les identifiants sont transmis ?
                        if(!empty($_POST['username']) && !empty($_POST['pass'])) {
                			// verif integrite des saisies, pas de balises html, longueur maxi 15 caracteres lettres ou chiffres
                       			$RE = "^[a-zA-Z0-9][a-zA-Z0-9_]{1,15}$";// caract acceptes pour login et mdp et  longueur chaine 15 maxi
                			if (ereg($RE,$_POST['username']) && ereg($RE,$_POST['password'])){
                				$username = htmlentities( $_POST['login']) ;
                				$pass = htmlentities($_POST['password']) ;
                				// si les deux saisies sont ok on continue l'auth
                				 if($username == 'erina' && $pass == 'couki'){
                                                            session_start() ;//début de la session
                				         $_SESSION['page'] = $login ;//enregistrement d'une variable de session (page), ici le login de l'utilisateur:
                					header('Location:ta_page_destination.php');
                					
                				}else{
                					header('Location:ta_page_saisie_login_pass.php');
                				
                				}
                			}
                			
                		}else {
                         // si les identifiants n'ont pas ete saisis
                		 echo  'Veuillez entrer vos identifiants!';
                     }
                
                ?>
                


                Sinon une autre solution pour protéger toutes les pages qui sont dans un sous répertoire est de mettre un fichier
                .htaccess et un fichier .htpasswd dans ce répertoire

                Dès que le serveur trouve un fichier .htaccess dans le répertoire qui contient la page appelée, il ouvre une fenêtre pour saisir login et mot de pass
                et il les vérifie par rapport à ceux que tu as rentrés (codés) dans .htpasswd

                Vas voir sur Google comment faire
                0