2010-11-03 3 views
2

Encore une autre question de gestion des utilisateurs PHP/MySQL. C'est pour un éditeur d'image, et donc chaque utilisateur doit avoir son propre "espace", c'est-à-dire son répertoire utilisateur (USERDIR) lors de son inscription, et tout ce qui se trouve sous ce répertoire doit être accessible uniquement à l'utilisateur concerné. Assez simple, mais je n'arrive pas à trouver les bons mots-clés pour rechercher un tutoriel. La façon dont je pensais l'implémenter était d'avoir une colonne "USERDIR" dans la base de données MySQL avec "USERID" et "PASSWORD" (md5 hashed) (bien que je comprenne que USERDIR est une clé redondante si les USERID sont aussi uniques - est-ce un problème à résoudre? Je pourrais simplement attribuer le USERID comme nom de répertoire au lieu de générer un nom de répertoire aléatoire unique). Comment puis-je "vérifier" si l'utilisateur a les privilèges pour accéder à son répertoire (par exemple, comment puis-je le coder pour vérifier le contrôle session/cookie pour empêcher un autre utilisateur d'aller sur mysite.com/USERID ou mysite.com/USERDIR) . J'apprécie que ce soit vraiment basique et répétitif pour certains d'entre vous, mais je n'arrive pas à trouver les tutoriels pertinents n'importe où! Toute aide très appréciée.Gestion des utilisateurs PHP/Mysql avec des répertoires personnalisés question

Répondre

0

Oui, il suffit d'utiliser le stockage basé sur UserID des fichiers image. Mais, assurez-vous d'envelopper votre demande pour un emplacement userdir dans un appel de fonction au cas où vous avez besoin de le modifier pour faire face aux limites du fichier répertoire. Par exemple, supposons que $ imageName est le nom de l'image que vous essayez de stocker ou de récupérer.

$userDir = getUserDir($userID); 
$imgLink = 'http://' .$hostname .'/' . $userDir . '/' . $imgName; 

function getUserDir($userID) 
{ 
    return 'images/' . $userID; 
} 
+0

Merci, cela a du sens et je ne vais pas coder en dur les chemins de l'image. Si vous pouviez également conseiller sur le problème de contournement de sécurité de l'éditeur SWF (voir ci-dessous commentaire Niggles) Je serais reconnaissant. – dfx

0

Vous pouvez également servir l'image via PHP pour assurer qu'il n'y a pas de chemins visibles à l'image dans une page Web, par exemple

$imagepath= 'some-input-file.jpg'; 
$image=imagecreatefromjpeg($imagepath); 
header('Content-Type: image/jpg'); 
imagejpeg($image, '', 90); 

Rappelez-vous, cela ne l'empêche pas d'autres personnes qui regardent l'image si elles devaient trouver le vrai lien - pour cela vous devrez peut-être utiliser .htaccess

+0

Merci, oui j'ai l'intention que le lien réel vers les images éditées soit hotlinkable, je ne veux tout simplement pas que l'éditeur Flash (qui chargera les images) soit accessible aux utilisateurs non-privilégiés. Le problème cependant, c'est que l'éditeur est en Flash donc je suppose que je dois faire la vérification USERID avec Flash comme si quelqu'un obtenait le lien vers le SWF, ils pourraient contourner toute la sécurité php? Ou existe-t-il un moyen plus simple d'utiliser mod_rewrite pour désactiver l'accès direct à l'éditeur swf? – dfx

+0

Je ferais 2 choses - obtenir Flash pour envoyer une demande $ _POST attend une certaine réponse pour vérifier que l'utilisateur est connecté. Ce n'est pas infaillible cependant. Avant de faire le fichier move_uploaded_file (ce que vous devez faire à un certain moment oui), vous devez vérifier qu'ils ont l'autorisation de télécharger et également définir le chemin du téléchargement. De cette façon, même si quelqu'un arrive au Flash, sans les bonnes informations d'identification, rien ne pourra jamais être téléchargé. – niggles