[php] Droit
Résolu
Aroeris
-
jjsteing Messages postés 1670 Date d'inscription Statut Contributeur Dernière intervention -
jjsteing Messages postés 1670 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai une partie administration d'un site, ou des pages doivent être visible uniquement pour les administrateur connectés.
J'essaie donc de faire en sorte qu'une personne mal intentionnés ne puissent pas accéder a ces pages en tapant directement l'adresse de la page dans son navigateur.
Mon problème se pose ici que je ne sais pas trop comment faire pour empêcher cela.
Faut il que je crée une un table ou mon administrateur aura des droits spécifiques pour certaines pages ?
Regarder si l'administrateur connectés existe bien dans la base suffit il ? (ce que j'ai fait)
Code :
<?php
$req="SELECT count(login) FROM admin WHERE login ='".$_SESSION['Admin']."'";
$exe=mysql_query($req);
$result = mysql_fetch_array($exe);
if($result[0] != 1)
{
//rediriger
}
?>
Les variables de session utilisés ainsi sont elles le bon choix ?
Bref je ne sais pas trop comment m'y prendre, si l'on pouvait m'aider svp.
De plus s'il se trouve que l'internaute n'a pas le droit d'accéder a cette page, je veux le rediriger ailleurs, seulement j'ai un peu (même beaucoup) de mal a comprendre le fonctionnement de la fonction "header" en php, car j'ai lus que l'on faisait comme ça et qu'il fallait faire attention a des entêtes déjà donné... bref j'ai beau lire et relire je comprends pas.
Si l'on pouvait m'éclairer d ce coté si également svp.
J'ai une partie administration d'un site, ou des pages doivent être visible uniquement pour les administrateur connectés.
J'essaie donc de faire en sorte qu'une personne mal intentionnés ne puissent pas accéder a ces pages en tapant directement l'adresse de la page dans son navigateur.
Mon problème se pose ici que je ne sais pas trop comment faire pour empêcher cela.
Faut il que je crée une un table ou mon administrateur aura des droits spécifiques pour certaines pages ?
Regarder si l'administrateur connectés existe bien dans la base suffit il ? (ce que j'ai fait)
Code :
<?php
$req="SELECT count(login) FROM admin WHERE login ='".$_SESSION['Admin']."'";
$exe=mysql_query($req);
$result = mysql_fetch_array($exe);
if($result[0] != 1)
{
//rediriger
}
?>
Les variables de session utilisés ainsi sont elles le bon choix ?
Bref je ne sais pas trop comment m'y prendre, si l'on pouvait m'aider svp.
De plus s'il se trouve que l'internaute n'a pas le droit d'accéder a cette page, je veux le rediriger ailleurs, seulement j'ai un peu (même beaucoup) de mal a comprendre le fonctionnement de la fonction "header" en php, car j'ai lus que l'on faisait comme ça et qu'il fallait faire attention a des entêtes déjà donné... bref j'ai beau lire et relire je comprends pas.
Si l'on pouvait m'éclairer d ce coté si également svp.
A voir également:
- [php] Droit
- Easy php - Télécharger - Divers Web & Internet
- Procès-verbal en droit français - Guide
- Remettre ecran droit - Guide
- Slash droit ✓ - Forum Programmation
- Image libre de droit gratuite google - Guide
25 réponses
le htaccess est une bonne solution, les variables de sessions le sont egalement, et tu peut aussi utiliser les variables serveur pou securiser une page, ainsi si quelqu'un tape directement l'adresse d'une page protegée si l'origine n'est pas une page de ton site il est rejetté.
Bref ces 3 options sont complémentaires
voici un lien sur les variables serveur http://www.manuelphp.com/php/reserved.variables.server.php
Bref ces 3 options sont complémentaires
voici un lien sur les variables serveur http://www.manuelphp.com/php/reserved.variables.server.php
alors essaye te fire une redirection en javascript pour voir si ca marche
if($_SESSION['visit']!=$tab[0] && $_SESSION["niveau"] != 1) { echo'script type="text/javascript"> window.location.replace(\'index.php\'); </script>'; }
C'est un debut mais je ne suis pas sur que cela suffise car admettons que je vienne sur ta page, je ne suis pas administrateur donc je serais redirigé vers la page de base que tu as mis. Par contre par exemple je suis curieux j'affiche le code source, je vois des liens auxquels je n'ai pas accès alors je les entre dans mon navigateur et si y a pas de vérification dans chaque page réservées aux admin j'y aurais accès.
Pour ma part je fais en haut des page "reservée":
//admettons que les admin ait pour niveau 1 et le reste 0, je récuperer de ma bdd le niveau de la //personne que je stock que la session niveau.
if ($_SESSION['niveau'] =1)
{
//tout le code de ta page
}
else echo 'Vous n'avez pas accès à cette page';
Tu peux faire ainsi après il doit y avoir d'autres manières de procéder que je ne connais pas.
Pour ma part je fais en haut des page "reservée":
//admettons que les admin ait pour niveau 1 et le reste 0, je récuperer de ma bdd le niveau de la //personne que je stock que la session niveau.
if ($_SESSION['niveau'] =1)
{
//tout le code de ta page
}
else echo 'Vous n'avez pas accès à cette page';
Tu peux faire ainsi après il doit y avoir d'autres manières de procéder que je ne connais pas.
Non, car si tu n as pas acces, le code en php ne s affichera pas.. il n aura que le code html donc la redirection ;)
de plus, tu peux protéger l acces à tes fichier php via le htaccess pour etre encore plus sur qu un esprit mal veuillant accedant en direct sur ton site (et non via un navigateur) ne puisse pas y acceder...
cf https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/918580-protegez-un-dossier-avec-un-htaccess
de plus, tu peux protéger l acces à tes fichier php via le htaccess pour etre encore plus sur qu un esprit mal veuillant accedant en direct sur ton site (et non via un navigateur) ne puisse pas y acceder...
cf https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/918580-protegez-un-dossier-avec-un-htaccess
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Personnelemnt, lorque l utilisateur se logue, je lui attribut un groupe que je met dans $_SESSION['group']... en loccurence, si je me connect ou un admin, $_SESSION['group']='admin' donc la premiere ligne de mon fichier php appele une fonction qui verifie cela, sinon, je le renvoie sur la page index ;)
Effectivement si tu veux rediriger faut mieux faire le test inverse, en debut de page:
//si le niveau n'est pas celui des admin
if ($_SESSION['niveau'] != 1)
{
//voila comment fonction la redirection
header("location: tapage.php");
}
Ainsi, il sera directement redirigé s'il n'as pas accès à la page.
//si le niveau n'est pas celui des admin
if ($_SESSION['niveau'] != 1)
{
//voila comment fonction la redirection
header("location: tapage.php");
}
Ainsi, il sera directement redirigé s'il n'as pas accès à la page.
Merci pour le tuto, je connaissais pas du tout le htaccess ! (debutant hihi)
Et d'accord pour la verification je vais faire aussi faire comme ça dans ce cas !
Et d'accord pour la verification je vais faire aussi faire comme ça dans ce cas !
le mieux c'est de faire les 2... $_Session[] pour les personnes qui se connectent à ton site via http et le htaccess pour ceux qui essai un peu plus en profondeur ;)
J'ai pensé a une chose, pour l'utilisateur qui viens sur le site, mais qui ne se connecte pas, faut il creer un utilisateur banal, auquel on lui attribue des droits jusqu'a ce qu'il se log ?
Ben oui dansta table user tu a probablememnt defini des niveaux d'acces (admin, super admin,etc...)
hé bien dans ton script php tu met par defaut visiteur par exemple, sans aucun droit, dans une boucle switch
hé bien dans ton script php tu met par defaut visiteur par exemple, sans aucun droit, dans une boucle switch
Et sinon, pour le deuxieme probleme concernant les header, j'ai cette erreur
"Warning: Cannot modify header information - headers already sent by (...)"
J'ai lus plein de choses sur ça mais j'ai rien compris, concretement je dois faire quoi ?
"Warning: Cannot modify header information - headers already sent by (...)"
J'ai lus plein de choses sur ça mais j'ai rien compris, concretement je dois faire quoi ?
Non ya pas de "echo"
Code :
<?php
//connexion au serveur
$cnx = mysql_connect("***", "***","**") ;
//sélection de la base de données
$db = mysql_select_db("***") ;
$verif="select login from admin where login='".$_SESSION['visit']."'";
$req=mysql_query($verif);
$tab=mysql_fetch_array($req);
if($_SESSION['visit']!=$tab[0] && $_SESSION["niveau"] != 1)
{
header("location: index.php");
}
?>
Cependant, j'ai un index.php, avec d'autres pages qui sont inclues via la method GET. Je sais pas si cette info peut servir.
Code :
<?php
//connexion au serveur
$cnx = mysql_connect("***", "***","**") ;
//sélection de la base de données
$db = mysql_select_db("***") ;
$verif="select login from admin where login='".$_SESSION['visit']."'";
$req=mysql_query($verif);
$tab=mysql_fetch_array($req);
if($_SESSION['visit']!=$tab[0] && $_SESSION["niveau"] != 1)
{
header("location: index.php");
}
?>
Cependant, j'ai un index.php, avec d'autres pages qui sont inclues via la method GET. Je sais pas si cette info peut servir.
La page qui contient ce code est elle meme inclue dans index.php, donc oui il y a des includes avant.
Mais non dans index.php il n'ya pas de "echo".
il est possible que certaine page que j'inclue ont leur script qui comence de cette maniere :
Code:
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
Mais non dans index.php il n'ya pas de "echo".
il est possible que certaine page que j'inclue ont leur script qui comence de cette maniere :
Code:
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
Ben ça m'affiche
'script type="text/javascript">
window.location.replace(\'index.php\');
</script>'
au lieu de me rediriger, et affiche la page complète alors que c'est sensé me rediriger
'script type="text/javascript">
window.location.replace(\'index.php\');
</script>'
au lieu de me rediriger, et affiche la page complète alors que c'est sensé me rediriger
J'ai vu que tu avais oublier "<" au debut donc mea culpa, mais sinon ça ne marche pas , je ne suis pas rediriger : /
perso..mon site est construit comme cela , si ca peut te donner une piste :
index.php :
<?php
require_once ("Main.php");
AfficherTableEntiere();
?>
Main.php :
<?php
function AfficherTableEntiere(){
$Html="
<html>
<head>
<title></title>
</head>
<body>";
$Html.="</body>
</html>";
if($_SESSION['visit']!=$tab[0] && $_SESSION["niveau"] != 1)
{
header("location: index.php");
exit();
}else{
// j inclus la page à afficher dans $Html et puis...
echo $Html;
}
?>
}
index.php :
<?php
require_once ("Main.php");
AfficherTableEntiere();
?>
Main.php :
<?php
function AfficherTableEntiere(){
$Html="
<html>
<head>
<title></title>
</head>
<body>";
$Html.="</body>
</html>";
if($_SESSION['visit']!=$tab[0] && $_SESSION["niveau"] != 1)
{
header("location: index.php");
exit();
}else{
// j inclus la page à afficher dans $Html et puis...
echo $Html;
}
?>
}