[PHP] Appeler un fichier

nonel
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 350
Inscription: 5 Mai 2005

[PHP] Appeler un fichier

Message le Lun Déc 15, 2008 9:16

Bonjour,

Je désespère d'avoir une nouvelle de mon hébergeur ... pour savoir si il a modifié des paramètres récemment sur ma machine. Avant, tout marché bien.

Donc, je viens vers vous pour vos avis d'expert.


J'ai un fichier qui appelle un fichier à télécharger. Il lance le téléchargement et implémente de +1 un fichier texte (compteur).

Je suis pas un pro en php, et je n'arrive pas à bidouiller ma fonction et surtout à comprendre le message d'erreur.

Voici mon fichier download.php3
Code: Tout sélectionner
<?
$tel_file = "$file".".txt";
// --------------------------------
$fp = fopen("$tel_file","r+");
$nbtel = fgets($fp,255);
$nbtel++;
fseek($fp,0);
fputs($fp,$nbtel);
fclose($fp);
// --------------------------------
header("Location: $file".".zip");  //On redirige vers le fichier à télécharger (toujours au format ZIP!)
?>



Et voici l'erreur que me retourne le serveur.
Code: Tout sélectionner
Warning: fopen(.txt) [function.fopen]: failed to open stream: No such file or directory in /home/paysage1/domains/paysage-en-herbe.com/public_html/telechargements/textures/download.php3 on line 4

Warning: fgets(): supplied argument is not a valid stream resource in /home/paysage1/domains/paysage-en-herbe.com/public_html/telechargements/textures/download.php3 on line 5

Warning: fseek(): supplied argument is not a valid stream resource in /home/paysage1/domains/paysage-en-herbe.com/public_html/telechargements/textures/download.php3 on line 7

Warning: fputs(): supplied argument is not a valid stream resource in /home/paysage1/domains/paysage-en-herbe.com/public_html/telechargements/textures/download.php3 on line 8

Warning: fclose(): supplied argument is not a valid stream resource in /home/paysage1/domains/paysage-en-herbe.com/public_html/telechargements/textures/download.php3 on line 9

Warning: Cannot modify header information - headers already sent by (output started at /home/paysage1/domains/paysage-en-herbe.com/public_html/telechargements/textures/download.php3:4) in /home/paysage1/domains/paysage-en-herbe.com/public_html/telechargements/textures/download.php3 on line 11



Le fichier texte est belle et bien présent sur le serveur.

Merci d'avance pour votre aide.


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Lun Déc 15, 2008 9:34

>> No such file or directory

probleme de répertoire à priori. dans quel repertoire est download.php et dans quel repertoire est le txt ?

nonel
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 350
Inscription: 5 Mai 2005

Message le Lun Déc 15, 2008 10:39

e-kiwi a écrit:dans quel repertoire est download.php et dans quel repertoire est le txt ?


Le fichier php et txt sont dans le même dossier.

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Message le Lun Déc 15, 2008 11:28

Comment est initialisé la valeur $tel ?

peux tu faire un

echo $tel;
echo ";".$tel_file;

au début de ton script pour afficher la valeur de ces 2 variables

car à mon sens, ici la valeur $tel n'est pas initialisé...
c'est une valeur que tu récupères via l'url via un formulaire ?


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Lun Déc 15, 2008 11:51

rah la la j'avais pas vu ...

Warning: fopen(.txt)

ton fichier n'a pas de nom

nonel
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 350
Inscription: 5 Mai 2005

Message le Lun Déc 15, 2008 14:18

bozoleclown a écrit:Comment est initialisé la valeur $tel ?
c'est une valeur que tu récupères via l'url via un formulaire ?

Oui, la valeur est via mon URL.
Exemple : *http://...../download.php3?file=nom-du-fichier

e-kiwi a écrit:Warning: fopen(.txt)
ton fichier n'a pas de nom

Ben si.
Dans le fichier php, j'ai : $tel_file = "$file".".txt";
Non ? c'est pas ca le nom du fichier. Il le récupère via l'URL.

Le nom du fichier à télécharger et le nom du fichier texte doivent porter le même nom.

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Message le Lun Déc 15, 2008 14:20

remplace $file par $_GET[file]


e-kiwi
Modérateur
Modérateur
 
Messages: 15544
Inscription: 23 Déc 2003

Message le Lun Déc 15, 2008 14:35

ah, ton hébergeur a fait une modif oui, il a sécurisé ton serveur :) tu ne peux plus appeler une variable par $sonnom si c est une variable get, post, cookoie, ou session maintenant, tu dois utiliser les bonnes variables.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8303
Inscription: 23 Nov 2005

Message le Lun Déc 15, 2008 14:36

bozoleclown a écrit:remplace $file par $_GET[file]


Et teste-le au préalable, ce sera déjà plus propre.

