Page 1 sur 2

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

Posté : 22 janv. 2006, 07:19
par phpdog
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 ?

Posté : 22 janv. 2006, 09:31
par Hubert Roksor
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

Posté : 22 janv. 2006, 09:40
par phpdog
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.

Posté : 22 janv. 2006, 11:29
par Cyrano
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.

Posté : 22 janv. 2006, 11:57
par phpdog
Bonjour Cyrano et merci beacoup :wink:

Oui quel négligence bête :oops:

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

Posté : 22 janv. 2006, 12:00
par Cyrano
Il faut deviner la suite :?:

Posté : 22 janv. 2006, 12:02
par phpdog
Ben je sais pas quoi dire de plus, quand je clique sur le lien rien ne se passe.

Posté : 22 janv. 2006, 12:27
par Cyrano
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.

Posté : 22 janv. 2006, 12:42
par phpdog
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.

Posté : 22 janv. 2006, 12:44
par Cyrano
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 ?

Posté : 22 janv. 2006, 12:48
par phpdog
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"

Posté : 22 janv. 2006, 12:51
par Cyrano
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 ?

Posté : 22 janv. 2006, 12:56
par phpdog
Je ne sais pas.

Posté : 22 janv. 2006, 13:05
par Cyrano
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 ?

Posté : 22 janv. 2006, 13:08
par phpdog
Ah ok je pige, le script sor donc de la page, mais je ne voie pas se qui fait sa.