PHP utilisation une personne à la fois ????
Résolu
nonodu003
Messages postés
59
Date d'inscription
Statut
Membre
Dernière intervention
-
Nyctaclope Messages postés 5315 Date d'inscription Statut Membre Dernière intervention -
Nyctaclope Messages postés 5315 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà j'ai crée un formulaire en .html et un page .php qui récupère ces informations. Dans ma page php, j'exécute un programme depuis mon ordi qui prend en argument mes infos du formulaire. J'ai récupéré les résultats de ce programme dans un fichier zip.
Je veux rendre ce fichier téléchargeable. Du coup, j'ai crée un lien grâce à la balise <a>. Tout fonctionne correctement, pas de problème de ce coté là.
Mais mon problème c'est qu'une seule personne à la fois doit utiliser ma page sinon il pourrait télécharger le fichier zip de quelqu'un d'autre. Mon fichier zip a toujours le même nom outputs.zip afin que le lien de téléchargement fonctionne.
Comment je pourrais faire pour qu'une seule personne à la fois exécute mon programme????
J'ai déjà entendu parlé de la fonction uniqid qui génère un identifiant unique mais je sais pas trop comment l'utiliser ou encore si c'est bien adapté à ma situation.
Merci d'avance pour ceux qui peuvent m'aider !
Voilà j'ai crée un formulaire en .html et un page .php qui récupère ces informations. Dans ma page php, j'exécute un programme depuis mon ordi qui prend en argument mes infos du formulaire. J'ai récupéré les résultats de ce programme dans un fichier zip.
Je veux rendre ce fichier téléchargeable. Du coup, j'ai crée un lien grâce à la balise <a>. Tout fonctionne correctement, pas de problème de ce coté là.
Mais mon problème c'est qu'une seule personne à la fois doit utiliser ma page sinon il pourrait télécharger le fichier zip de quelqu'un d'autre. Mon fichier zip a toujours le même nom outputs.zip afin que le lien de téléchargement fonctionne.
Comment je pourrais faire pour qu'une seule personne à la fois exécute mon programme????
J'ai déjà entendu parlé de la fonction uniqid qui génère un identifiant unique mais je sais pas trop comment l'utiliser ou encore si c'est bien adapté à ma situation.
Merci d'avance pour ceux qui peuvent m'aider !
A voir également:
- PHP utilisation une personne à la fois ????
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Easy php - Télécharger - Divers Web & Internet
- Impossible d'utiliser ce numéro de téléphone pour la validation. - Forum Gmail
- La ressource demandée est en cours d'utilisation - Forum Téléphones & tablettes Android
13 réponses
Re
Désolé du retard à répondre ..
Je rejoins tout à fait Azraka ..
Ton application actuelle n'est qu'une ébauche, une maquette, du traitement , et ce n'est certainement pas en bricolant à partir d'elle que tu résoudras ton problème ..
Tu dois refaire entièrement ton analyse, en repartant des fondamentaux de la logique du système , et ensuite récupérer ce qui est utile et qui fonctionne ..
Quelques réflexions ou pistes :
1// tu n'as pas à considérer "une ou deux" personnes en même temps, mais zéro ou plusieurs , et de nature différente ...
Une "personne" est soit un simple visiteur, non intéressé par ton analyse de fichier, soit un client ( qui va passer "commande" )
Enfin un client peut passer plusieurs commandes ..
2// ton serveur affiche pour chacun des pages web différentes et imperméables entre elles, même si le contenu est éventuellement identique.
Ce ne peut être la même page pour un visiteur, ou un client qui passe commande, ou qui en reçoit le résultat. Il y a donc sans doute du PHP derrière cela
Ce n'est pas sain d'envoyer la même page à tous, et en particulier d'office le lien de téléchargement non personnalisé, pour une analyse qui n'existe peut être pas encore
3// ton serveur est-il ton Mac ( en réseau local, ou public ? ), ou un serveur Web ?
4// la première chose à déterminer, c'est si ton programme d'analyse peut traiter plusieurs demandes en même temps, donc en ligne
Si non : il va falloir faire patienter tes clients, et éventuellement leur demander de revenir, ou leur envoyer ensuite le résultat , donc faire du stockage en base de données ou page htm..
5// ton programme d'analyse peut il fonctionner sur un site web, ou seulement sur ton Mac ?
6// tu as nécessairement affaire à plusieurs fichiers à analyser, simultanément ou non, donc à plusieurs résultats, et il faudra sans doute les stocker quelque part, avant et après traitement
7// ensuite ils sont personnalisés, et ne peuvent être récupérés que par leur propriétaire, qu'il faut donc identifier lors de la commande
Pour les personnaliser, il faut les "rattacher" à quelque identifiant convenable :
- soit l'identifiant ou mot de passe ou e-mail ou IP du client
- soit, pourquoi pas, le nom du fichier à analyser : pourquoi ne pas renvoyer dans un .zip à la fois le fichier envoyé , et l'analyse qui lui correspond, avec un nom reprenant celui du fichier de départ ?
L'identifiant est nécessaire pour renvoyer le résultat personnalisé au "bon" propriétaire, en le rendant invisible aux autres
8// enfin, l'effacement systématique du fichier analyse après téléchargement n'est pas, à mon avis, une bonne idée :
- tu peux avoir à faire un contrôle ou vérification a postériori
- tu peux avoir une contestation ultérieure du client
- tu peux avoir besoin d'un historique des traitements ..
Bien sûr les mots "client" et "commande" ne sont ici que des images de principe.
Je pense que tu dois te mettre avant toute chose devant une grande feuille de papier, et dessiner la logique du système ( appelle cela comme tu veux, organigramme, ordinogramme, logigramme, peu importe .. ) et tester minutieusement la logique en fonction des renseignements que tu possèdes, du but recherché , et des séquences successives dans le temps ..
Tu n'en dis pas assez pour que je puisse aller plus loin, et de toute façon ce n'est qu'un simple avis .. Il y a sans doute de nombreuses solutions possibles, plus ou moins "économiques" ..
Et j'en oublie certainement ..
Mais je pense que tu vas avoir des surprises ..
N'hésite pas à te rapprocher de ton responsable de projet, lui poser les bonnes questions , et lui faire tes suggestions ..
C'est un comportement tout à fait "normal" , et même souhaitable, de la part d'un stagiaire ..
Bon courage ..
A te lire éventuellement ..
A+
Nyctaclope
Désolé du retard à répondre ..
Je rejoins tout à fait Azraka ..
Ton application actuelle n'est qu'une ébauche, une maquette, du traitement , et ce n'est certainement pas en bricolant à partir d'elle que tu résoudras ton problème ..
Tu dois refaire entièrement ton analyse, en repartant des fondamentaux de la logique du système , et ensuite récupérer ce qui est utile et qui fonctionne ..
Quelques réflexions ou pistes :
1// tu n'as pas à considérer "une ou deux" personnes en même temps, mais zéro ou plusieurs , et de nature différente ...
Une "personne" est soit un simple visiteur, non intéressé par ton analyse de fichier, soit un client ( qui va passer "commande" )
Enfin un client peut passer plusieurs commandes ..
2// ton serveur affiche pour chacun des pages web différentes et imperméables entre elles, même si le contenu est éventuellement identique.
Ce ne peut être la même page pour un visiteur, ou un client qui passe commande, ou qui en reçoit le résultat. Il y a donc sans doute du PHP derrière cela
Ce n'est pas sain d'envoyer la même page à tous, et en particulier d'office le lien de téléchargement non personnalisé, pour une analyse qui n'existe peut être pas encore
3// ton serveur est-il ton Mac ( en réseau local, ou public ? ), ou un serveur Web ?
4// la première chose à déterminer, c'est si ton programme d'analyse peut traiter plusieurs demandes en même temps, donc en ligne
Si non : il va falloir faire patienter tes clients, et éventuellement leur demander de revenir, ou leur envoyer ensuite le résultat , donc faire du stockage en base de données ou page htm..
5// ton programme d'analyse peut il fonctionner sur un site web, ou seulement sur ton Mac ?
6// tu as nécessairement affaire à plusieurs fichiers à analyser, simultanément ou non, donc à plusieurs résultats, et il faudra sans doute les stocker quelque part, avant et après traitement
7// ensuite ils sont personnalisés, et ne peuvent être récupérés que par leur propriétaire, qu'il faut donc identifier lors de la commande
Pour les personnaliser, il faut les "rattacher" à quelque identifiant convenable :
- soit l'identifiant ou mot de passe ou e-mail ou IP du client
- soit, pourquoi pas, le nom du fichier à analyser : pourquoi ne pas renvoyer dans un .zip à la fois le fichier envoyé , et l'analyse qui lui correspond, avec un nom reprenant celui du fichier de départ ?
L'identifiant est nécessaire pour renvoyer le résultat personnalisé au "bon" propriétaire, en le rendant invisible aux autres
8// enfin, l'effacement systématique du fichier analyse après téléchargement n'est pas, à mon avis, une bonne idée :
- tu peux avoir à faire un contrôle ou vérification a postériori
- tu peux avoir une contestation ultérieure du client
- tu peux avoir besoin d'un historique des traitements ..
Bien sûr les mots "client" et "commande" ne sont ici que des images de principe.
Je pense que tu dois te mettre avant toute chose devant une grande feuille de papier, et dessiner la logique du système ( appelle cela comme tu veux, organigramme, ordinogramme, logigramme, peu importe .. ) et tester minutieusement la logique en fonction des renseignements que tu possèdes, du but recherché , et des séquences successives dans le temps ..
Tu n'en dis pas assez pour que je puisse aller plus loin, et de toute façon ce n'est qu'un simple avis .. Il y a sans doute de nombreuses solutions possibles, plus ou moins "économiques" ..
Et j'en oublie certainement ..
Mais je pense que tu vas avoir des surprises ..
N'hésite pas à te rapprocher de ton responsable de projet, lui poser les bonnes questions , et lui faire tes suggestions ..
C'est un comportement tout à fait "normal" , et même souhaitable, de la part d'un stagiaire ..
Bon courage ..
A te lire éventuellement ..
A+
Nyctaclope
Merci beaucoup tout le monde !
J'ai réfléchi à ce que vous m'avez dit et j'ai modifié ma façon de penser.
Du coup, j'ai fini par réussir ce que je voulais faire.
Merci encore =)
J'ai réfléchi à ce que vous m'avez dit et j'ai modifié ma façon de penser.
Du coup, j'ai fini par réussir ce que je voulais faire.
Merci encore =)
salut,
plutot que de bloquer la page pour qu'une seule personne à la fois y soit, je te conseil plutôt de générer des .zip nommés (par exemple "outputs_NOMUTILISATEUR.zip"), tu récupère le nom d'utilisateur pour généré ton lien en fonction de lui. par exemple :
plutot que de bloquer la page pour qu'une seule personne à la fois y soit, je te conseil plutôt de générer des .zip nommés (par exemple "outputs_NOMUTILISATEUR.zip"), tu récupère le nom d'utilisateur pour généré ton lien en fonction de lui. par exemple :
<a href="outputs_<?php echo $nom_utilisateur ; ?>.zip"> ...</a>
Mais de cette façon, mon lien ne va plus être valide puisqu'il se nomme outputs.zip, non??
Et puis, les personnes ne se connectent pas pour utiliser le programme donc je n'est pas de nom d'utilisateur.
Après si je peux trouver une solution pour que plusieurs personne y soit moi sa me va, mais je vois pas trop comment faire.
Et puis, les personnes ne se connectent pas pour utiliser le programme donc je n'est pas de nom d'utilisateur.
Après si je peux trouver une solution pour que plusieurs personne y soit moi sa me va, mais je vois pas trop comment faire.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
"le fichier zip de quelqu'un d'autre" : donc ton fichier est personnalisé ..
Comment peux tu le personnaliser si tu n'identifies pas l'utilisateur ?
Et comment identifier l'utilisateur, puisque tu ne sais pas s'il va être intéressé par ton "programme" ? ("les personnes ne se connectent pas pour utiliser le programme")
Tu ne peux pas créer d'avance quelque chose de personnalisé pour quelqu'un dont tu ignores le souhait, ou alors ton fichier est le même pour tout le monde, donc pas personnalisé ..
Ce n'est pas très clair, ou il manque quelque chose dans la chaîne logique ..
Pourquoi pas , s'il est intéressé, faire "commander" ton fichier par l'utilisateur qui laisse son e-mail ..
Ensuite tu envoies le fichier sur dl.free.fr en faisant envoyer le lien par mail au demandeur ? .. Mais ce sera peut être difficile à faire en "automatique" ..
Mais j'ai sans doute mal compris ce que tu veux faire ..
A+
Nyctaclope
Le plus joli des poèmes de la mathématique : e^(i.PI)=i^2
trois nombres "sacrés" d'horizons différents qui se donnent la main ...
"le fichier zip de quelqu'un d'autre" : donc ton fichier est personnalisé ..
Comment peux tu le personnaliser si tu n'identifies pas l'utilisateur ?
Et comment identifier l'utilisateur, puisque tu ne sais pas s'il va être intéressé par ton "programme" ? ("les personnes ne se connectent pas pour utiliser le programme")
Tu ne peux pas créer d'avance quelque chose de personnalisé pour quelqu'un dont tu ignores le souhait, ou alors ton fichier est le même pour tout le monde, donc pas personnalisé ..
Ce n'est pas très clair, ou il manque quelque chose dans la chaîne logique ..
Pourquoi pas , s'il est intéressé, faire "commander" ton fichier par l'utilisateur qui laisse son e-mail ..
Ensuite tu envoies le fichier sur dl.free.fr en faisant envoyer le lien par mail au demandeur ? .. Mais ce sera peut être difficile à faire en "automatique" ..
Mais j'ai sans doute mal compris ce que tu veux faire ..
A+
Nyctaclope
Le plus joli des poèmes de la mathématique : e^(i.PI)=i^2
trois nombres "sacrés" d'horizons différents qui se donnent la main ...
En faite, je suis en stage, et on me demande de mettre en ligne en intranet un programme qu'ils ont déjà crée. C'est pour cela que j'ai crée une interface web.
Mais j'ai qu'un fichier zip qui sort à la fin du programme: outputs.zip qu'ils peuvent télécharger avec le lien que j'ai crée (balise <a> en html)
Du coup, les utilisateurs n'ont pas besoin de se connecter à mon interface, ils sont libre de l'utiliser quand ils le veulent mais si deux personnes commencent en même temps mais que l'un termine un peu avant l'autre, il va récupérer les résultats de l'autres et les supprimer.
Désolé si je n'ai pas été très claire. J'espère que vous comprenez mieux mon problème ! =)
Mais j'ai qu'un fichier zip qui sort à la fin du programme: outputs.zip qu'ils peuvent télécharger avec le lien que j'ai crée (balise <a> en html)
Du coup, les utilisateurs n'ont pas besoin de se connecter à mon interface, ils sont libre de l'utiliser quand ils le veulent mais si deux personnes commencent en même temps mais que l'un termine un peu avant l'autre, il va récupérer les résultats de l'autres et les supprimer.
Désolé si je n'ai pas été très claire. J'espère que vous comprenez mieux mon problème ! =)
Petit précision en plus: lors du formulaire ils entrent des fichiers que le programme va analyser.
Du coup, ils n'ont pas les même résultats selon la manip et la personne.
Du coup, ils n'ont pas les même résultats selon la manip et la personne.
en fait tu as plusieurs solutions.
si c'est toi qui développe le programme, tu peux lui passer le nom d'utilisateur en paramètre lors de son appel, et le programme génère le fichier. Et comme tu sais de quel manière le nom est généré, tu peux créer ton lien dynamiquement pour chaque utilisateur.
si tu utilise un programme externe, il faut que tu fasse un bat entre les deux qui renomera le zip pour créer le lien. Et ensuite c'est pareil.
enfin si réellement tu veux bloquer l'accès à un utilisateur, tu peux rajouter une requete qui indiquera à la base de donnée qu'un utilisateur est en train de télécharger le fichier, et donc quand les autres utilisateurs viendront sur la page, en en-tête tu regarde d'abord dans ta bdd si quelqu'un est déjà connecté, et si oui tu redirige vers une autre page. Il faut aussi que lorsque l'utilisateur à téléchargé le fichier ou quitter la page, tu fasse une requête qui l'indiquera ensuite. (il faudra palier au problème de la personne qui reste sur la page et celui qui quitte le navigateur quand il est sur ta page)
si c'est toi qui développe le programme, tu peux lui passer le nom d'utilisateur en paramètre lors de son appel, et le programme génère le fichier. Et comme tu sais de quel manière le nom est généré, tu peux créer ton lien dynamiquement pour chaque utilisateur.
si tu utilise un programme externe, il faut que tu fasse un bat entre les deux qui renomera le zip pour créer le lien. Et ensuite c'est pareil.
enfin si réellement tu veux bloquer l'accès à un utilisateur, tu peux rajouter une requete qui indiquera à la base de donnée qu'un utilisateur est en train de télécharger le fichier, et donc quand les autres utilisateurs viendront sur la page, en en-tête tu regarde d'abord dans ta bdd si quelqu'un est déjà connecté, et si oui tu redirige vers une autre page. Il faut aussi que lorsque l'utilisateur à téléchargé le fichier ou quitter la page, tu fasse une requête qui l'indiquera ensuite. (il faudra palier au problème de la personne qui reste sur la page et celui qui quitte le navigateur quand il est sur ta page)
C'est une programme externe ce n'est pas moi qui l'a crée. Donc je dois faire un bat?
Qu'est ce que tu appelle un bat? --"
Qu'est ce que tu appelle un bat? --"
et bien en fait tu appel ton executable depuis ton code. je ne sais pas si t'es sous linux ou windows, on va dire windows.
en gras un bat et comme un executable mais dont tu peux lire du contenu (tu l'édite avec le bloc note...essaye un .exe c'est pas pareil ^^)
tu peux regarder ce tuto qui est plutot pas mal :
https://openclassrooms.com/forum/sujet/big-tuto-renovellement-du-tutoriel-ms-dos-et-batch-14132
bne soirée ;)
en gras un bat et comme un executable mais dont tu peux lire du contenu (tu l'édite avec le bloc note...essaye un .exe c'est pas pareil ^^)
tu peux regarder ce tuto qui est plutot pas mal :
https://openclassrooms.com/forum/sujet/big-tuto-renovellement-du-tutoriel-ms-dos-et-batch-14132
bne soirée ;)
Merci je vais lire le tutoriel ! =)
J'utilise un mac et mon programme est écrit en shell, je l'exécute de ma page php grâce à la fonction system().
Je reviendrai si j'ai des questions
Bonne soirée
J'utilise un mac et mon programme est écrit en shell, je l'exécute de ma page php grâce à la fonction system().
Je reviendrai si j'ai des questions
Bonne soirée
ah ok ! bah si t'es sur mac il faudra surement que tu cherche un autre tuto je pense car les commandes sont différentes (je ne connais pas mac). Par contre le principe reste le même =)
Bonjour,
Je pense que le problème vient du fonctionnement de base de l'application.
Si chaque fichier est propre à une personne mais que tu n'as aucun moyen de les distinguer et les associer à la bonne personne, l'application est mal faite !
En soit faire ce que tu veux n'est pas compliqué, mais si tu n'as pas la main sur le fichier et que tu ne sais même pas à qui il est destinée, ça va être très compliqué !
Je pense que le problème vient du fonctionnement de base de l'application.
Si chaque fichier est propre à une personne mais que tu n'as aucun moyen de les distinguer et les associer à la bonne personne, l'application est mal faite !
En soit faire ce que tu veux n'est pas compliqué, mais si tu n'as pas la main sur le fichier et que tu ne sais même pas à qui il est destinée, ça va être très compliqué !
concernant 3// et 5// c'est Intranet , OK j'avais lu trop vite ..
A+