Page 1 sur 1
Restreindre l'acces à des pages
Posté : 14 sept. 2006, 12:44
par neo765
Salut,
J'aimerai savoir comment faire pour afficher une page disant qu'il faut s'inscrire si aucune session n'est ouverte ?
Merci
Posté : 14 sept. 2006, 14:25
par Henri
Tu vérifies qu'aucune session est ouverte et tu affiches une page demandant un code et un mot de passe.
Posté : 14 sept. 2006, 14:34
par neo765
Merci de m'avoir répondu, mais je ne sais pas comment proceder
Merci
Posté : 14 sept. 2006, 14:45
par charabia
Hop une adresse pour que tu comprennes les sessions. Dans l'exemple tu as tout le nécessaire pour faire ce que tu veux.
http://www.phpdebutant.org/article69.php
Posté : 14 sept. 2006, 14:48
par neo765
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 ?
Posté : 14 sept. 2006, 14:51
par charabia
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

Posté : 14 sept. 2006, 21:47
par neo765
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 />';
?>
Posté : 14 sept. 2006, 21:54
par charabia
Quel script ? Quel erreur ? Donnes nous du code et des infos supplémentaires.
Posté : 14 sept. 2006, 22:02
par neo765
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
Posté : 14 sept. 2006, 22:09
par charabia
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.
Posté : 14 sept. 2006, 22:16
par neo765
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
Posté : 14 sept. 2006, 22:22
par charabia
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

Posté : 14 sept. 2006, 22:25
par neo765
Merci je comprend mieux, je ne savais pas que le isset sevait à ça.
Merci
Posté : 15 sept. 2006, 14:23
par charabia
N'oublies pas de mettre Résolu si c'est le cas
