[PHP] Appeler un fichier

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

nonel
WRInaute impliqué
WRInaute impliqué
 
Messages: 349
Inscription: Jeu Mai 05, 2005 8:35

[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: 13847
Inscription: Mar Déc 23, 2003 9:04

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 impliqué
WRInaute impliqué
 
Messages: 349
Inscription: Jeu Mai 05, 2005 8:35

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 passionné
WRInaute passionné
 
Messages: 893
Inscription: Jeu Nov 24, 2005 19:08

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: 13847
Inscription: Mar Déc 23, 2003 9:04

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 impliqué
WRInaute impliqué
 
Messages: 349
Inscription: Jeu Mai 05, 2005 8:35

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 passionné
WRInaute passionné
 
Messages: 893
Inscription: Jeu Nov 24, 2005 19:08

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

remplace $file par $_GET[file]


e-kiwi
Modérateur
Modérateur
 
Messages: 13847
Inscription: Mar Déc 23, 2003 9:04

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: 5151
Inscription: Mer Nov 23, 2005 10:38

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 impliqué
WRInaute impliqué
 
Messages: 349
Inscription: Jeu Mai 05, 2005 8:35

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 passionné
WRInaute passionné
 
Messages: 893
Inscription: Jeu Nov 24, 2005 19:08

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 impliqué
WRInaute impliqué
 
Messages: 349
Inscription: Jeu Mai 05, 2005 8:35

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 impliqué
WRInaute impliqué
 
Messages: 349
Inscription: Jeu Mai 05, 2005 8:35

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 passionné
WRInaute passionné
 
Messages: 893
Inscription: Jeu Nov 24, 2005 19:08

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 impliqué
WRInaute impliqué
 
Messages: 349
Inscription: Jeu Mai 05, 2005 8:35

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.


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

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