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 :

Accès répertoire selon réponse dans formulaire.


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Points : 59
    Points
    59
    Par défaut Accès répertoire selon réponse dans formulaire.
    Bonsoir,

    Je m'en viens vers vous, car je n'ai pas trouvé de réponse à mon problème sur Google.

    Je cherche une solution pour ouvrir un répertoire (et son fichier index.htm) en fonction de la réponse fournie dans un champ du formulaire.
    Exemple, si la réponse dans le champ est par exemple "XYZ", alors ouvrir le répertoire http://domaine.com/XYZ (index.htm).
    L'action "Post" ne permettant que de préciser une adresse fixe !

    Merci pour votre aide.

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    Quelle est la difficulté exactement ?

    Il faut récupérer la saisie de l'utilisateur (via $_POST['champ_recherhe'] par exemple). Et ouvrir le dossier correspondant.

    Pour lire un dossier ceci est très bien documenté sur la documentation officielle : http://fr.php.net/opendir

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    si c'est un fichier hmtl que tu ouvres après l'action est ce que tu veux parler d'une redirection de page suivant le champ du formulaire?

    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     header('Location: /repertoire/mapage.php');
    peux tu reformuler ton besoin?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Points : 59
    Points
    59
    Par défaut Reformulation...
    Bon, mon besoin :
    1) Un formulaire qui demande à un client son nom.
    2) ouvrir le répertoire "Nom" (chaque client ayant son propre répertoire), et afficher par défaut le fichier Index.htm.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Citation Envoyé par gototog Voir le message
    si c'est un fichier hmtl que tu ouvres après l'action est ce que tu veux parler d'une redirection de page suivant le champ du formulaire?

    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     header('Location: /repertoire/mapage.php');
    peux tu reformuler ton besoin?
    Bonsoir,

    utilise la solution proposé par gototog, ton formulaire renvoi vers traitement.php,

    dans traitement.php tu regarde le choix du l'utilisateur et tu utilise la fonction header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: /' . $_POST['dossier'] . '/index.html');
    par contre cela n'empêche en aucun cas un utilisateur d'accéder au dossier de n'importe quel autre utilisateur.
    une réponse vous a permis d'avancer ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Exia93 Voir le message
    Bonsoir,

    utilise la solution proposé par gototog,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: /' . $_POST['dossier'] . '/index.html');
    par contre cela n'empêche en aucun cas un utilisateur d'accéder au dossier de n'importe quel autre utilisateur.
    Bon, j'ai bien essayé cette solution, mais sans succès.
    Sur le net, il est dit qu'il faut exécuter cette commande en tout premier dans un fichier. J'ai donc essayé avec un fichier html, un fichier php, et un fichier vide avec pour seule commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <?php
    header('Location: /' . $_POST['dossier'] . '/index.html');;
      ?>
    Dans le trois cas, j'obtiens un message d'erreur :
    "Warning: Cannot modify header information - headers already sent by (output started at /mnt/107/sdb/d/a..."

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Utilise tu ce fichier avec la fonction include() ou l'envoi de ton formulaire t'envoi vers cette page ?
    une réponse vous a permis d'avancer ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Exia93 Voir le message
    Utilise tu ce fichier avec la fonction include() ou l'envoi de ton formulaire t'envoi vers cette page ?
    Non, le formulaire contient un champ unique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form method="post" action="/client/index.php">
    Nom :  <input name="Client" type="text" size="21" maxlength="20" />
    <input type="submit" value="OK">
    et dans le fichier /client/index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    header('Location: /' . $_POST['Client'] . '/index.html');
    ?>
    Mais c'est ce dernier qui retourne un message d'erreur.

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Que contient le fichier /client/index.php ?
    une réponse vous a permis d'avancer ?

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Exia93 Voir le message
    Que contient le fichier /client/index.php ?
    Deux versions testées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    header('Location: /' . $Client . '/index.html');
    ?>
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $rep=$_POST["Client"]; 
    header('Location: /' . $rep . '/index.html');
    echo $rep;
    echo $Client;
    ?>

  11. #11
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    L'erreur que tu as :
    "Warning: Cannot modify header information - headers already sent by (output started at /mnt/107/sdb/d/a..."
    est extrêmement connue et documentée sur nos forums ou globalement sur le Web.

    Le problème est que tu utilises la fonction header() à un moment, alors que tu as déjà commencé à écrire (~envoyer) du texte au navigateur : avant d'utiliser header() il ne faut pas avoir envoyé du texte au navigateur (pas de <html>, pas d'espace rien). Ton code doit être remanié.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par ThomasR Voir le message
    Bonsoir,


    Le problème est que tu utilises la fonction header() à un moment, alors que tu as déjà commencé à écrire (~envoyer) du texte au navigateur : avant d'utiliser header() il ne faut pas avoir envoyé du texte au navigateur (pas de <html>, pas d'espace rien). Ton code doit être remanié.
    Whap, génial, on progresse...
    En effet, après avoir retiré l'espace qui se trouvait devant le " <?php", je n'ai plus de message d'erreur... mais la page à ouvrir reste introuvable. Il va à présent falloir travailler sur le chemin d'accès !
    Merci déjà pour ce premier pas !

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 67
    Points : 59
    Points
    59
    Par défaut Ca fonctionne !!!
    Hourra, voici la réponse finale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    header("Location: " . $Client . "/index.html"); 
    ?>
    Merci à vous tous !

  14. #14
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Si c'est un nouveau fichier $Client devrait normalement être vide vue que tu ne l'initialise pas ni avec une valeur quelconque ni avec les arguments reçu de ton formulaire.

    est-tu sur que sa fonctionne comme tu le voudrait ?
    une réponse vous a permis d'avancer ?

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

Discussions similaires

  1. lister répertoire selon sélection dans une listbox
    Par gorgoroth dans le forum Langage
    Réponses: 12
    Dernier message: 03/06/2008, 18h06
  2. Formulaire+Javascript : réponses dans une nouvelle page
    Par matperino dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/12/2006, 10h11
  3. Réponses: 7
    Dernier message: 26/11/2006, 06h35
  4. affichage des champs selon critère dans un formulaire
    Par emmablue dans le forum Access
    Réponses: 5
    Dernier message: 31/07/2006, 10h39
  5. Affichage d'un résultat selon requête dans formulaire avec date
    Par SMPGSARL dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 06/07/2006, 15h52

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