une authentification un peu trop présente

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 : une authentification un peu trop présente

par Volkow » 13 déc. 2007, 18:55

D'accord merci. ^^
Perso je le met toujours en haut, c'est comme ça que j'ai appris. :/

Par contre j'arrive toujours pas à voir d'où vient son problème...

par Ryle » 13 déc. 2007, 11:37

Le "session_start();" ne doit-il pas être toujours tout en haut de la page?
Nope, le session_start() doit être avant l'utilisation de $_SESSION et avant tout envoi de données au navigateur, mais ça peut très bien être l'avant dernière ligne de ton code :)
C'est plus par commodité et pour être sur de ne pas l'oublier qu'on a tendance à le mettre au début, mais si on veut être rigoureux il faudrait effectivement faire comme lui et ne le mettre que lorsque l'on en a réellement besoin :)

par Volkow » 13 déc. 2007, 00:30

Bonjour,

Voici le code de la page login:

...
  else {
    session_start();

 $_SESSION['login'] = $login;
    
     include('admin.php');   
     exit;
    // ici vous pouvez afficher un lien pour renvoyer
    // vers la page d'accueil de votre espace membres  
  }    
}
else {
...
Le "session_start();" ne doit-il pas être toujours tout en haut de la page?

par thecaco » 12 déc. 2007, 17:44

le script demande de se réauthentifier à chaque fois qu'il doit se recharger.
Où est-ce que tu vois ça dans le script? Est-ce bien utile de se réauthentifier à chaque chargement? C'est une mesure de sécurité?

Sinon, pour mon problème initial, lorsque je le testais en local ça ne fonctionnait pas, et là je l'ai mis sur le serveur, j'ai refait les mêmes manipulations, et ça fonctionne!
Il doit y avoir quelque chose de différent entre le local et le serveur que je n'ai pas compris... :roll:

par Ryle » 11 déc. 2007, 15:26

Je pense qu'il faisait allusion au cookie créé par la session :)

Il est effectivement étonnant qu'après le
session_start(); 
$_SESSION['login'] = $login; 
de la page de login, le test if(!isset($_SESSION['login'])) soit vrai

Ton navigateur accepte-t-il les cookies ? la session en dépose un sur ta machine pour savoir à quelles données de session elle doit t'associer. Si le cookie n'a pas pu être déposé, le lien n'est pas établi et il ne peut retrouver les données te concernant... (ou alors faut passer par le sessid :))

par Berzemus » 11 déc. 2007, 14:46

ben je vois pas de cookie la dedans.. et le script demande de se réauthentifier à chaque fois qu'il doit se recharger.. c'est bien ce qu'il fait.. tu devrait vérifier l'existance d'une session dans les conditions, ou enregistrer un cookie.

par thecaco » 11 déc. 2007, 14:29

Bonjour,

Voici le code de la page login:

<?
// connexion à la BDD
include("connexion.php");
 $select = mysql_select_db($base);
 //Vérification des variables
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['password'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select password from admin where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

  $data = mysql_fetch_assoc($req);
  if($data['password'] != md5($password)) {
    echo '<font color="#FF33FF">Mauvais login / password. Merci de recommencer</font>';
    include('login.html'); // On inclut le formulaire d'identification
    exit;
  }
  else {
    session_start();

 $_SESSION['login'] = $login;
    
     include('admin.php');   
     exit;
    // ici vous pouvez afficher un lien pour renvoyer
    // vers la page d'accueil de votre espace membres  
  }    
}
else {
  echo '<font color="#FF33FF">Vous avez oublié de remplir un champ.</font>';
   include('login.html'); // On inclut le formulaire d'identification
   exit;
}


?>
Il doit bien y avoir un problème quelque part, mais j'ai beau relire mon code je ne le trouve pas... :cry:

par zeus » 11 déc. 2007, 08:54

Est-ce que tu crées bien le cookie après la connexion ?
Montre nous le code de la page de connexion

une authentification un peu trop présente

par thecaco » 11 déc. 2007, 01:07

Bonjour,

J'ai réalisé une page d'administration à laquelle l'accès n'est autorisé qu'après authentification. J'ai inséré dans cette page un code qui permet de vérifier si l'utilisateur est bien connecté, et s'il ne l'est pas il est redirigé automatiquement vers le formulaire de connexion. Jusque là tout va très bien.

Le problème est qu'une fois connecté, lorsque l'utilisateur veut naviguer d'une page à l'autre, il est toujours renvoyé sur le formulaire de connexion.
Moi j'aimerais qu'on ne puisse pas acccéder à la page admin et les autres qu'en étant connecté, mais une fois que cela est fait que la navigation se passe naturellement.

Voilà le code qui vérifie si la personne est bien connectée:
Code :
<?
session_start();
include("connexion.php");
/* 
si la variable de session login n'existe pas cela siginifie que le visiteur 
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres
*/
if(!isset($_SESSION['login'])) {
  echo '<font color="#FF33FF">Vous n\'êtes pas autorisé à accéder à cette zone; veuillez d\'abord vous identifier.</font>';
  include('login.html');
  exit;
}
 
?>
Pour le reste de la page, elle affiche un tableau avec des données provenant de la base. Comme ces données sont nombreuses, je les ai réparties sur plusieurs pages, et je n'affiche que 30 résultats par page. Le problème se présente lorsqu'on veut naviguer d'une page à l'autre.

Si vous avez besoin de plus de renseignements, je vous les fournirai sans problème!

Merci d'avance pour votre aide...