IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Suppression fichier de mon ftp [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Points : 50
    Points
    50
    Par défaut Suppression fichier de mon ftp
    Bonjour à toutes et à tous,

    Mon contexte :

    J'ai développé un site Internet pour une Université. Quand un utilisateur (qui est étudiant dans cette université) s'inscrit sur le site et SE CONNECTE il a accès au moodle(fonctionnalité qui permet de suivre des cours en ligne).

    L'arborescence est ainsi www.monsite.eu/moodle/index.php

    Le moodle à son propre index.php et possède une page d'accueil avec une partie espace membre (login/mdp). Donc ce dernier utilise un session_start().


    Ce que je veux faire :

    J'aimerai que le moodle ne soit accessible uniquement pour les membres inscrit sur le site.
    De ce fait lorsqu'un visiteur tape dans la barre d'url : 'www.monsite.eu/moodle' il à accès au moodle sans se connecter sur mon site (ce qui est tout à fait normal mais que j'aimerai bloquer)


    Ma solution :

    J'ai tout d'abord voulu là faire classique avec une session_start(), mais comme dit précédemment le moodle utilise déjà la sienne et donc si je fais cela, ils entrent en conflit et c'est le foutoirs.

    J'ai donc réalisé une fonction qui me permet de créer un fichier, dans un dossier de mon ftp, au format '.IP' et dont le nom du fichier et l'adresse ip de l'utilisateur (grâce à un $_SERVER['HTTP_HOST']), dès lors que le membre se connecte sur mon site.

    Exemple : Polo se connecte sur mon site ====> le fichier '186.2.125.14.IP' se créer dans mon ftp.

    Et via une condition if je dit : si l'ip de l'utilisateur qui va sur le moodle et égale au nom du fichier créer dans le ftp alors on lui accorde l'accès au moodle sinon une redirection à la page principal de mon site.

    Ensuite quand l'utilisateur se déconnecte, le fichier '186.2.125.14.IP' est supprimer grâce à la méthod unlink()

    Questions :

    Quand un membre, connecté sur mon site, quitte son navigateur sans se déconnecter au préalable. Le fichier ne se supprimer pas car il faut cliquer sur le lien se déconnecter.

    Comment supprimer le fichier même si le membre décide de quitter son navigateur ou décide d'aller sur un autre site ?

    Et enfin la méthode que j'ai effectué ici est-elle sécurisé ou y a t-il un autre moyen plus simple de faire ce que je souhaite ?

    En vous remerciant de l'attention que vous porterez à ma requête, amicalement

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Il y a de l'idée mais la méthode n'est pas bonne du tout.
    La gestion des droits d'accès ne doit pas se faire en se basant sur l'adresse IP, il faut un identifiant qui soit unique. Si une personne se connecte depuis ton université alors n'importe quelle personne de l'université pourra y accéder sans se connecter puisque l'IP est identique.

    Si il n'est vraiment pas possible d'utiliser les sessions il faut se pencher sur les cookies. Si la connexion est réussi tu crées un cookie (qui lui est stocké sur le poste de l'utilisateur) dans lequel tu pourras stocker des informations qui te permettront d'identifier l'utilisateur (nom, identifiant de "session" unique...). Il suffit de mettre une date d'expiration sur le cookie pour que la "session" se ferme après un certains temps d'inactivité.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Points : 50
    Points
    50
    Par défaut
    Je vois où tu veux en venir mais il me semble que même à l'université chaque PC possède sa propre IP non ? Sinon comment identifie t-on chaque PC ?

    De plus dans ma fonction j'ai pris soin de supprimer directement le fichier des lors que l'utilisateur se déconnecte.

    Le seul truc qui me pose souci est le cas où l'utilisateur quitte son navigateur sans se déconnecter au préalable. Comment supprimer le fichier dans ce cas de figure ?


    Enfin pour les cookies j'y avais pensé mais cette méthode n'est pas trop sécurisé à mon goût.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Citation Envoyé par haamome Voir le message
    Je vois où tu veux en venir mais il me semble que même à l'université chaque PC possède sa propre IP non ? Sinon comment identifie t-on chaque PC ?
    Chaque PC possède sa propre adresse IP locale (en 192.168.0.xxx par exemple), mais l'IP publique est la même pour tous. Mon exemple est aussi valable si une personne se connecte depuis un wifi public, tous les utilisateurs de se wifi auront aussi l'accès.

    Citation Envoyé par haamome Voir le message
    De plus dans ma fonction j'ai pris soin de supprimer directement le fichier des lors que l'utilisateur se déconnecte.

    Le seul truc qui me pose souci est le cas où l'utilisateur quitte son navigateur sans se déconnecter au préalable. Comment supprimer le fichier dans ce cas de figure ?
    Il existe des techniques javascript pour détecter la fermeture du navigateur.


    Citation Envoyé par haamome Voir le message
    Enfin pour les cookies j'y avais pensé mais cette méthode n'est pas trop sécurisé à mon goût.
    C'est surement plus sécurisé qu'une authentification par IP !

  5. #5
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Points : 8 040
    Points
    8 040
    Par défaut
    Questions bêtes :
    - quand tu dis que ton utilisateur doit être inscrit et connecté à ton site, c'est sur le domaine www.monsite.eu ?
    - Est-ce que le sous-site "moodle" est sur le même serveur que ton site principal ?

    Là où je veux en venir, c'est qu'un variable de session de ton site, pourrait être disponible dans le sous-site moodle. Mais attention, comme tu t'en es rendu compte, pas besoin de rajouter un nouveau session_start() puisque celui est déjà présent dans le fichier index de moodle.

    Pour essayer fait un test du genre :

    www.monsite.eu/index.php <- ton site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session_start(); // déjà présent normalement
     
    $_SESSION['test'] = 'Ma variable de session de mon site';
    et sur www.monsite.eu/moodle/index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    session_start() // déjà présent normalement
    echo $_SESSION['test'];

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par gmarsay Voir le message
    Il existe des techniques javascript pour détecter la fermeture du navigateur.
    Oui j'ai pu voir cela le problème c'est que l’événement se déclenche chaque fois qu'on quitte la page. Donc si je change vais sur une autre page mais que je reste toujours sur le site ou que je rafraichit juste la même page l'événement se déclenchera.


    Citation Envoyé par gmarsay Voir le message
    C'est surement plus sécurisé qu'une authentification par IP !
    Ouep tu as surement raison est plus je cherche sur le net plus je m'aperçois que ma méthode est vraiment à chi**

    Je garde ta méthode des cookies en tête, dans le cas ou je ne trouve aucune solution.


    Citation Envoyé par Torgar Voir le message
    Questions bêtes :
    - quand tu dis que ton utilisateur doit être inscrit et connecté à ton site, c'est sur le domaine www.monsite.eu ?
    - Est-ce que le sous-site "moodle" est sur le même serveur que ton site principal ?

    Là où je veux en venir, c'est qu'un variable de session de ton site, pourrait être disponible dans le sous-site moodle. Mais attention, comme tu t'en es rendu compte, pas besoin de rajouter un nouveau session_start() puisque celui est déjà présent dans le fichier index de moodle.

    Pour essayer fait un test du genre :

    www.monsite.eu/index.php <- ton site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session_start(); // déjà présent normalement
     
    $_SESSION['test'] = 'Ma variable de session de mon site';
    et sur www.monsite.eu/moodle/index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    session_start() // déjà présent normalement
    echo $_SESSION['test'];
    Alors pour répondre à tes questions :

    -Oui
    -Oui

    Donc en gros ton idée est de faire sur www.monsite.eu :

    $_SESSION['test'] = $_SESSION['username'];

    Puis sur le moodle/index.php faire :

    echo $_SESSION['test'];

    étrangement ça a fonctionné une seul fois et il m'a bien affiché le nom de la session. Mais il ne veux plus le refaire je ne sais pas pourquoi. En tout cas si ce n'est pas ce que tu voulais que je fasse fait le moi savoir je vais travailler sur cette idée en attendant.

  7. #7
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Points : 8 040
    Points
    8 040
    Par défaut
    C'était exactement ma pensée.

    Maintenant il faut comprendre pourquoi ça n'a fonctionné qu'une fois.

    Au final, tu peux faire directement dans moodle/index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_SESSION['username'];

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Points : 50
    Points
    50
    Par défaut
    Mon moodle s'affiche bien quand je me connecte sur mon site mais le problème c'est que lorsque je souhaite me connecter sur le moodle là il me dit problème de session.


  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    et avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo session_id();
    print_r($_SESSION);
    sur les 2 pages pour voir ce qu'il y dedans ?

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 46
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par ascito Voir le message
    et avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo session_id();
    print_r($_SESSION);
    sur les 2 pages pour voir ce qu'il y dedans ?

    Cela me donne ça sur www.monsite.eu/index.php :

    ehs8s2lfcgol2p3o8k0r7tjt20Array ( [username] => Haamome [test] => Haamome [SESSION] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => object [session_test] => AL8xHuZdEO [has_timed_out] => 1 [cal_course_referer] => 1 [cal_show_global] => 1 [cal_show_groups] => 1 [cal_show_course] => 1 [cal_show_user] => 1 [cal_courses_shown] => Array ( ) [cal_users_shown] => ) [USER] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => object [id] => 0 [access] => Array ( [ra] => Array ( [/1] => Array ( [0] => 6 ) ) [rdef] => Array ( [/1:6] => Array ( [mod/data:viewentry] => 1 [mod/forum:viewdiscussion] => 1 [mod/quiz:view] => 1 [moodle/block:view] => 1 [moodle/blog:view] => 1 [moodle/course:view] => 1 [moodle/legacy:guest] => 1 [moodle/user:changeownpassword] => -1000 [moodle/user:editownprofile] => -1000 [moodle/user:viewdetails] => 1 [block/online_users:viewlist] => 1 [mod/assignment:view] => 1 ) ) [loaded] => Array ( [0] => /1/2 ) [time] => 1342141663 ) [preference] => Array ( ) ) )

    Et strictement rien sur www.monsite.eu/moodle/index.php.



    Il faut bien comprendre www.monsite.eu/moodle/index.php ne peut être accéssible que si on se connecte préalablement sur www.monsite.eu/index.php le problème c'est que tout deux utilisent un espace de connexion (login et mdp). Donc tout deux utilisent une session_start() ce qui fait que je ne peux utiliser de $_SESSION[''] car si je lance la session_start() sur www.monsite.eu/moodle/index.php ce dernier entre en conflit avec la session de www.monsite.eu/index.php

    J'ai bien tenté de faire passer les variables de $_SESSION par url et les récupérer grâce à un $_GET. Le souci c'est que sur le moodle il y a certaines fonctionnalités qui utilise eux aussi des variables via url. De ce fait mes variables sont supprimer. Et donc quand je clique par exemple sur les événement du calendrier du moodle, de nouvelles variables viennent remplacer les miennes dans l'url et donc la connexion est perdu (car ma condition if retourne null au raffraichissement)

    Autorisé l'accès du moodle (www.monsite.eu/moodle/index.php) uniquement quand on se connecte sur mon site (www.monsite.eu/index.php). Le seul moyen qui me reste sera les cookies. Je vais tenter ça.

    En tout les cas merci à tous de m'avoir accordé de vôtres temps et désoler du dérangement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Suppression fichiers après transfert FTP
    Par Sami Xite dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 30/11/2009, 16h47
  2. [WD14E] Suppression fichier serveur FTP
    Par zimonn10 dans le forum WinDev
    Réponses: 8
    Dernier message: 19/06/2009, 11h52
  3. copie des fichiers d'un ftp à mon "local directory"
    Par franckesh007 dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 26/09/2008, 17h11
  4. Réponses: 15
    Dernier message: 01/09/2005, 10h07
  5. [C#] [FTP] Envoi et suppression fichier sur ftp NON ANONYME!
    Par djsbens dans le forum Windows Forms
    Réponses: 14
    Dernier message: 30/03/2005, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo