Script PHP de connexion ne marche pas

Fermé
Thomas38340 Messages postés 166 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 5 octobre 2013 - 14 févr. 2012 à 14:23
 Garth - 14 févr. 2012 à 19:32
Bonjour, je voudrais ecrire un script autorisant le membre "username" a acceder a la page demandée si il est connecté, dans le cas ou il ne serais pas inscris, le rediriger directement sur une autre page. De meme quand il tape la page protégée dans l'URL : si il est connecté, il y accede, sinon => page de connexion.

J'ai ecris un début mais je ne sais pas comment formuler la suite :

<?php
//Si l'utilisateur est connecté, on affiche les identifiants
if(isset($_SESSION['username']))
{
}
//sinon on le redirige a la page de connexion automatiquement
{
else
}
?>
A voir également:

1 réponse

Salut,
pour utiliser les variables de session il faut mettre session_start(); en début de code(strictement en début, parfois en sautant une ligne ça peut ne pas marcher)
Pour afficher la variable fonction echo ();
pour la redirection il faut utiliser la fonction header('location:mon_url');
http://php.net/manual/fr/function.header.php

Donc ça pourrait donner ceci :

<?php  
session_start();  
//Si l'utilisateur est connecté, on affiche les identifiants  
if(isset($_SESSION['username']) && !empty($_SESSION['username']))  
{  
echo "Bienvenue ".$_SESSION['username'];  
}else // petit soucis dans la place du else : corrigé  
{  
//sinon on le redirige a la page de connexion automatiquement  


header('Location:page_de_connection.php');  
exit();/* une sécurité de plus même si elle sert à rien */  
}  
?>



Mieux encore mettre tout ça en fonction externe pour pas avoir à retaper et aérer le code de chaque page:

<?php  

//---------                fonctions_utiles.php  
//-------------------- FONCTIONS UTILES   

function echec(){  
session_unset();  
session_destroy();  
header('Location: page_de_connection.php');  
exit();  
}  


function test_session($sess){  
    if (isset($sess)) && !empty($sess)){  
    echo $sess;  
    }else{  
    echec();  
    }  

}  
?>  

Ce qui donnes pour votre page(et toutes les autres où la session doit être utilisée)  

<?php  
session_start(); 
include('fonctions_utiles.php'); 
test_session($_SESSION['username']);  

?>


C'est mieux encore si vous faites une page spécifique plutôt que la page de connection pour un utilisateur qui voudrait se connecter sans avoir sa session(donc sans s'être identifié) avec un texte genre:
<h2 style="color:red;background-color:#000;">
INTERDIT, VOUS DEVEZ ETRE UN MEMBRE ENREGISTRE ET VOUS CONNECTER POUR AVOIR ACCES A CES PAGES
</h2>
<a href="connection.html">Allez en page de connection</a>
<a href="inscription.html">S'inscrire</a>
<!------------ON rigole pas avec la sécurité ------->

Vu que si la personne a pas de session et qu'elle se retrouve sur les pages des membres c'est qu'elle essaye de tricher pour passer outre l'identification. Ou alors d'envoyer un message dans l'url(en $_GET) pour avertir qu'il doit s'identifier pour se connecter.
Comme ceci
header('Location: page_de_connection.php?avertissement=Vous devez vous connecter pour accéder aux pages membres');

Et bien sûr récupérer le message et l'afficher:

if(isset($_GET['avertissement']) && !empty($_GET['avertissement'])){
echo $_GET['avertissement'];

}
2