Php / formulaire

erina -  
 Alain42 -
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

mikaelver Messages postés 2 Statut Membre
 
Tu pourrais, par exemple, y ajouter des cookies et ajouter des utilisateurs via une base sql
0
erina
 
çà 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
erina
 
personne ne peut me dire si je peux améliorer le script au niveau de la sécurité ou de la syntaxe svp ?
0
erina
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain42
 
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
edevouge
 
Bonjour,
En effet tu n'utilise pas la fonction htmlentities() ce qui est risqué!
0
Alain42
 
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