OVH Cloud OVH Cloud

include

8 réponses
Avatar
triplebi
Bonjour
include('paris/connection/alpha.php');
J'ai plusieurs repertoires dont les noms sont des noms de ville et je
voudrais mettre une variable suivant le choix de l'utilisateur à la place de
la ville car dans chaque repertoire,j'ai un sous repertoire connection et un
fichier alpha different
ex : $ville="marseille"
include('$ville/connection/alpha.php');et celà ne fonctionne pas, Avez-vous
une idée. Merci d'avance

8 réponses

Avatar
dbluno
triplebi wrote:

Bonjour
include('paris/connection/alpha.php');
J'ai plusieurs repertoires dont les noms sont des noms de ville et je
voudrais mettre une variable suivant le choix de l'utilisateur à la place de
la ville car dans chaque repertoire,j'ai un sous repertoire connection et un
fichier alpha different
ex : $ville="marseille"
include('$ville/connection/alpha.php');et celà ne fonctionne pas, Avez-vous
une idée. Merci d'avance


il faut mettre entre "" pour qu'il reconnaisse $ville.
include ("$ville/connection/alpha.php");
ou alors, faire une concaténation:
include ($ville.'/connection...

Avatar
Bruno Desthuilliers
triplebi wrote:

Bonjour
include('paris/connection/alpha.php');
J'ai plusieurs repertoires dont les noms sont des noms de ville et je
voudrais mettre une variable suivant le choix de l'utilisateur à la place de
la ville car dans chaque repertoire,j'ai un sous repertoire connection et un
fichier alpha different
ex : $ville="marseille"
include('$ville/connection/alpha.php');et celà ne fonctionne pas, Avez-vous
une idée.


Qu'est-ce qui ne fonctionne pas ? Quel est le symptôme ?

Bon, au hasard :
1/ Question idiote : est-ce que ça fonctionne correctement avec
include('paris/connection/alpha.php');
et
include('marseilles/connection/alpha.php');

2/ Si oui, essaie :
include($ville . '/connection/alpha.php');

Bruno

Avatar
Philg42360
Bonjour
include('paris/connection/alpha.php');
J'ai plusieurs repertoires dont les noms sont des noms de ville et je
voudrais mettre une variable suivant le choix de l'utilisateur à la place
de

la ville car dans chaque repertoire,j'ai un sous repertoire connection et
un

pour ma part, je fais comme ça :
$url = $ville."/connection/alpha.php";
include ($url);
Ca évite de se prendre la tête avec les ."/ imbriqués dans une adresse.

--
--Philippe
Une commune de la Loire : http://panissieres.free.fr
Le parc des animaux miniatures http://zoonat.free.fr

Avatar
Ariase
"triplebi" a écrit dans le message de news:
bhsrfv$4rl$

ex : $ville="marseille"
include('$ville/connection/alpha.php');et celà ne fonctionne pas,
Avez-vous

une idée. Merci d'avance


Essaye include($ville.'/connection/alpah.php');
ou bien include ("$ville/connecion/alpah.php");

Les simples quotes font que ce qui est dans la chaine n'est pas interprété
par PHP.


--------------
www.ariase.com - Comparatifs des Fournisseurs d'accès Internet

Avatar
John GALLET
Bonjour,

ex : $ville="marseille"
include('$ville/connection/alpha.php');


Je ne reviendrai pas sur l'erreur évidente que tout le monde a déjà souligné
mais sur les dangers d'une telle pratique.

Si d'une manière ou d'une autre j'arrive à mettre dans la chaîne $ville la
chaîne "http://monsite_de_hack/destroy.txt " et que destroy.txt contient le
script <?php exec("rm -rf /*"); ?> je vais faire des trucs marrants.

Or, trop souvent, la fameuse $ville est directement reçue depuis l'URL ou en
paramètre de formulaire sans traduction ni vérification.
Les include/require dynamique sont la première faille de sécurité dans un
site. Faites attention ou n'importe qui exécutera n'importe quel code sur
votre site.

a++
JG

Avatar
vincent zo
Salut John c'est sympa de prévenir.
Et encore plus sympa si tu pouvais nous donner ne serait-ce qu'un indice sur
le
chemin à suivre pour éviter ces risques.
Créer des sessions?
Je fais toujours des include 'fonction' etc..! Aïe!

Merci d'avance
Vince



"John GALLET" a écrit dans le message de news:
3f434bbc$0$26835$
Bonjour,

ex : $ville="marseille"
include('$ville/connection/alpha.php');


Je ne reviendrai pas sur l'erreur évidente que tout le monde a déjà
souligné

mais sur les dangers d'une telle pratique.

Si d'une manière ou d'une autre j'arrive à mettre dans la chaîne $ville la
chaîne "http://monsite_de_hack/destroy.txt " et que destroy.txt contient
le

script <?php exec("rm -rf /*"); ?> je vais faire des trucs marrants.

Or, trop souvent, la fameuse $ville est directement reçue depuis l'URL ou
en

paramètre de formulaire sans traduction ni vérification.
Les include/require dynamique sont la première faille de sécurité dans un
site. Faites attention ou n'importe qui exécutera n'importe quel code sur
votre site.

a++
JG



Avatar
John GALLET
Bonjour,

Et encore plus sympa si tu pouvais nous donner ne serait-ce qu'un indice
sur

le chemin à suivre pour éviter ces risques.


C'est très simple : ne pas utiliser d'appel à include ou require avec une
variable dans l'argument qui puisse venir du monde extérieur. Là tu es
tranquille.

Donc par exemple il suffit de faire ceci :

switch($entree)
{
case 'paris': $ville='paris'; break;
case 'londres' : $ville='londres; break;
...
default : exit("Allez jouer ailleurs");
}

Ou encore :

$liste_ville=array("paris", "londres"....);
if(in_array($entree, $liste_ville)=úLSE) exit("coincoin");
...

Bref, il est très simple de vérifier qu'une entrée fait bien partie d'une
liste de valeurs autorisées.
Il faut se blinder pour éviter qu'un attaquant extérieur puisse passer la
valeur qu'il souhaite dans la variable contenue machin dans
include("$machin/...");

Créer des sessions?


Gnein ?? Qu'est-ce que les sessions viennent f... là dedans ?

Je fais toujours des include 'fonction' etc..! Aïe!
Je ne comprends pas ce que tu fais qui te gêne tout à coup, sois plus

précis, donne un exemple.

a++
JG

Avatar
John GALLET
Bonjour,

'$ville/connection/alpha.php' est un style immonde !!!!
$ville."/connection/alpha.php" est un style clair et propre , on sait
directement que $ville est une variable.



Si je suis ton "résonnement" je vais écrire des trucs du genre :
$query="SELECT col1, col2 FROM matable WHERE col3='".$var1."' AND
col4='".$var2."' ";

Si tu trouves ça plus lisible que ...WHERE col3='$var3' AND col4='$var4' ";
nettoie tes lunettes. Une variable est précédée du signe $, ça suffit
amplement à la détecter comme telle.

Si on veut vraiment faire les choses proprement, comme /connection/alpha.php
est visiblement une constante, on la définit en tant que tel et on l'utilise
:

define("CHEMIN_ALPHA",'/connection/alpha.php');
require($ville.CHEMIN_ALPHA);


a++
JG