ca connecte sans entrer les identifiants

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ca connecte sans entrer les identifiants

Re: ca connecte sans entrer les identifiants

par vincelufologue » 05 juin 2012, 22:13

J'ai voulu ne pas recopier le tuto que vous m'avez donner et adapter la partie "connexion" a ma base de donnée mais manque de pot quand je clique sur "envoyer" ca recharge la page alors est ce que je dois vraiment tout refaire ou est ce que j'ai fais une gaffe quelque part?
<?php
// Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
header('Content-type: text/html; charset=UTF-8');

/* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
function Verif_magicquotes ($chaine) 
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);

return $chaine;
} 

// Initialisation du message de réponse
$message = null;


// Si le formulaire est envoyé
if (isset($_POST['Nom_Utilisateur'])) 
{

    /* Récupération des variables issues du formulaire
    Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
    En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
    $pseudo = (isset($_POST['Nom_Utilisateur']) && trim($_POST['Nom_Utilisateur']) != '')? Verif_magicquotes($_POST['Nom_Utilisateur']) : null;
    $pass = (isset($_POST['Mot_de_Passe']) && trim($_POST['Mot_de_Passe']) != '')? Verif_magicquotes($_POST['Mot_de_Passe']) : null;
    

    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$pass)) 
    {
         // Connexion au serveur 
		include("/Includes/cbdd2.php");

         // Connexion à la base
        mysql_select_db($database, $connection);
    
         // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
        mysql_query("SET NAMES 'utf8'");
    
         // Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string
        $nom = mysql_real_escape_string($pseudo);
		$password = mysql_real_escape_string(md5($pass));
    
    
         /* Requête pour récupérer les enregistrements répondant à la clause : 
         champ du pseudo et champ du mdp de la table = pseudo et mdp postés dans le formulaire*/
        $requete = "SELECT * FROM Comptes_Utilisateurs WHERE Nom_Utilisateur = '".$nom."' AND Mot_de_Passe = '".$password."'";  
    
         // Exécution de la requête
         $req_exec = mysql_query($requete) or die(mysql_error());
    
         // Création du tableau associatif du résultat
         $resultat = mysql_fetch_assoc($req_exec); 

         // Les valeurs (si elles existent) sont retournées dans le tableau $resultat; 
         if (isset($resultat['Nom_Utilisateur'],$resultat['Mot_de_Passe']))  
               {
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de visiter les pages protégées.  */
                 session_start();
                 $_SESSION['login'] = $pseudo;
            
                    // Redirection de l'utilisateur
                header("/chat-1.0/index.php")
                }
                else
                {   // Le pseudo ou le mot de passe sont incorrect
                $message = 'Le pseudo ou le mot de passe sont incorrect';
                } 

    }
    else 
    {  //au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli
    $message = 'Les champs Pseudo et Mot de passe doivent être remplis.';
    }
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Acceuil Forces Speciales</title>
<style type="text/css">
<?php include("/Includes/style.php"); ?>
</style>
</head>
<body bgcolor="#000000" text="#FFFFFF" alink="#A0A0A0">
<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>
    </div>
</header>
<div id = "connex">
<div align="center">
    <form action = "#" method="post">
    <h1>Connexion</h1>
    <p><label for = "Nom_Utilisateur">Pseudo : </label><input type="text" name="Nom_Utilisateur" id="Nom_Utilisateur" alt="zone nom utilisateur"/></p>
    <p><label for = "Mot_de_Passe">Mot de passe : </label><input type="password" name="Mot_de_Passe" id="Mot_de_Passe" alt="zone mot de passe" /></p>
    <p><input type="submit" value="Envoyer" id = "valider" alt="bouton envoyer"/></p>
    </form>
    <p id = "message"><?php if(isset($message)) echo $message ?></p>
</div>
</div>
<footer><!--fin de lien création de compte-->
	<div id="pied">
    <div align="center">
			<a href="file:///C|/wamp/www/Site3.0/contact.php">Me contacter !</a></p>
            <p>Copyright Vincelufologue - Tous droits réservés</p>
    </div>
    </div>
</footer>
</body>
</html>
et voila le script de connection a la base de donné (include cbdd2")
$hostname = "localhost";
         $database = "nombase";
         $username = "nom";
         $password = "motdepasse";
         $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());
si le probleme venait de la connexion (par exemple manque du port) je devrai avoir un message non?

(par contre là c'est en UTF-8 c'est pas mieux de mettre en iso-8859-1 histoire de pas echapper tous les lettres a accents?)

Re: ca connecte sans entrer les identifiants

par xTG » 04 juin 2012, 12:47

Pour le var_dump() il s'affiche forcement, mais il est peut être caché dans le DOM de la page.
Donc regardes le code source généré par le navigateur. ;)

Re: ca connecte sans entrer les identifiants

par vincelufologue » 04 juin 2012, 11:07

<?php
session_start ();
var_dump($_SESSION);

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.

@+
Ce var_dump j'ai beau le placer en début ou autre par il me retourne aucunnes indication même pas un nul :(

Donc je ne peux pas utiliser $_GET ou $_POST pour un formulaire de connections comme je l'ai fait?

L'avantage de celui-ci c'est que le code est fonctionnel et donc prêt pour un test rapide, ce qui te donne déjà les bonnes bases pour faire ensuite des modifs.
J'ai commencé à le regarder et je vais sûrement refaire ou adapter mon index en fonction, je vous tiens au courant :)

Re: ca connecte sans entrer les identifiants

par AB » 04 juin 2012, 05:46

J'ai lu je ne sais combien de tuto aujourd'hui alors un de plus passera facilement lol souhaitez moi bonne lecture ;)
L'avantage de celui-ci c'est que le code est fonctionnel et donc prêt pour un test rapide, ce qui te donne déjà les bonnes bases pour faire ensuite des modifs.

Re: ca connecte sans entrer les identifiants

par moogli » 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.

@+

Re: ca connecte sans entrer les identifiants

par vincelufologue » 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 ;)

Re: ca connecte sans entrer les identifiants

par AB » 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

Re: ca connecte sans entrer les identifiants

par xTG » 03 juin 2012, 20:52

var_dump($_SESSION); :roll:

Re: ca connecte sans entrer les identifiants

par vincelufologue » 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

Re: ca connecte sans entrer les identifiants

par Akirami » 03 juin 2012, 20:46

Mais qu'est ce quil ne fonctionne pas ?

Re: ca connecte sans entrer les identifiants

par vincelufologue » 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

Re: ca connecte sans entrer les identifiants

par AB » 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 ?

Re: ca connecte sans entrer les identifiants

par xTG » 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.

Re: ca connecte sans entrer les identifiants

par Akirami » 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']));

.....

Re: ca connecte sans entrer les identifiants

par vincelufologue » 03 juin 2012, 14:41

lol