Probleme file_exists()
Résolu
piervi
Messages postés
111
Statut
Membre
-
piervi Messages postés 111 Statut Membre -
piervi Messages postés 111 Statut Membre -
Bonjour,
J'ai un souci avec file_exists() que j'utilise pour une série de tests...
J'ai mon code
<?php
$album = $_GET['idcode'];
$url = "/$album/$album.html";
echo "<iframe name='album' height='100%' width='100%' src='$url'></iframe> ";
?>
Je récupère la valeur idcode via un formulaire avec la méthode $_GET
J'ai une série de dossiers contenant mes pages html appelées via "idcode": E1/E1.html,E2/E2.html...et lorsque que je test ce code en rentrant les valeur E1,E2... no probleme.
Par contre, lorsque je met
<?php
$album = $_GET['idcode'];
$url = "/$album/$album.html";
if (file_exists($url)){
echo "<iframe name='album' height='100%' width='100%' src='$url'></iframe> ";
}
else{ header("Location: index.php");}
?>
Quelque soit la valeur rentrée dans mon formulaire, il me renvoie sur index.php, meme avec les valeur E1 ou E2 (sachant que les fichiers E1/E1.html ...etc existent)
Quelqu'un pourrait me dire ou se situe mon erreur de code?
Merci d'avance
J'ai un souci avec file_exists() que j'utilise pour une série de tests...
J'ai mon code
<?php
$album = $_GET['idcode'];
$url = "/$album/$album.html";
echo "<iframe name='album' height='100%' width='100%' src='$url'></iframe> ";
?>
Je récupère la valeur idcode via un formulaire avec la méthode $_GET
J'ai une série de dossiers contenant mes pages html appelées via "idcode": E1/E1.html,E2/E2.html...et lorsque que je test ce code en rentrant les valeur E1,E2... no probleme.
Par contre, lorsque je met
<?php
$album = $_GET['idcode'];
$url = "/$album/$album.html";
if (file_exists($url)){
echo "<iframe name='album' height='100%' width='100%' src='$url'></iframe> ";
}
else{ header("Location: index.php");}
?>
Quelque soit la valeur rentrée dans mon formulaire, il me renvoie sur index.php, meme avec les valeur E1 ou E2 (sachant que les fichiers E1/E1.html ...etc existent)
Quelqu'un pourrait me dire ou se situe mon erreur de code?
Merci d'avance
4 réponses
Bonjour
Une url et un nom de fichier, ce n'est pas la même chose, c'est là ton problème.
Dans src='$url', il s'agit bien d'url, le navigateur qui l'interprète va lui même ajouter le "http://tonsite" avant pour aller chercher la bonne page.
Par contre, dans file_exists($url), il s'agit d'un nom de fichier (dans le serveur). Et comme il commence par /, php va essayer de le chercher dans le dossier indiqué à partir de la racine du serveur. Or le chemin que tu indiques est relatif à la racine de ton site, pas à la racine du serveur. Il faut donc ajouter $_SERVER['DOCUMENT_ROOT'] avant :
Une url et un nom de fichier, ce n'est pas la même chose, c'est là ton problème.
Dans src='$url', il s'agit bien d'url, le navigateur qui l'interprète va lui même ajouter le "http://tonsite" avant pour aller chercher la bonne page.
Par contre, dans file_exists($url), il s'agit d'un nom de fichier (dans le serveur). Et comme il commence par /, php va essayer de le chercher dans le dossier indiqué à partir de la racine du serveur. Or le chemin que tu indiques est relatif à la racine de ton site, pas à la racine du serveur. Il faut donc ajouter $_SERVER['DOCUMENT_ROOT'] avant :
if (file_exists($_SERVER['DOCUMENT_ROOT'].$url)){ ...
ok merci pour ce petit cours express file_exists et ces différentes interprétations.
Le problème est résolu et je comprends le pourquoi... yipee.
Merci le père!
Le problème est résolu et je comprends le pourquoi... yipee.
Merci le père!
Salut,
J'ai de nouveau un tit souci sur la programmation de ce site.
Je veux créer un menu déroulant de liens créé via php avec file_exists() qui m'ajouterais les options si le document html associé est trouvé.(format du lien: E1/E1.html ; E2/E2.html... sachant qu'il n' y a jamais de trou dans la numérotation des dossiers ( impossible que E8 existe sans E7 par exemple)
Dans le header:
<script type="text/JavaScript">
function MM_jumpMenu(targ,selObj,restore){
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
</script>
Dans body:
<select class="form1" onchange="MM_jumpMenu('parent',this,0)">
<option value="">code</option>
<?php
for ($i=1;;++$i)
{
$d = "E$i";
$doss= "$d/$d.html";
if (file_exists($_SERVER['DOCUMENT_ROOT'].$doss)){
echo "<option value='album.php?idcode=$d'>$d</option>";}else{
break;}
}//for
?>
</select>
Quelqu'un peut m'expliquer pourquoi rien ne se crée sachant que j'ai E1,E2 et E3 qui existent?! (j'ai un menu déroulant comportant uniquement "code"...)
Merci
J'ai de nouveau un tit souci sur la programmation de ce site.
Je veux créer un menu déroulant de liens créé via php avec file_exists() qui m'ajouterais les options si le document html associé est trouvé.(format du lien: E1/E1.html ; E2/E2.html... sachant qu'il n' y a jamais de trou dans la numérotation des dossiers ( impossible que E8 existe sans E7 par exemple)
Dans le header:
<script type="text/JavaScript">
function MM_jumpMenu(targ,selObj,restore){
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
</script>
Dans body:
<select class="form1" onchange="MM_jumpMenu('parent',this,0)">
<option value="">code</option>
<?php
for ($i=1;;++$i)
{
$d = "E$i";
$doss= "$d/$d.html";
if (file_exists($_SERVER['DOCUMENT_ROOT'].$doss)){
echo "<option value='album.php?idcode=$d'>$d</option>";}else{
break;}
}//for
?>
</select>
Quelqu'un peut m'expliquer pourquoi rien ne se crée sachant que j'ai E1,E2 et E3 qui existent?! (j'ai un menu déroulant comportant uniquement "code"...)
Merci
Ce sujet est résolu, tu aurais dû poser une nouvelle question. M'enfin...
Tu as oublié un / qulque part, il n'y en a pas à la fin de $_SERVER['DOCUMENT_ROOT']
Tu as oublié un / qulque part, il n'y en a pas à la fin de $_SERVER['DOCUMENT_ROOT']
$doss= "/$d/$d.html";