ca connecte sans entrer les identifiants

Eléphanteau du PHP | 43 Messages

03 juin 2012, 12:57

voila le probleme est tout simple, je clique sur connexion sans entrer la moindre information et ca me connecte :( ou est l'erreur?
<?php
session_start ();
                                                                                                
	// Redirige l'utilisateur s'il est déjà identifié
  if(isset($_SESSION['nom']))
  {
       header("/chat-1.0/index.php");
  }
  else
  {
       
       // Formulaire visible par défaut
       $masquer_formulaire = false;
       
       // Une fois le formulaire envoyé
       if(isset($_POST["BT_Envoyer"]))
       {
            
            // Vérification de la validité des champs
            if(!ereg("^[A-Za-z0-9_]{2,20}$", $_POST["TB_Nom_Utilisateur"]))
            {
                 $message = "Votre nom d'utilisateur doit comporter entre 2 et 20 caractères";
                 $message .= "L'utilisation de l'underscore est autorisée";
            }
            elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
            {
                 $message = "Votre mot de passe doit comporter au moins 6 caractères";
            }
            else
            {
                 
                 // Connexion à la base de données
                 include("/Includes/cbdd.php"); 
                 
                 //ANTI INJECTION
                 include ("/Includes/antiinjection.php");
                                                 
                 // Sélection de l'utilisateur concerné
                 $result = mysql_query("
                      SELECT ID_Utilisateur, Nom_Utilisateur, Mot_de_Passe, Compte_Active
                      FROM Comptes_Utilisateurs
                      WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
                 ");
                 
                 // Si une erreur survient
                 if(!$result)
                 {
                      $message = "Une erreur est survenue lors de la tentative de connexion";
                 }
                 else
                 {
                      
                      // Si aucun utilisateur n'a été trouvé
                      if(mysql_num_rows($result) == 0)
                      {
                           $message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
                      }
                      else
                      {
                           
                           // Récupération des données
                           $row = mysql_fetch_array($result);
                           
                           // Si le compte n'a pas été activé
                           if($row["Compte_Active"] == 0)
                           {
                                $message = "Votre compte utilisateur n'a pas été activé";
                           }
                           else
                           {
                                
                                // Vérification du mot de passe
                                if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
                                {
                                     $message = "Votre mot de passe est incorrect";
                                }
                                else
                                {
   /*variable session nom*/
                                     $_SESSION['nom'] = mysql_real_escape_string($_POST['TB_Nom_Utilisateur');
                                     
                                     
                                     
                                     // Fermeture de la connexion à la base de données
                                     mysql_close();
                                     
                                     // Redirection de l'utilisateur
                                     header("/chat-1.0/index.php");
                                     
                                }
                                
                           }
                           
                      }
                      
                 }
                 
                 // Fermeture de la connexion à la base de données
                 mysql_close();
                 
            }
            
       }
       
  }

?>
<html>
<head>
<title>accueil Forces Spéciales</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">

<?php include("/Includes/style.php"); ?>

</style>
</head>

<body>
<?php if(isset($message)) { ?>
<p><?php echo $message; ?></p>
<?php } if($masquer_formulaire != true) { ?>
<form method="post"action='/chat-1.0/index.php'> 
<body bgcolor="#000000" text="#FFFFFF" alink="#A0A0A0">
<!--logo-->
<header>
	<div id="logo">
    <div align="center">
   	  <p><img src="/Images/logo-FS.jpg" width="320" height="320" align="absmiddle"  alt="logo Forces Spéciales"/>
      </p>
    </div>
</header>
<!--box connexion-->
<section>
	<p>
	<div id="connex">
	<div align="center">
          Nom d'utilisateur : <input type="text" name="TB_Nom_Utilisateur" alt="Entrez_nom_utilisateur"/>
    </p>
	<p>
          Mot  de  passe : <input type="password" name="TB_Mot_de_Passe" alt="Entrez_mot_de_passe"/>
	</p>
    	<p>
          <input type="checkbox" name="CB_Connexion_Automatique" alt="choix_connexion_automatique" />
          Se connecter automatiquement à chaque visite
    	</p>
    	<p>
            <input type="submit" name="BT_Envoyer" value="Connexion" align="absmiddle" alt="bouton connexion"/>
    	</p>
</form>
<?php } ?>
<!--debut lien de creation de compte-->
<p>
  <a href="/formulaire1.php">Créer un compte utilisateur</a>
</p>
<img src="Images/under_construction_2.jpg" width="320" height="320" alt="under construction" /></div>
</section>
<footer><!--fin de lien création de compte-->
	<div id="pied">
    <div align="center">
			<a href="contact.php">Me contacter !</a></p>
            <p>Copyright Vincelufologue - Tous droits réservés</p>
</footer>
</body><!--fin de lien création de compte-->
</html>

Eléphant du PHP | 75 Messages

03 juin 2012, 13:14

D"après ton code tu ne vérifie pas si TB_Nom_Utilisateur
est remplis ou pas, (je pense)

Pour voir si un champs est remplis j'utilise.
if(isset($_POST[BT_Envoyer'])) {
( !$_POST['TB_Nom_Utilisateur']) {
echo '<br><div align="center"><span style="color:red"><strong>Les champs marqué d\'un * sont obligatoires.</strong></span></div>';
}

Eléphanteau du PHP | 43 Messages

03 juin 2012, 13:18

// Vérification de la validité des champs
            if(!ereg("^[A-Za-z0-9_]{2,20}$", $_POST["TB_Nom_Utilisateur"]))
            {
                 $message = "Votre nom d'utilisateur doit comporter entre 2 et 20 caractères";
                 $message .= "L'utilisation de l'underscore est autorisée";
            }
            elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
            {
                 $message = "Votre mot de passe doit comporter au moins 6 caractères";
normalement si

Eléphant du PHP | 75 Messages

03 juin 2012, 13:27

Je n'utilise pas de vérification des champs dont la je ne peux pas te dire ;x

Eléphanteau du PHP | 43 Messages

03 juin 2012, 14:41

lol

Eléphanteau du PHP | 32 Messages

03 juin 2012, 16:40

Salut,

As tu mit un
<?php session_start ();
Sur la première ligne de l'index ?

Autrement, dès qu'un visiteur arrive sur le site, automatiquement une session lui est associé, a toi ensuite de lui associer cette session que le serveur lui a ouverte avec le login et le mot de passe qu'il a defini sur ta base de donnée.
if($_POST['submit']){
		if ($_POST['login'] AND $_POST['password']) 
		     {
                      tu vérifies que ça colle avec la base de données ...
                     $_SESSION['login'] = mysql_real_escape_string($_POST['login']);
		     $_SESSION['pass'] = mysql_real_escape_string(md5($_POST['password']));

.....

ViPHP
xTG
ViPHP | 7331 Messages

03 juin 2012, 19:03

Ton code a l'air correct.
Fais un var_dump($_SESSION); pour voir ce qu'elle a dans le ventre.

ViPHP
AB
ViPHP | 5818 Messages

03 juin 2012, 19:14

voila le probleme est tout simple, je clique sur connexion sans entrer la moindre information et ca me connecte :( ou est l'erreur?
Systématiquement ou dans certaines circonstances ?

Eléphanteau du PHP | 43 Messages

03 juin 2012, 20:27

Salut,

As tu mit un
<?php session_start ();
Sur la première ligne de l'index ?

Autrement, dès qu'un visiteur arrive sur le site, automatiquement une session lui est associé, a toi ensuite de lui associer cette session que le serveur lui a ouverte avec le login et le mot de passe qu'il a defini sur ta base de donnée.
if($_POST['submit']){
		if ($_POST['login'] AND $_POST['password']) 
		     {
                      tu vérifies que ça colle avec la base de données ...
                     $_SESSION['login'] = mysql_real_escape_string($_POST['login']);
		     $_SESSION['pass'] = mysql_real_escape_string(md5($_POST['password']));

.....
oui mais après je me suis peut etre mal pris, j'ai mis mon code dans le premier post si jamais
voila le probleme est tout simple, je clique sur connexion sans entrer la moindre information et ca me connecte :( ou est l'erreur?
Systématiquement ou dans certaines circonstances ?
systématiquement il me semble

Eléphanteau du PHP | 32 Messages

03 juin 2012, 20:46

Mais qu'est ce quil ne fonctionne pas ?

Eléphanteau du PHP | 43 Messages

03 juin 2012, 20:50

Mais qu'est ce quil ne fonctionne pas ?
essaye de te connecter sans entrer d'identifiant ou de mot de passe ca envoie sur le chat alors que ca ne devrai pas

ViPHP
xTG
ViPHP | 7331 Messages

03 juin 2012, 20:52

var_dump($_SESSION); :roll:

ViPHP
AB
ViPHP | 5818 Messages

03 juin 2012, 21:09

Faudra modifier d'autres choses dans le code car je vois que tu utilises "ereg" qui est déprécié.

Sinon as-tu écris le "var_dump($_SESSION);" préconisé par xTG pour vérifier le contenu de ta session ? Apparemment d'après ce que tu décris $_SESSION['nom'] serait toujours définie...

Il y a une erreur dans la définition de ta session (manque le deuxième "]" dans $_POST)
$_SESSION['nom'] = mysql_real_escape_string($_POST['TB_Nom_Utilisateur')
On se demande aussi pourquoi tu utilises "mysql_real_escape_string" pour définir cette variable alors que tu ferais mieux d'utiliser cette fonction pour protéger les variables dans tes requêtes.
Et c'est par ailleurs moyennement recommandé d'interdire les caractères spéciaux dans les mots de passe puisque tu réduis les possibilités et donc tu facilite le piratage.

Si besoin tu as un tuto sur la connexion et l'inscription dans un espace membre ici

Eléphanteau du PHP | 43 Messages

03 juin 2012, 22:16

var_dump($_SESSION); :roll:
je le place ou? une nouvelle page?
Faudra modifier d'autres choses dans le code car je vois que tu utilises "ereg" qui est déprécié.
les eregs je les avais modifié mais a parement je n'avait pas sauvegardé quand j'ai mis mes preg_match
Sinon as-tu écris le "var_dump($_SESSION);" préconisé par xTG pour vérifier le contenu de ta session ? Apparemment d'après ce que tu décris $_SESSION['nom'] serait toujours définie...
j'était en train de chercher comment utiliser ca lol par contre quand je déconnecte de la page chat, je retourne sur l'index après la déconnexion (code en dessous) mais le problème reste le même alors que le S_SESSION devrai être "purgé" de toute info.
<?php
session_start ();

// Redirige l'utilisateur s'il n'est pas identifié
if(isset($_SESSION['nom']))
{
     header("Location: index.html");
}
else
{
     
     $_SESSION = array(); // on réécrit le tableau
	session_destroy(); // on détruit le tableau réécrit
     
     // Redirection de l'utilisateur
     header("Location: index.html");
     
}

?>
Il y a une erreur dans la définition de ta session (manque le deuxième "]" dans $_POST)
$_SESSION['nom'] = mysql_real_escape_string($_POST['TB_Nom_Utilisateur')
Réglé lol
On se demande aussi pourquoi tu utilises "mysql_real_escape_string" pour définir cette variable alors que tu ferais mieux d'utiliser cette fonction pour protéger les variables dans tes requêtes.
Et c'est par ailleurs moyennement recommandé d'interdire les caractères spéciaux dans les mots de passe puisque tu réduis les possibilités et donc tu facilite le piratage.
normalement mes requetes post et get (meme les cookies alors que j'en ai pas encore mis lol) sont protégées par l'include antiinjection (code en dessous)
if(isset($_GET) OR isset($_POST) OR isset($_COOKIE)) 
{
   $_GET = mysql_real_escape_string(htmlentities($_GET));
   $_POST = mysql_real_escape_string(htmlentities($_POST));
   $_COOKIE = mysql_real_escape_string(htmlentities($_COOKIE));
}
J'ai lu je ne sais combien de tuto aujourd'hui alors un de plus passera facilement lol souhaitez moi bonne lecture ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 juin 2012, 23:39

<?php
session_start ();
var_dump($_SESSION);
if(isset($_GET) OR isset($_POST) OR isset($_COOKIE))
{
   $_GET = mysql_real_escape_string(htmlentities($_GET));
   $_POST = mysql_real_escape_string(htmlentities($_POST));
   $_COOKIE = mysql_real_escape_string(htmlentities($_COOKIE));
}
tu peux virer ça car :
- ça doit doit te donner 3 erreurs vue quemysql_real_escape_string n'attend pas des tableaux
- les super globales ($_GET, $_POST etc) sont toujours définies même vide, donc ton test sera toujours vrai.

@+
Il en faut peu pour être heureux ......