Include ( ) avec variable = erreur

Fermé
HKG - 4 mars 2009 à 07:03
 le père - 4 mars 2009 à 16:11
Salut les gars !

J'essaye de faire un include avec une variable dasn le contexte que, j'envoie un mail et suite à l'envoi du message au destinataire, l'utilisateur revient au profil de la personne.

Seulement, quand je fais :

include ('visitaccount.php?id='.$id.);

j'obtiens une erreur :

Warning: include(visitaccount.php?id=1) [function.include]: failed to open stream: Invalid argument in C:\Program Files\EasyPHP 2.0b1\www\fr\sendmail1.php on line 71

Warning: include() [function.include]: Failed opening 'visitaccount.php?id=1' for inclusion (include_path='.;F:/Program Files/EasyPHP 2.0b1\php5\pear\') in C:\Program Files\EasyPHP 2.0b1\www\fr\sendmail1.php on line 71

J'ai eu beau chercher sur le net, le include path, comprend pas !

Merci d'avance pour votre précieuse aide !
A voir également:

8 réponses

uraton Messages postés 73 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 29 janvier 2010 42
4 mars 2009 à 15:18
C'est ce que j'ai dit plus haut quoi ... :P il faut mettre un lien absolu si il veut avoir des paramètres en GET, et non un lien relatif ;)
1
On peut avoir des paramètres aussi bien avec un lien relatif qu'avec un lien absolu, là n'est pas la question.
Le problème est qu'il faut que ce soit une inclusion via HTTP alors qu'ici il s'agit d'une inclusion via le système de fichiers.
0
uraton Messages postés 73 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 29 janvier 2010 42
4 mars 2009 à 07:14
Enlèves le . après $id ou essaie avec des "" au lieu de ''.
0
Nan j'ai beau seulement mettre:

include ("visitaccount.php?id=1"); et ça plante. J'ai testé toutes les configurations possible de "" '' '..' etc...C'est vraiment de quoi avec le path qui marche pas, enfin je crois !

Merci !
0
uraton Messages postés 73 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 29 janvier 2010 42
4 mars 2009 à 07:40
D'apres ce que je viens de voir vite fait sur le net (il est 1h30 du mat ici au québec et je vais aller me coucher donc je ne garantis pas la véracité de les infos) si tu veux mettre des paramètres dans l'url de ton fichier, il faut que ton lien soit absolu, et non relatif ! ;)

Bonne chance ! ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour

include ('visitaccount.php?id='.$id.);
Normal que ça plante.
include, c'est fait pour inclure un fichier. Il faut lui donner un nom de fichier. Et tu n'as aucun fichier dans ton système qui a un nom qui se termine par ?id=valeur
Il ne faut pas confondre un nom de fichier avec une URL. Une URL peut se terminer par ?id=valeur, pas un nom de fichier.

Si tu veux passer des paramètres à un fichier inclus en PHP, utilise des variables globales.
0
Hein, quoi ?

D'ou tu sors cette connerie ?

C'est dingue le nombre de site que j'ai et qui ne doit pas fonctionner correctement d'après tes conneries...

include ('visitaccount.php?id='.$id);

fonctionnera très bien (attention au . après id qu'il ne fautpas mettre)

Mais je te recommande vivement un :

include_once('visitaccount.php?id='.$id);

Maintenant fait très très attention, ca peut être une faille de sécurité, surtout si ca vient d'un $_POST ou d'un $_GET

Je te conseil une petite astuce tout con si tu ne connais pas grand chose en secu et si $id ne peut pas être zero :

if (is_numeric($id))
{
include ('visitaccount.php?id='.$id);
} else {
die('hack attack');
}

Voilou !
0
D'ou tu sors cette connerie ?
Je te remercie pour ta courtoisie.

Je viens d'essayer
include "showpic.php?id=abc";

et j'ai exactement les mêmes messages d'erreur que HKG
J'ai essayé aussi
include "http://showpic.php?id=abc";

et là, OK, ça marche.

Dans le manuel de référence PHP, au chapitre sur include,
https://www.php.net/manual/fr/function.include.php
tu remarqueras qu'il y a un exemple qui précise que si le fichier est inclus par le système de fichier et non pas par HTTP, le passsage de paramètres est invalide. D'ailleurs c'est le bon sens même : la méthode GET qui permet de passer des variables par l'URL est une méthode propre au protocole HTTP.

Voilà, c'est dans le manuel de référence que je prends "mes conneries"

Pourquoi ça marche chez toi ? Parce que tu n'affiches pas les warning, c'est tout. Tu ne vois pas le message, mais l'erreur est là quand même. C'est à mon avis un des gros problème de PHP, de pouvoir cacher ces erreurs. De très nombreux programmeurs croient écrire correctement alors que leurs programmes sont remplis d'erreurs.
0
Merci de l'aide !

J'ai retesté avec :

include "http://visitaccount.php?id=abc"; par exemple et j'ai un autre message d'erreur (normal)

Warning: include() [function.include]: URL file-access is disabled in the server configuration in C:\Program Files\EasyPHP 2.0b1\www\fr\sendmail1.php on line 71

Donc ça, c'est parce que mon serveur est en local et normalement, à moins de faire la manip en local, chez un hébergeur, il devrait marcher !

Une fois héberger, j'imagine que le fait de le relier à une adresse HTTP://monsite/mapage/ comme tu as fais devrait faire marcher le include ( ); ...

Merci de m'éclairer ! Au fait j'avais jeté un coup d'œil à l'exemple avant de poster ici, mais n'avait pas vu l'ambiguïté
0
Si c'est en local, tu peux très bien modifier la config de PHP pour avoir le droit à l'accès par URL. Au contraire, c'est quand tu seras chez un hébergeur que tu risques d'avoir des problèmes, pas évident qu'il te laisse inclure des fichiers venus d'ailleurs !
Mais Es-tu sûr d'avoir besoin de cet accès par URL ? Le fichier que tu veux inclure vient vraiment d'un autre site que le tien ? Parce que s'il vient du même site, c'est absurde de passer par HTTP. Et même site ou pas, c'est beaucoup plus lent.
0

Discussions similaires