A propos du script pour forcer un téléchargement

Eléphant du PHP | 355 Messages

22 janv. 2006, 07:19

Bonjour à tous :wink:

Je viens de tester se script :
http://www.destrucsaweb.com/ressources/ ... oto_45.php
J’ai donc créer les deux fichiers que j’ai placer dans le même répertoire j’ai placer le fichier à télécharger mais le lien renvoi une page d’erreur, voici mon lien:

Code : Tout sélectionner

echo "<a href=\telecharger.php?Fichier_a_telecharger=bd.sql&chemin=\'>Télécharger</a>";
J’ai juste modifier le chemin placer le nom du fichier à télécharger, quelqu’un voie-t-il une erreur ?

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

22 janv. 2006, 09:31

Tu as visiblement des backslashes en trop... Tu devrais utiliser des guillemets simples, et n'utiliser le \ que devant un \ ou '
echo '<a href="telecharger.php?Fichier_a_telecharger=bd.sql&chemin=">Télécharger</a>';
D'ailleurs tu aurais pu tout aussi bien faire

Code : Tout sélectionner

?><a href="telecharger.php?Fichier_a_telecharger=bd.sql&chemin=">Télécharger</a><?php

Eléphant du PHP | 355 Messages

22 janv. 2006, 09:40

Bonjour et merci beaucoup :wink:

Je suis obliger de laisser le lien entre les balises php par ce que mon lien en faite s'est un lien dynamique:
<?php 
$directories = glob("sauvegardes/*.*"); 
foreach ($directories as $dir) 
{ 
   echo "<a href="Telecharger.php?Fichier_a_telecharger=$dir">$dir</a><br>"; 
} 
?>
J'ai fait la modif que vous m'avez conseiller cela ne change rien.

Mammouth du PHP | 19672 Messages

22 janv. 2006, 11:29

phpdog, tu ne réfléchis pas beaucoup :-k

Regarde ton code trente secondes : comment distingues-tu ce qui est PHP de ce qui est HTML ? Tu essayes d'aller vite et du coup tu sautes des étapes essentielles.
<?php
$directories = glob("sauvegardes/*.*");
foreach ($directories as $dir)
{
   echo "<a href=\"Telecharger.php?Fichier_a_telecharger=". $dir ."\">". $dir ."</a><br>\n";
}
?>
Regarde bien ce que donne la coloration syntaxique avec ce code et compare avec ce que tu avais mis plus haut.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 355 Messages

22 janv. 2006, 11:57

Bonjour Cyrano et merci beacoup :wink:

Oui quel négligence bête :oops:

J'ai fait le rectification mais sa ne fonctionne toujour pas.

Mammouth du PHP | 19672 Messages

22 janv. 2006, 12:00

Il faut deviner la suite :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 355 Messages

22 janv. 2006, 12:02

Ben je sais pas quoi dire de plus, quand je clique sur le lien rien ne se passe.

Mammouth du PHP | 19672 Messages

22 janv. 2006, 12:27

Reprennons : tu t'attends à ce qu'il se passe quoi ?

Pour qu'il se passe ce que tu attends, quelle instruction doit être exécutée ?

S'il ne se passe rine, que faut-il vérifier ?
- Messages d'erreur ;
- Afficher les variables pour vérifier qu'elles ont bien le contenu voulu;

Le débuggage suit une logique. Il faut isoler un problème : si on ne regarde pas au bon endroit, on ne verra pas l'erreur. Tout au long de ton code, il y a des structures de contrôle, des instructions. À un moment donné, une instruction ne s'exécute pas comme elle devrait. Il faut donc en comprendre le pourquoi. Il faut donc ajouter des tests, ajouter des messages personnalisés.

Exemple : au lieu de simplement faire:
if($condition = "xyz")
{
    instruction("abc");
}
else
{
    instruction(0);
}
Ajoute des messages à afficher:
if($condition = "xyz")
{
    instruction("abc");
    echo("<p>Exécution de l'instruction avec le paramètre \"abc\"</p>\n");
}
else
{
    instruction(0);
    echo("<p>La condition ". $condition ." ne répond pas au schéma \"xyz\" , exécution de l'instruction avec le paramètre \"0\"</p>\n");
}
En voyant ce qui est affiché, tu peux déterminer si il y a une erreur et dans ce cas remonter à la source de l'erreur.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 355 Messages

22 janv. 2006, 12:42

J'attent que le fichier se lance en téléchargement quand je clique sur le lien.


Merci pour se cours de debugage, mais sa reste encore flou pour moi.

Mammouth du PHP | 19672 Messages

22 janv. 2006, 12:44

J'ai bien compris, mais si ça ne se lance pas, t'es-tu demandé pourquoi ? Quelles est LA question à te poser ?
- Est-ce que le lien pointe dans la bonne direction ?
- Comment le vérifier ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 355 Messages

22 janv. 2006, 12:48

Le lien me semble bon dans la barre d'adresse.

Code : Tout sélectionner

http://127.0.0.1/telecharger.php?Fichier_a_telecharger=sauvegardes/sauvegarde-forum-14-01-2006.sql"

Mammouth du PHP | 19672 Messages

22 janv. 2006, 12:51

Bon, ça, c'est l'adresse d'une page : avec ce paramètre, quelle instruction doit être exécutée pour lancer le téléchargement ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 355 Messages

22 janv. 2006, 12:56

Je ne sais pas.

Mammouth du PHP | 19672 Messages

22 janv. 2006, 13:05

Prenons l'url mentionnée:

Code : Tout sélectionner

http://127.0.0.1/telecharger.php?Fichier_a_telecharger=sauvegardes/sauvegarde-forum-14-01-2006.sql"
La page ouverte est "telecharger.php" : il doit se passer quoi dans ce fichier ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 355 Messages

22 janv. 2006, 13:08

Ah ok je pige, le script sor donc de la page, mais je ne voie pas se qui fait sa.