Galeries photos sécurisés

Fermé
tophe_33 Messages postés 1 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 23 juin 2009 - 23 juin 2009 à 10:28
Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 - 1 juil. 2009 à 09:34
Bonjour,
Je cherche un code php me premettant de sécuriser différentes galeries. J'ai trouvé des codes d'identifaication mais ils ne m'apportent pas ce que je souhaite faire.
Je m'explique: je fais des photos de mariage et souhaite que seules les personnes ayant participé à l'événement puissent visualiser la galerie. En fait j'ai dans mon menu un bouton "galeries privées" qui envoie sur une page d'identification. A partir de là je voudrais que selon le code tappé, la page correspondante s'ouvre sachant que les codes d'accès sont dans une table sur la base de données. (ex : code A tappé : ouverture de la page A; code B tappé, ouverture de lapage B....)
A voir également:

3 réponses

Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
23 juin 2009 à 10:38
Tu fais une variable de session qui contient ton type d'accès. Ensuite tu fait un test pour savoir qu'elle galerie afficher et si test = faux pour toutes tes galeries alors redirection vers la page d'accueil.
0
En fait j'ai fait une ouverture de ession et j'ai fait en suite une variable au niveau du code entré.
Voici le code de ma page d'accès :
<?php
session_start();
$passe = $HTTP_POST_VARS["passe"];
$id = $HTTP_POST_VARS["id"];

// on se connecte à la base
mysql_connect("");
mysql_select_db("");

//on teste le login et le pass dans la base
$sql = "SELECT id FROM acces WHERE passe='$passe'";
$result = @mysql_query($sql);
$nb = @mysql_num_rows($result);

if ($nb==1)
{
//dans ce cas le mot de passe est valide
// on etablie une variable de session, par exemple $adminconnecte et on lui affecte la valeur "OK"
$adminconnecte = "OK";
// On enregistre cette variable en session :
session_register("adminconnecte");
// On peut aller sur l'espace membre
header("Location: ../mariages/stef/index.html");
}
elseif ($nb==2)
{
//dans ce cas le mot de passe est valide
// on etablie une variable de session, par exemple $adminconnecte et on lui affecte la valeur "OK"
$adminconnecte = "OK";
// On enregistre cette variable en session :
session_register("adminconnecte");
// On peut aller sur l'espace membre
header("Location: ../LmClassic2008/index.html");
}
else
{
//sinon on retourne sur la page de connection
echo "<center>Votre login ou votre mot de passe est incorrect.<br> Vous allez etre redirigé automatiquement vers la page d'identification</center>";
echo"<META HTTP-EQUIV='refresh' CONTENT='5; URL=login.php'>";
}?>



cela marche très bien mais que pour le premier mot de passe mais pas pour le second.Autre question : n'est il pas plus simple aussi de donner l'adresse de la page à ouvrir directement dans la bas de donnée ? Cela afin d'éviter de rajouter des variable dans le fichi d'accès chaque fois que je rajoute une galerie.
0
Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
1 juil. 2009 à 09:34
$HTTP_POST_VARS["passe"] est remplacé par $_POST['passe'] dans les dernières versions de php.


Ci dessous, tu teste si le mot de passe existe dans ta base. Ce n'est pas très sécuritaire, en général, une connection est caractérisée par un couple login mot de passe et pas que par un mot de passe.

//on teste le login et le pass dans la base
$sql = "SELECT id FROM acces WHERE passe='$passe'";
$result = @mysql_query($sql);
$nb = @mysql_num_rows($result);


cela marche très bien mais que pour le premier mot de passe mais pas pour le second.Autre question : n'est il pas plus simple aussi de donner l'adresse de la page à ouvrir directement dans la bas de donnée ? Cela afin d'éviter de rajouter des variable dans le fichi d'accès chaque fois que je rajoute une galerie.

Je pense effectivement que ce serait plus simple.
Ton test avec num_rows ne me parait pas très logique. Un utilisateur peut-il avoir plusieurs comptes?

J'ai un peu de temps alors:


Dans ta base de données:

1 table galerie avec le nom de tes images dedans
2 table user avec nom et mot de passe + id des galeries accessibles (séparés par des , par exemple)


dans ton code php:

// Ouverture de session

session_start();
$passe = $_POST["passe"];
$id = $_POST["id"];
$_session['user_log'] = 'non';

// on se connecte à la base
mysql_connect("");
mysql_select_db("");

//on teste le login et le pass dans la base
$sql = "SELECT * FROM acces WHERE id ='$id'";
$result = @mysql_query($sql);
$rangee = @mysql_fetch_array($result);

if ($rangee['passe'] == $passe){
$_session['user_log'] = $rangee['id'];
} else {
$_session['user_log'] = 'non';
}

if ($_session['user_log'] == 'non'){
//sinon on retourne sur la page de connection
echo "<center>Votre login ou votre mot de passe est incorrect.<br> Vous allez etre redirigé automatiquement vers la page d'identification</center>";
echo"<META HTTP-EQUIV='refresh' CONTENT='5; URL=login.php'>"; 

}else{

// Ici, tu renvoie vers lune page qui liste  les galeries accéssibles pour l'utlisateur dont l'id est égale à $_session['user_log']

}



C'est comme ça que j'aurai fait, il doit bien sur y avoir une tétra chiée de solutions différentes. Ce n'est qu'une ébauche, en espérant t'avoir aidé...
0