Bonjour,
J'aimerais que lorsqu'une personne s'inscrit sur le formulaire et qu'il remplit le mot de passe.
Le mot de passe et le nom de l'utilisateur s'inscrive dans le fichier .htpassword.
Si quelqu'un pouvait m'aider, merci
Bonne journée
Bonjour,
J'aimerais que lorsqu'une personne s'inscrit sur le formulaire et qu'il remplit le mot de passe.
Le mot de passe et le nom de l'utilisateur s'inscrive dans le fichier .htpassword.
Si quelqu'un pouvait m'aider, merci
Bonne journée
Salut,
On utilise plutôt un système d'authentification par session avec enregistrement des identifiants en bdd pour créer ce genre de fonctionnalités.
mais j'ai n système d'authentification pour l'espace membre avec des login et mot de passe dans la base de données mais pour porteger les documents j'ai utilisé .htaccess et .htpassword...
Tu peux protéger tes documents (photos pdf etc) dans un répertoire avec .htaccess et les faire afficher ou les proposer en téléchargement avec php avec des header uniquement pour les membres authentifiés. Cela t'éviteras la problématique du .htpassword qui est trivial mais pas convivial ni pratique à administrer.
Oui ça à l'air bien ceci comment je dois procéder pour les proposer en telechargement avec des header uniquement pour les membres?
C'est une condition If {} else ..?
Bonne journée
Bah oui tu déclare une variable de session lors de l'authentification, par exemple $_SESSION['login'], et tu t'en sert pour autoriser ou non le téléchargement d'un fichier qui est situé dans un dossier protégé par un .htaccess (qui contient la mention "deny from all").
Tu as un exemple de téléchargement ici. Donc le code php de ta boite de téléchargement pourrait être :
load_fichier.php
Tu peux appeler ce script depuis une autre page :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 <?php session_start(); if(isset($_SESSION['login'])) { $dossier_protege = 'Test/'; // Sécurise le nom du fichier passé dans la variable $_GET['fichier'] if(isset($_GET['fichier']) && strpos($_GET['fichier'], '/') === FALSE && strpos($_GET['fichier'], '.') !== 0) { $chemin_fichier = $dossier_protege.$_GET['fichier']; if(file_exists($chemin_fichier)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($chemin_fichier).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($chemin_fichier)); readfile($chemin_fichier); exit; } else { echo 'Ce fichier n\'existe pas'; } } else { echo 'Nom du fichier invalide'; } } else { echo 'Vous devez être authentifié'; } ?>
suppose que "nom_fichier.jpg" soit inclus dans le dossier "Test/"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php session_start(); // pour exemple je déclare $_SESSION['login'] (qui normalement est déclaré lors de l'authentification) $_SESSION['login'] = 1; ?> <!DOCTYPE html> <html lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="Description" content = ""> <title></title> </head> <body> <a href="load_fichier.php?fichier=nom_fichier.jpg">fichier1</a> </body> </html>
Merci je vais tester de le mettre en place.
Et j'avais une autre petite question, comment faire si là personne mais un titre de document avec des espaces?
Comment peut-on le gérer ceci?
Bonne journée
Salut,
Tu devrais renommer les fichiers lors de l'upload pour enlever les espaces (et les remplacer par des '_' par exemple), et de même remplacer les caractères accentués par leur équivalent sans accent pour permettre un maximum de compatibilité avec le serveur.
Il y a une classe d'upload complète ici qui fait ça de manière transparente. Elle retourne aussi les infos en temps réel, surpasse les limitations serveur, gère les erreurs etc. avec des exemples complets et directement fonctionnels, suffit de décompresser le fichier et de le poser sur le serveur pour faire les premiers tests.
Ou tu peux aussi regarder simplement la fonction "cleanFileName" qui renomme les fichiers, elle se trouve dans Php_Upload/Classes/UploadABCIServices.php
Pour les espaces et accents c'est bon mais par contre l'accés au document proteger cela ne fonctionne pas....
Le code que je t'ai donné fonctionne chez moi. Vérifies/modifies le nom du dossier et du fichier que j'ai mis en exemple. L'adresse du dossier suppose qu'il est au même niveau que les deux fichiers par exemple.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager