[ AJAX + PHP ] fonction opendir(), problème avec IE

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [ AJAX + PHP ] fonction opendir(), problème avec IE

par Marmotte_74 » 23 oct. 2008, 15:35

J'ai le même problème. toujours avec du php et de l'ajax. Une solution ?

par VaN » 17 sept. 2008, 17:11

La seule réponse logique est que le noms de la session va différer de FF à IE pour la même page en un instant donné. Donc, en clair : ta zone sessionId contient le sid de la session du navigateur que tu passe en paramètre à ton programme PHP, qui à son tour essaye d'ouvrir un dossier qui a le même nom de sessionId. Alors si ce dossier n'existe pas, il est normal ton message d'erreur.
Ce que je ne comprends pas, c'est que mon dossier (celui qui apparait dans l'erreur) existe, sur mon installation locale. C'est vérifié. Alors il existe à la fois pour FF, et pour IE. Pourquoi FF le trouve, et pas IE ?

par sadeq » 17 sept. 2008, 16:58

La seule réponse logique est que le noms de la session va différer de FF à IE pour la même page en un instant donné. Donc, en clair : ta zone sessionId contient le sid de la session du navigateur que tu passe en paramètre à ton programme PHP, qui à son tour essaye d'ouvrir un dossier qui a le même nom de sessionId. Alors si ce dossier n'existe pas, il est normal ton message d'erreur.

Le mieux est de programmer ça en testant sur l'existence du dossier avant de tenter son ouverture :
<?php
$dirname = 'uploaded_files/'.$_REQUEST['sessionId'];

if ( ! file_exists( $dirname ) ) exit();

$dir = opendir( $dirname ); 
...

[ AJAX + PHP ] fonction opendir(), problème avec IE

par VaN » 17 sept. 2008, 16:35

Bonjour,

J'utilise une fonction Javascript, qui grâce à AJAX, exécute un script PHP, qui va chercher l'extension d'un fichier, dans un dossier, placé sur le serveur :

La fonction JS :

Code : Tout sélectionner

function getFileName() { var sessionId = document.getElementById('sessionId').value; var fileExtension = creerXHR('getExtension.php?sessionId='+ sessionId); var fileName = 'uploadedFile'+fileExtension; alert(fileName); return fileName; }
Le fichier getExtension.php :
<?php
$dirname = 'uploaded_files/'.$_REQUEST['sessionId'];
$dir = opendir('uploaded_files/'.$_REQUEST['sessionId']); 

while($file = readdir($dir)) {
	if($file != '.' && $file != '..' && $file != 'Thumbs.db' && !is_dir($dirname.$file)) {
		$extension = strrchr($dirname.$file,'.');
		echo $extension;
	}
}
closedir($dir);
?>
Et je rencontre un comportement très bizarre de la part de mon fichier PHP :

Sous Firefox ET Firefox en mode Internet Explorer (plugin IE Tab), il me renvoie l'extension, comme voulu.

Sous IE par contre, la fonction opendir() me renvoie une erreur :
Image

1. Vu qu'il s'sagit d'un fichier PHP qui cause l'erreur, comment cela se fait'il qu'il ne soit pas interprété de la même façon sous FF et IE ? Et comment cela se fait'il qu'il passe bien sous FF IE Tab, et pas sous IE ?

2. Vu que mon dossier uploaded_files\5k92ngk8v0bdntv8ska4ku40e3 existe bien, d'où peut venir cette erreur ?