Code: Tout sélectionner
if (isset($_GET['file']))
{
    $file = $_GET['file'];
    //ici ton code qui nécessite  d'avoir un fichier en paramètre
}

nonel
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 350
Inscription: 5 Mai 2005

Message le Lun Déc 15, 2008 20:05

UsagiYojimbo a écrit:Et teste-le au préalable, ce sera déjà plus propre.

Code: Tout sélectionner
if (isset($_GET['file']))
{
    $file = $_GET['file'];
    //ici ton code qui nécessite  d'avoir un fichier en paramètre
}


roooo ... ca marche !!!!

T'es un chef UsagiYojimbo

Mon code est devenu

Code: Tout sélectionner
<?
if (isset($_GET['file']))
{
    $file = $_GET['file'];
}
$tel_file = "$file".".txt";
// --------------------------------
$fp = fopen("$tel_file","r+");
$nbtel = fgets($fp,255);
$nbtel++;
fseek($fp,0);
fputs($fp,$nbtel);
fclose($fp);
// --------------------------------
header("Location: $file".".zip");  //On redirige vers le fichier à télécharger (toujours au format ZIP!)
?>


e-kiwi a écrit:ah, ton hébergeur a fait une modif oui, il a sécurisé ton serveur Smile tu ne peux plus appeler une variable par $sonnom si c est une variable get, post, cookoie, ou session maintenant, tu dois utiliser les bonnes variables

Et effectivement toi aussi tu as raison.
C'est la source du probleme ... avant le server était en registerGlobal ON
Et forcement pour plus sécurité il on mis en off.

Vous êtes tous des chefs ... merci de votre aide et de votre dévouement à tous les 3.

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Message le Lun Déc 15, 2008 21:54

En fait dans ton code, le if ne sert à rien
car s'il manque le paramètre dans l'url, le code va planter comme avant

donc soit tu enlèves le if comme tu avais avant (le $_GET en plus)
soit tu fais comme ça pour être encore plus propre


Code: Tout sélectionner
<?
if (isset($_GET['file']))
{
    $file = $_GET['file'];
    $tel_file = "$file".".txt";
    // --------------------------------
    $fp = fopen("$tel_file","r+");
    $nbtel = fgets($fp,255);
    $nbtel++;
    fseek($fp,0);
    fputs($fp,$nbtel);
    fclose($fp);
    // --------------------------------
    header("Location: $file".".zip");  //On redirige vers le fichier à télécharger (toujours au format ZIP!)
}
else{
    echo "il manque le paramètre file";
}
?>

nonel
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 350
Inscription: 5 Mai 2005

Message le Mar Déc 16, 2008 9:04

Oui effectivement, si je met pas de ELSE, mon IF sert a rien. Comme ca si y a un bug, je peux gérer un message d'erreur.

Tout fonctionne nickel.

Merci encore.

nonel
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 350
Inscription: 5 Mai 2005

Re: [PHP] Appeler un fichier

Message le Mer Mar 25, 2009 12:27

Bonjour,

Je dépoussière un peu mon topic puisque une fois de plus mon hébergeur m'a changé de machine et que je n'ai aucune réponse de sa part sur les changements qu'il aurait pu faire sur celle-ci.

Mon script précédemment cité et que je recopie ci-dessous, ne fonctionne à nouveau plus.
Lorsque je clique sur le lien pour lancer le téléchargement le fichier, il m'affiche le contenu de mon fichier PHP. Le téléchargement n'est donc pas lancé.

Code: Tout sélectionner
<?
if (isset($_GET['file']))
{
    $file = $_GET['file'];
    $tel_file = "$file".".txt";
    $fp = fopen("$tel_file","r+");
    $nbtel = fgets($fp,255);
    $nbtel++;
    fseek($fp,0);
    fputs($fp,$nbtel);
    fclose($fp);
    header("Location: $file".".zip");
}
else{
    echo "Desole, une erreur est survenue. Merci de nous contacter pour nous informer de ce probleme, que nous corrigerons dans les meilleurs delais.";
}
?>


Avez vous une solution ?
Merci d'avance.

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Re: [PHP] Appeler un fichier

Message le Mer Mar 25, 2009 12:40

quelle est l'extension du fichier ?

toujours download.php3 ?

peut-etre que ton hébergeur ne supporte plus les extensions .php3 ?
du coup essaie de passer en .php

nonel
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 350
Inscription: 5 Mai 2005

Re: [PHP] Appeler un fichier

Message le Mer Mar 25, 2009 14:53

bozoleclown a écrit:peut-etre que ton hébergeur ne supporte plus les extensions .php3 ?
du coup essaie de passer en .php


lol ... c'est ca.
Je suis tout honteux de ne pas y avoir pensé.

Merci beaucoup.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités