Probleme file_exists()

Résolu
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

4 réponses

Utilisateur anonyme
 
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 :

if (file_exists($_SERVER['DOCUMENT_ROOT'].$url)){ ...
3
piervi Messages postés 111 Statut Membre 7
 
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!
0
piervi Messages postés 111 Statut Membre 7
 
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
0
Utilisateur anonyme
 
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']
$doss= "/$d/$d.html"; 
0
piervi Messages postés 111 Statut Membre 7
 
lol merci. J'avais abandonné cette idée mais du coup je m'y remets. je sais que c'est résolu mais bon vu qu'il y avait toujours un p'tit file_exists(), je me suis dit "mais pourquoi donc créer un autre post?"... enfin je suis d'accord avec toi je recommencerais plus
0