Aller au contenu

tester si un fichier existe


Sujets conseillés

Posté

Bonjour,

les pages d'un de mes sites s'appellent de la manière suivante

"http://www.site.com/index2.php?num=$1"

je voudrais simplement tester si par exemple le fichier "1.php" existe

si $num.php existe

alors include ("$num.php");

else

echo"hghghg";

etant faineant, je n'ai pas pris le temps d'ouvrir mon bouquin :blush:

merci d'avance

luc

Posté

Salut Luc,

C'est simple, mais il faut bétonner un peu ton code, parce que faire une inclusion sans vérifier l'argument est toujours dangereux.

<?php 
$filename = '/path/to/'.$_GET[num].".php";

if (file_exists($filename)) {
  include($filename);
} else {
  print "Le fichier $filename n'existe pas";
}
?>

Posté

En terme de securite je ferais surtout

$filename = '/path/to/' . intval($_GET[num]) . '.php';

Pour eviter que "num" ne contiennent autre chose que ce qui est acceptable (=une valeur entiere)

:)

Posté

encore une petite explication svp..

si je mets

$filename = '/path/to/' . intval($_GET[num]) . '.php';

ou

$filename = '/path/to/'.$_GET[num].".php";

ça ne marche pas, par contre si je mets çà:

 intval($_GET[num]) . '.php';

ça marche tres bien....

il doit y avoir une petite raison...

Posté

Une autre solution pour avoir un nombre entier, c'est de le multiplier par 1. Exemple :

$num = $_GET['num']*1;

Prends aussi l'habitude de mettre des guillemets autour des index, comme pour 'num'. Ca évite de le confondre avec les constantes.

Nico.

Posté
encore une petite explication svp..

si je mets

$filename = '/path/to/' . intval($_GET[num]) . '.php';

ou

$filename = '/path/to/'.$_GET[num].".php";

ça ne marche pas,

Il faut bien sûr remplacer /path/to par le chemin serveur vers ton fichier... Désolé mais j'aurais dû être plus explicite ;)

Donc dans le genre /home/tonsite/www/ .... cela dépend de ton hébergement.

Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...