Probleme de code. Pourquoi????

Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007 - 18 août 2005 à 20:14
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007 - 19 août 2005 à 15:34
Bonjour tout le monde,



alors voila mon probleme: j'essaye d'envoyer un fichier dans un
répertoire, et j'ai l'erreur Undefine index... Je comprend pas car le
code est copier coller d'une autre partie de mon site qui marche
parfaitement. Donc si quelqu'un a une explication, ce serait gentil.



Voila le code:







$repertoireDestination = "Concours/test/";




$nomDestination =
$_FILES["xls"]["name"]; //erreur ici




// Si un fichier comporte une
extension .php ou .php3


// on le renome en *.txt pour des
raisons de sécurité


if (eregi(".php",
$nomDestination)) {



$nomDestination .= ".txt";

}




if
(is_uploaded_file($_FILES["xls"]["tmp_name"])) { // et ici


if
(rename($_FILES["xls"]["tmp_name"],




$repertoireDestination.$nomDestination)) {

}


Merci

8 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 00:58
Salut,



tu n'as pas uploadé de fichier donc ça n'existe pas, c'est normal.



if(!empty($_FILES['xls']['tmp_name']))

{

//ton code

}

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
19 août 2005 à 13:13
J'ai plus d'erreur mais l'envoie ne marche pas... Je comprend pas
pourquoi la, j'ai le meme code dans une autre page et ca marche
parfaitement!
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 13:31
Bah tu n'uploades pas ton fichier dans ce cas... En même temps nous dire que ça "marche pas" sans donner de code ni d'erreur...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
19 août 2005 à 14:24
Bah le code tu l'as, il est dans le premier message, et il n'y a pas
d'erreur. C'est juste que le fichier n'est pas envoyé, mais je sais pas
pourquoi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 14:28
mais il faut le code xhtml du formulaire...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
19 août 2005 à 14:53
Voila tout le code!

Sinon j'ai pas mis le if(!empty($_FILES['xls']['tmp_name'])) parce que
l'envoie ne peut pas se faire si le champs xls est vide (fonction
javascript)



<form method="post" action="prochain_concours.php" name="fichier" onSubmit="return verifyform()">

<center>Concours <select name="concours">


<option
title="selected">S&eacute;lectionner...</option>

<?php

$req =
mysql_db_query("$sql_bdd","SELECT DISTINCT nom FROM t_albums ORDER BY
nom DESC");

while ($rec=mysql_fetch_array($req))

{

$date=$rec[0];


echo
"<option>".$date."</option>";

} ?>

</select></center>


<center>Fichier excel : </center>





<center></center>

</form>



<?php



if (isset($_POST["envoyer"]))

{

if($_POST["envoyer"] == "Envoyer")

{


$date_concours =
$_POST['concours'];




$repertoireDestination =
"Concours/".$date_concours."/";




$nomDestination =
$_FILES["xls"]["name"];




// Si un fichier comporte une
extension .php ou .php3


// on le renome en *.txt pour des
raisons de sécurité


if (eregi(".php",
$nomDestination)) {



$nomDestination .= ".txt";

}




if
(is_uploaded_file($_FILES["xls"]["tmp_name"]))

{



if (rename($_FILES["xls"]["tmp_name"],




$repertoireDestination.$nomDestination)) {



}



}

else

{


echo "Le fichier n'a pas &eacute;t&eacute;
envoy&eacute;.";

die;



mysql_close();

}


echo "Le fichier a
bien &eacute;t&eacute; envoy&eacute;.
";



}

} // fin du if (isset($_POST["envoyer"]))
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 15:04
Tu as oublié enctype="multipart/form-data" dans les attributs du formulaire...

Ensuite on te donne une condition à rajouter tu ne la mets pas sous prétexte d'une vérification en javascript (n'importe qui peut donc faire sauter ta vérification). Ensuite essaie de coder ça en XHTML.

Voici le code corrigé :

<form method="post" action="prochain_concours.php" enctype="multipart/form-data">
<label for="concours">Concours :</label><select name="concours" id="concours">
<option selected="selected">Sélectionner...</option>
<?php
mysql_connect('hote','user','passe');
mysql_select_db('base');
$req = mysql_query('SELECT DISTINCT nom FROM t_albums ORDER BY nom DESC');
mysql_close();
while ($rec=mysql_fetch_row($req))
{
echo '<option>',$rec[0],'</option>';
}
?>
</select>
<label for="fe">Fichier excel :</label>




</form>





<?php

if (isset($_POST['envoyer']))
{
$date_concours = $_POST['concours'];
$repertoireDestination = 'Concours/'.$date_concours.'/';

$nomDestination = $_FILES['xls']['name'];

if (str_pos('.php', $nomDestination)) {
$nomDestination .= '.txt';
}
//etc...
}


Et encore ta vérification est bancale, tu peux mettre des caractères spéciaux dans les noms de fichiers, etc... y'a pas mal de failles de sécurité dans ce script.
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
19 août 2005 à 15:34
Je te remercie beaucoup, c'etait bien le enctype. Sinon
pour les caracteres speciaux je le sais, sauf que le fichier ne
comportera jamais de caracteres speciaux normalement, donc c'est pour
ca que je fais pas la vérification, et pour la vérif en javascript,
c'est vrai qu'on peut la faire sauter donc je vais mettre le code par
précaution.



Sinon j'ai un autre souci de code, cette fois-ci dans l'affichage de ce fichier uploadé.

Voila mon code:



if (is_dir($nomRepertoire))

{

$dossier = opendir($nomRepertoire);

while ($Fichier = readdir($dossier))

{

if ($Fichier != "." AND $Fichier != "..")

{

// Récupération de l'extension du fichier

$format = strrchr($Fichier,".");



//
Vérification du
format


if ($format == ".xls")

{


echo "<center>, \";

echo
\"----
T&eacute;l&eacute;charger au format
excel
</center>";

}

else

{


echo "<center>Il n'y a aucune informations
suppl&eacute;mentaires pour le
moment.</center>";

}

}

}

closedir($dossier);

}




Donc si le fichier porte une extension en xls cela me l'affiche bien, sauf que ca m'affiche Il n'y a aucune informations suppl&eacute;mentaires pour le moment. autant
de fois ou il y a d'autres fichiers dans le répertoire, ce qui est
logique vu qu'on est dans la boucle while. Mais comment je pourrait
faire pour palier à ce probleme, moi je voudrai que des qu'il y a un
fichier excel ca me l'affiche et s'il y a pas de fichier excel ca
m'affiche cette phrase, et une seule fois bien sur



Merci
0
Rejoignez-nous