Restreindre l'acces à des pages

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 : Restreindre l'acces à des pages

par charabia » 15 sept. 2006, 14:23

N'oublies pas de mettre Résolu si c'est le cas ;)

par neo765 » 14 sept. 2006, 22:25

Merci je comprend mieux, je ne savais pas que le isset sevait à ça.

Merci

par charabia » 14 sept. 2006, 22:22

Il faut que tu relis le cours :) Son utilisation ne se fait pas comme ça.

session_start() permet de démarrer l'utilisation des sessions. Donc il se fait tout seul en début de page :
<?php
session_start();
?>
2è étape tu identifies la session. On va imaginer que la session s'appelle "ident", donc $_SESSION['ident']. Pour détecter je t'avais dit d'utiliser ISSET.
if (!isset($_SESSION['ident']))
{
//redirection
}
Là je dis, si la session n'est pas détectée (!isset) alors je redirige.

3è étape la redirection avec header + exit. Pour ça je t'invite à aller zeuter un oeil sur son utilisation ;)

Au final tu auras quelque chose de ce genre :
<?php
session_start();
if (!isset($_SESSION['ident']))
{
    //redirection + exit();
}
?>
Tu comprends mieux ? Ne recopies pas sans comprendre ;)

par neo765 » 14 sept. 2006, 22:16

Oui, je sais ça mais mon problème c'est de faire le code :

if (session_start()=0)
{
redirection page inscription
}

Voilà ce que je veux faire, mais bon je sais que mon code est faut, voilà pourquoi j'ai besoin d'aide, juste pour faire les lignes de code.

Merci

par charabia » 14 sept. 2006, 22:09

Bé il ne faut pas recopier texto le code en question, c'était un exemple tu dois l'adapter.

En gros ce qu'il faut :

Lorsque la personne rentre dans une page, il faut que ton code détecte si la personne est inscrite ou pas. Tu passes par les sessions pour faire ça.

Donc dans les pages à protéger, tu dis :
- Si la session existe alors c'est ok sinon je redirige vers le formulaire d'inscription.
--> démarrage de la session avec session_start(), détecter l'existence de la session avec isset et redirection avec header si la session n'existe pas.

Cette session est créée lorsque l'identification par le biais du formulaire est ok.

Il n'y a donc qu'un petit morceau de code pour chaque page protégée, à savoir la reconnaissance de la session.

Tout le script que tu as mis sert à l'identification.

par neo765 » 14 sept. 2006, 22:02

J'ai ajouté ce script dans les pages que je veux proteger :
<?php
// On démarre la session
session_start();
$loginOK = false;  // cf Astuce

// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {

  extract($_POST);  // je vous renvoie à la doc de cette fonction

  // On va chercher le mot de passe afférent à ce login
  $sql = "SELECT pseudo, age, sexe, ville, mdp FROM user WHERE login = '".addslashes($login)."'";
  $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
 
  // On vérifie que l'utilisateur existe bien
  if (mysql_num_rows($req) > 0) {
     $data = mysql_fetch_assoc($req);
   
    // On vérifie que son mot de passe est correct
    if ($password == $data['mdp']) {
      $loginOK = true;
    }
  }
}

// Si le login a été validé on met les données en sessions
if ($loginOK) {
  $_SESSION['pseudo'] = $data['pseudo'];
  $_SESSION['age'] = $data['age'];
     $_SESSION['sexe'] = $data['sexe'];
  $_SESSION['ville'] = $data['ville'];
}
else {
  echo 'Une erreur est survenue, veuillez réessayer !';
}
?>
Seulement maintenant quand je veux acceder à une page que j'ai protégé avec le script ci dessus il m'affiche "Une erreur est survenue, veuillez réessayer !"

Je pense que c'est du au faite que la session est déjà ouverte, donc je pense qu'il faudrait plutot modifier ce script :
<?php
// On appelle la session
session_start();

// On affiche une phrase résumant les infos sur l'utilisateur courant
echo 'Pseudo : ',$_SESSION['pseudo'],'<br />
     Age : ',$_SESSION['age'],'<br />
     Sexe : ',$_SESSION['sexe'],'<br />
     Ville : ',$_SESSION['ville'],'<br />';
?>
du genre mettre un if quelque par mais je ne sais pas où.

Merci

par charabia » 14 sept. 2006, 21:54

Quel script ? Quel erreur ? Donnes nous du code et des infos supplémentaires.

par neo765 » 14 sept. 2006, 21:47

Salut,

J'ai un problème :

Le script marche seulement si la session est en train de s'ouvrir, mais par exemple si la session est déjà ouverte, il affiche une erreur.

Il faudrait plutot ajouter une ligne sur ce script :
<?php
// On appelle la session
session_start();

// On affiche une phrase résumant les infos sur l'utilisateur courant
echo 'Pseudo : ',$_SESSION['pseudo'],'<br />
     Age : ',$_SESSION['age'],'<br />
     Sexe : ',$_SESSION['sexe'],'<br />
     Ville : ',$_SESSION['ville'],'<br />';
?>

par charabia » 14 sept. 2006, 14:51

Tu fais ce que tu veux à ce niveau. Dans ce "else" tu mets la commande que tu veux s'il y a une erreur, redirection, message d'erreur...etc Tu fais ton choix ;)

par neo765 » 14 sept. 2006, 14:48

Salut,

Il faut que je change ça : "echo 'Une erreur est survenue, veuillez réessayer !'" ?

Je met une ligne de code pour ouvrir une autre page ?

par charabia » 14 sept. 2006, 14:45

Hop une adresse pour que tu comprennes les sessions. Dans l'exemple tu as tout le nécessaire pour faire ce que tu veux.
:arrow: http://www.phpdebutant.org/article69.php

par neo765 » 14 sept. 2006, 14:34

Merci de m'avoir répondu, mais je ne sais pas comment proceder

Merci

par Henri » 14 sept. 2006, 14:25

Tu vérifies qu'aucune session est ouverte et tu affiches une page demandant un code et un mot de passe.

Restreindre l'acces à des pages

par neo765 » 14 sept. 2006, 12:44

Salut,

J'aimerai savoir comment faire pour afficher une page disant qu'il faut s'inscrire si aucune session n'est ouverte ?

Merci