Empecher la sélection manuelle dans un browse ?

Eléphanteau du PHP | 13 Messages

20 avr. 2005, 14:35

Bien tout est dans le titre, depuis un poste client je fais un browse pour récuperer le chemin d'un fichier et si jamais le mec le rentre manuellement bien j'ai pas les droits (et je les aurais pas) d'aller voir sur la machine client si le fichier existe.
Donc je veux faire une chose simple, empecher la séléction manuelle dans le browse de façon à ce que le mec choisisse uniquement dans la liste du browse et donc le fichier sera forcer d'exister donc pas d'erreur.
Merci de votre aide.
En fait je veux l'empecher de taper manuellement le path.

Mammouth du PHP | 568 Messages

20 avr. 2005, 15:10

Bof, c'est plus du javascript si j'ai bien saisi le problème.

En gros, faut lui dire de s'arrêter avant d'écrire dans ton input type="file"... Au début je pensais lui dire d'effacer automatiquement ce que le mec tapais, mais ça ne s'est pas révélé très efficace... Je te propose donc plutôt un truc du genre :

Code : Tout sélectionner

<INPUT type="file" name="fichier" onKeyPress="ton_formulaire.fichier.blur()">
Donc, si quelqu'un essaye de taper quelquechose, il ne peut pas car le focus est dans le vide...
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphanteau du PHP | 13 Messages

20 avr. 2005, 15:22

En fait au debut je prenais le path que je recevais côté serveur puis j'éssayer de testet du coté client si le fichier existe mais j'ai pa les droit pour ça...

Voici Mon code,
Mon fichier s'appel temp.php

(PS: j'ai essayer avec ce que tu m'as dis ça ne marche pas)

[code]<? // ne pas sauter de ligne car le header() ne prnedra pas !!
$correcte="vrai" ;
$bool=1 ;

if (isset($filepath))
{
$filepath=stripslashes($filepath);

// print("voici le chemin $filepath");
$bool=is_file($filepath); // retourne 1 si c'est un fichier
$filepath_temp=$filepath;
$filepath_temp[1]="$"; // on remplace : par $
$filepath_temp="\\" . $REMOTE_ADDR . "\\" . $filepath_temp ;
$filepath_temp="\\" . $filepath_temp ; // on a obtenu \\158.167.30.xx\c$\...\file.txt
if(file_exists($filepath_temp))
{
$bool="vrai" ;
}
else
{
$bool="faux";
}

print("valeur de file_exists: $bool big adress $filepath_temp ");
}
//if (file_exist) (\\ip\C$\path)

if($bool!==1)
{
$correcte="faux" ;
$message="<font color=\"red\"><i>Fichier inexistant ou nom incorrecte !!</i></font>" ;
}
if ( ($bool==1) && (isset ($filepath) ) )
{
$file=basename($filepath);
if($filepath!="sec.ini")
{
print("fichier correcte cependant c'est pas un 'sec.ini' ");
}
else
{ $filepath=basename($filepath);
print(" Super: $filepath ");
}
}
print("

<html>
<head>
<title>Téléchargement d'un fichier</title>
</head>

<form action=\" $PHP_SELF \" method=\"get\" name=\"formulaire\" enctype=\"multipart/form-data\">
<strong>Please select the file to parse :</strong>
<input type=\"file\" name=\"filepath\" onKeyPress=\"temp.php.filepath.blur() \">
<input type=\"submit\" value=\"Ok\">
<input type=\"reset\" name=\"clean\"> "); if ($correcte=="faux"){echo $message ;} print("
</form>

<SELECT name=\"Grimpeurs\">
<OPTION type=\"file\" value=\"file\">filee</OPTION>
</SELECT>
</body>
</html>
");

?>
[/code]

Mammouth du PHP | 568 Messages

20 avr. 2005, 15:50

Bin vi ça marche po... J'ai mis :

Code : Tout sélectionner

<INPUT type="file" name="fichier" onKeyPress="ton_formulaire.fichier.blur()">
Mais toi tu as mis :

Code : Tout sélectionner

<input type=\"file\" name=\"filepath\" onKeyPress=\"temp.php.filepath.blur() \">
Donc filepath, c'est bien le nom de ton input, mais ça correspond à quoi temp et php ??? :roll:

Ralalalala ! Si on me lis po bien ! Pour toi, c'est plutôt du genre :

Code : Tout sélectionner

<input type=\"file\" name=\"filepath\" onKeyPress=\"formulaire.filepath.blur() \">
Heddi s'est remis à développer pour lui même !
Martina Hingis - Étoile du Tennis
Heddi v. 2007

Eléphanteau du PHP | 13 Messages

20 avr. 2005, 16:38

Oups lol quand tu as mis ton formulaire j'avais compris le nom de ma page "temp.php" car pour moi ma page fait office de formulaire.

Si non effectivement ça marche merci beaucoup pour ton aide !