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 :

Récupération avec $_GET dans un formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Par défaut Récupération avec $_GET dans un formulaire
    hello !

    J'ai une liste de dossiers/fichiers générée par php.

    Ils sont classés dans un tableau avec pour chaque ligne un formulaire (seul le bouton supprimer est visible) et le nom de l’élément.

    Lorsque que je clique sur supprimer, logiquement l’élément devrais être effacé.

    Seulement cela ne fonctionne pas. :



    Je vous serais gré si vous pouviez me déceler l'erreur qui se glisse sous mon nez.



    Voila la fonction :

    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
    function list_fich($dir, $chemin)
    {
    	foreach($dir as $lien)
    	{
    		echo '<table><td><form method="post" action="liste_archive_admin.php">';
    		echo "<input type=\"hidden\" name =\"lien\" value=\"$lien\">";
    		echo "<input type=\"hidden\" name=\"chemin\" value=\"$chemin\" >";
    		echo "<input type=\"submit\" name=\"bouton\" value=\"supprimer\" onclick=\"return confirmer()\"></td>";
    		if(is_file($lien) == true)
    		{
    				echo "<td><a name=\"lien\" href=\"liste_archive_admin.php?path=$path/$lien\" onclick=\"javascript:ouvre('$_GET[path]/$lien'); return false\" >$lien</a></td></table>";
    		}
    		else
    		{
    				echo "<td><a name=\"lien\" href=\"#\" onclick=\"javascript:ouvre('$_GET[path]/$lien'); return false\" >$lien</a></td></table>";
    		}
    		echo "</form>";
     
     
    		if( $_POST["lien"]== "$lien")
    		{
    			unlink("$_POST[chemin]/$_POST[lien]");
     
    			echo "<script>window.location.replace(\"liste_archive_admin.php\")</script>";
    		}
    	}
    }

    A savoir que quand je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo"$_POST[chemin]/$_POST[lien]";
    Cela affiche bien le chemin ET le nom de l'élément après click sur le bouton supprimer.


    Pour info supplémentaire, j'appelle la fonctionn avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(!empty($_GET["path"]))
    {
    	$dossier = scandir($_GET["path"]) or die("Le dossier est vide.");
    	echo "<h2>Liste des documents accessibles dans ce dossier :</h2>";
    	unset($dossier[0], $dossier[1]);
    	list_fich($dossier, $_GET["path"]);
    }
     
     
    $_GET["path"] //contenant le chemin vers $dossier.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    1 - tu as un problème de sécurité : tu laisses l'utilisateur fournir n'importe quel chemin sur le serveur, lister les fichier et éventuellement les supprimer
    2 - tu as un problème de logique : tu listes les fichiers et commence à les afficher, si dans le lot, il y en a un a supprimer, tu le supprimes et tu changes de page, donc tout le début n'a servi à rien.
    3 - soit plus précis que "ça ne fonctionne pas" ; par exemple est-ce que la redirection se fait mais pas la suppression ? Tu as essayé de retirer la redirection pour voir s'il y avait une erreur ? Tu as affiché toutes les erreurs PHP ?

    Sinon il faut indiquer le chemin entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $chemin . DIRECTORY_SEPARATOR . $fichier);
    Je mets bien $chemin et $fichier car il n'est pas question de supprimer des éléments sans qu'il y ait un contrôle de sécurité qu'il te reste à écrire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Par défaut
    1 - tu as un problème de sécurité : tu laisses l'utilisateur fournir n'importe quel chemin sur le serveur, lister les fichier et éventuellement les supprimer
    Seul certaines personne agréés auront accès a cette fonctionnalité, pas de soucis la dessus.

    2 - tu as un problème de logique : tu listes les fichiers et commence à les afficher, si dans le lot, il y en a un a supprimer, tu le supprimes et tu changes de page, donc tout le début n'a servi à rien.
    Mon but est de supprimer un dossier/fichier et de recharger la page: elle s’appelle elle même.

    3 - soit plus précis que "ça ne fonctionne pas" ;
    ok : Ca fonctionne pas tout a fait.

    je dec'.

    par exemple est-ce que la redirection se fait mais pas la suppression ? Tu as essayé de retirer la redirection pour voir s'il y avait une erreur ?
    Lorsque je clique sur le bouton supprimer php est sensé supprimer le dossier/fichier lié puis recharger la page.

    En pratique, php recharge bien la page mais ne supprime pas l’élément. :/



    J'ai déjà réussi à supprimer des fichiers avec cette fonction :
    Mon fichier .php était alors dans un dossier et ne listait que les éléments du même dossier. Je n'utilisait pas de paramètre url.

    C'est dès lors que j'ai voulu utiliser le paramètre path et $_GET que j'ai du préciser le chemin du dossier. (puisque évidement le fichier .php n'est plus dans le dossier mais dans un dossier parent).

    Tu as affiché toutes les erreurs PHP ?
    Dans mon idiotie j'ai oublié que j'avais mit une ligne pour retirer les erreurs :/
    J’essaie de réparer les 2 petites erreurs que j'ai déjà.

    Merci de ta réponse.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    2 - oui donc la suppression n'a rien à faire dans la boucle qui liste les fichiers

    Tu as essayé en mettant le chemin complet ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Par défaut
    2 - oui donc la suppression n'a rien à faire dans la boucle qui liste les fichiers
    Pas faux.


    J'ai utilisé la fonction avec le chemin complet :
    Nom : fonction list_fich.png
Affichages : 125
Taille : 39,6 Ko

    Rien a faire, il me recharge la page mais ne fait rien d'autre.
    Il n'affiche pas d'erreur non plus.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut définir $chemin et $lien comme étant les données venant de $_POST dans le unlink.

    Et comme je t'ai dis, pour debuguer, retire la redirection et affiche toutes les erreurs PHP : unlink() renvoit des warning.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. récupération de données dans un formulaire
    Par zougna dans le forum IHM
    Réponses: 4
    Dernier message: 14/05/2007, 11h18
  2. Problème avec Select dans le formulaire
    Par jejefm dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2007, 10h34
  3. Réponses: 20
    Dernier message: 24/03/2007, 21h14
  4. [MySQL] Récupération de données dans un formulaire via un select
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/12/2006, 18h41
  5. Récupération de variable dans un Formulaire
    Par dunbar dans le forum Langage
    Réponses: 5
    Dernier message: 30/11/2006, 21h00

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