Aller au contenu

Debutant en php, besoin d'aide


Sujets conseillés

Posté

Bonjour,

voila je suis en train de réaliser un site web. Il faut maintenant que je crée une fonction de recherche, je vous explique ceci :

- l'utilisateur rentre un nomdefichier.extension dans la fonction rechercher. Et ensuite la réponse est soit positive (posibilité de télécharger le fichier) soit négative.

A noter que l'extension sera toujours la même.

Je me disais donc grossièrement :

il faut que les noms de fichiers (via une boucle tant que ou autre) contenus dans un dossier soient recopiés dans une table constituant ainsi un genre de cache.

Lorque que l'utilisateur cherche un fichier, il y a une recherche dans cette table et voila.

Ensuite, il faudrait une mise a jour de cette table une fois par jour environ.

Voila un peu le fonctionnement. Maintenant, je souhaiterais un peu d'aide et que l'on me mette sur la voie :) (peut etre que ce que j'ai dit n'est pas possible)

Je suis en train d'apprendre le php mais je connais pas mal le C et je trouve que ça ressemble pas mal :)

Merci pour votre aide

Posté

Salut,

Il y a bien plus simple si tu veux que l'utilisateur entre le nom de fichier ;)

Tu utilises simplement la fonction file_exists().

<?php
$repertoire="/repertoire/absolu/ou/se/trouvent/tes/fichiers/";
$filename = 'le_nom_du_fichier';

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

Maintenant tu pourras par exemple vérifier que le fichier ne commence pas par ../ ou supprimer tous les caractères du nom de fichier jusqu'au dernier / pour éviter que quelqu'un n'entre un nom du style "../../../../etc/passwd" ;)

Dan

Posté

ok je comprends et j'ai testé. Par exemple voici mon code :

<?php

$repertoire="./img/";

$filename = 'toto.jpg';

if (file_exists($repertoire.$filename)) {

print "Le fichier $filename existe";

} else {

print "Le fichier $filename n'existe pas";

}

?>

là ça trouve le fichier (j'ai créer un fichier toto.jpg dans mon répertoire img sous répertoire du principal).

Maintenant j'aimerais déjà avoir l'etension de prédéfinie. j'ai essayé ceci :

<?php

$repertoire="./img/";

$extension = '.jpg";

$filename = 'toto'.$extension;

if (file_exists($repertoire.$filename)) {

print "Le fichier $filename existe";

} else {

print "Le fichier $filename n'existe pas";

}

?>

Le problème c est que ça ne fonctionne pas :D

Alors bon comme ça fait 1 jour que j'aprends le php, il doit bien y avoir une erreur :P

Posté

La suite lol :

<FORM>

Rechercher un fichier .jpg :

<INPUT TYPE=text NAME=nom>

<INPUT TYPE=submit VALUE="Rechercher">

</FORM>

<P>

<?php

$repertoire="./img/";

$extension = '.jpg';

$filename = 'nom'.$extension;

if (file_exists($repertoire.$filename)) {

print "Le fichier $filename existe";

} else {

print "Le fichier $filename n'existe pas";

}

?>

j'ai essayé d'intégrer ça avec de l'html mais je n'y arrive pas. Déjà le tout est a intégrer dans un fichier .php ou .html ?

Posté

Salut,

Comme tu as du code php dans cette page, il faut donc un fichier .php.

Et pour le répertoire, tu devrais utiliser un répertoire absolu, du style /home/login/www/repertoire/

Dan

Posté

j'ai toujours le problème quand je veux récupérer la variable var... j'ai essayé pas mal de choses mais je n'y arrive toujours pas.

Meme problème pour le répertoire absolu. j'utilise easy php donc j'ai mi www/nature/img/ mais ça ne marche pas

<FORM>

Rechercher un fichier .jpg :

<INPUT TYPE=text NAME=var>

<INPUT TYPE=submit VALUE="Rechercher">

</FORM>

<P>

<?php

$repertoire="./img/";

$extension = '.jpg';

$filename ="$var".$extension;

if (file_exists($repertoire.$filename)) {

print "Le fichier $filename existe";

} else {

print "Le fichier $filename n'existe pas";

}

?>

Posté (modifié)

Il faut pas faire une action sur le formulaire ?

Car comme ca tu ne peux pas récuperer var dans le code php.

Je verrai plutôt un truc du style :

<form method="POST">

Rechercher un fichier .jpg :

<INPUT TYPE=text NAME=var>

<INPUT TYPE=submit VALUE="Rechercher">

</FORM>

<?php

$var = $_POST["var"]; // pour que tu n'es pas a rechangé ton code ci-dessous

if(isset($var)) // Sera vrai si le formulaire a été validé et donc que var a été rempli.

{

$repertoire="./img/";

$extension = '.jpg';

$filename ="$var".$extension;

if (file_exists($repertoire.$filename)) {

  print "Le fichier $filename existe";

} else {

  print "Le fichier $filename n'existe pas";

}

}

?>

En gras ce que j'ai rajouté à ton code.

J'ai testé et cela fonctionne mais il y'a surement mieux, je ne suis pas un expert :P

Bonne chance,

Bridou.

Modifié par Dan
Posté

effectivement ça marche mais pourquoi met il ça :

Notice: Undefined index: var in c:\easyphp1-8\www\nature\test4.php on line 8

Je ne vois pas trop d'ou viens l erreur

<form method="POST">
Rechercher un fichier .jpg :
<INPUT TYPE=text NAME=var>
<INPUT TYPE=submit VALUE="Rechercher">
</FORM>

<?php
$var = $_POST["var"];
if(isset($var))
{
 $repertoire="./img/";
 $extension = '.jpg';
 $filename ="$var".$extension;

 if (file_exists($repertoire.$filename))
 {
 print "Le fichier $filename existe";
 }
 else
 {
 print "Le fichier $filename n'existe pas";
 }
}

?>

Posté

Bonjour,

Celà vient de la ligne: $var = $_POST["var"];

$_POST["var"] indique la valeur du formulaire ( ce code là : "<INPUT TYPE=text NAME=var>" ).

Seulement, lorsque tu affiche la page pour la première fois le formulaire n'est pas envoyé donc $_POST["var"] n'existe pas.

Essaye donc de modifier:

 $var = $_POST["var"];
if(isset($var))
{

par:

if(isset($_POST["var"]))
{
$var = $_POST["var"];

On n'essayera de lire $_POST["var"] que lorsqu'on est sûr qu'il existe ;)

Veuillez vous connecter pour commenter

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



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