par
Cyrano » 05 nov. 2006, 12:22
Au lieu de tout enlever, mets donc un peu d.ordre dans ton code :
-1- le session_start() ne changera rien, laisse-le;
-2- le code "métier" peut suivre sans problème, il n'est pas utilisé au chargement de la page, donc on peut mettre la fonction;
-3- l'en-tête HTML, lui sera toujours là quel que soit le contenu;
-4- Le contenu variant selon le cas (formulaire envoyé ou non) avec des tests et affichages de débuggage;
-5- le pied de page HTML.
Ce qui donne (sur la base de ton dernier code) :
<?php
session_start();
function upload($index, $destination, $maxsize = false, $extensions = false)
{
//Test1: fichier correctement uploadé
if (!isset($_FILES[$index]) || $_FILES[$index]['error'] > 0)
{
echo "Erreur de transfert du fichier ".$index;
return false;
}
//Test2: taille limite
if ($maxsize !== false && $_FILES[$index]['size'] > $maxsize)
{
echo "La taille du fichier ".$index." est trop importante";
return false;
}
//Test3: extension
$ext = substr(strrchr($_FILES[$index]['name'],'.'),1);
if ($extensions !== false && !in_array($ext,$extensions))
{
echo "Le type de fichier n'est pas autorisé";
return false;
}
//Déplacement
return move_uploaded_file($_FILES[$index]['tmp_name'],$destination);
}
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Upload Islande - Mon compte</title>
<link rel="stylesheet" type="text/css" href="./css/styles.css" media="screen" />
</head>
<body>
<div id="center">
<h1>Mon compte</h1>
<div id="content">
<h2>
<a href="galerie.php?userid=<?php echo $_SESSION['user']['id'];?>" title="accéder à ma galerie">Ma galerie</a>
-
<a href="deco.php" title="déconnexion">Déconnexion</a>
- Gestion de mes images
</h2>
<div id="contenu">
<?php
if(isset($_POST['envoi']))
{
echo("<pre>\n");
var_dump($_POST);
echo("</pre>\n");
echo("<pre>\n");
var_dump($_FILES);
echo("</pre>\n");
echo $donnees[0]['repertoire_photos_big'].time().'.jpg';
$upload = upload('img1',$donnees[0]['repertoire_photos_big'].time().'.jpg',15360, array('jpg','jpeg') );
print_r($upload);
echo (false !== $upload) ? "Upload img1 réussi!<br />" : "Upload img1 échoué!<br />";
}
else
{
?>
<h3>Upload</h3>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" enctype="multipart/form-data">
<input type="file" name="img1" />
<input type="hidden" name="user" value="<?php echo $_SESSION['user']['id'];?>" />
<input type="submit" name="envoi" value="Envoyer" />
</form>
<?php
}
?>
</div>
</div>
</div>
</body>
</html>
De mon coté, j'ai des erreurs à l'affichage parce que certaines variables ne sont pas définies, mais complète avec les parties manquantes et fais le test, puis reviens avec le résultat.
Au lieu de tout enlever, mets donc un peu d.ordre dans ton code :
-1- le session_start() ne changera rien, laisse-le;
-2- le code "métier" peut suivre sans problème, il n'est pas utilisé au chargement de la page, donc on peut mettre la fonction;
-3- l'en-tête HTML, lui sera toujours là quel que soit le contenu;
-4- Le contenu variant selon le cas (formulaire envoyé ou non) avec des tests et affichages de débuggage;
-5- le pied de page HTML.
Ce qui donne (sur la base de ton dernier code) :
[php]<?php
session_start();
function upload($index, $destination, $maxsize = false, $extensions = false)
{
//Test1: fichier correctement uploadé
if (!isset($_FILES[$index]) || $_FILES[$index]['error'] > 0)
{
echo "Erreur de transfert du fichier ".$index;
return false;
}
//Test2: taille limite
if ($maxsize !== false && $_FILES[$index]['size'] > $maxsize)
{
echo "La taille du fichier ".$index." est trop importante";
return false;
}
//Test3: extension
$ext = substr(strrchr($_FILES[$index]['name'],'.'),1);
if ($extensions !== false && !in_array($ext,$extensions))
{
echo "Le type de fichier n'est pas autorisé";
return false;
}
//Déplacement
return move_uploaded_file($_FILES[$index]['tmp_name'],$destination);
}
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Upload Islande - Mon compte</title>
<link rel="stylesheet" type="text/css" href="./css/styles.css" media="screen" />
</head>
<body>
<div id="center">
<h1>Mon compte</h1>
<div id="content">
<h2>
<a href="galerie.php?userid=<?php echo $_SESSION['user']['id'];?>" title="accéder à ma galerie">Ma galerie</a>
-
<a href="deco.php" title="déconnexion">Déconnexion</a>
- Gestion de mes images
</h2>
<div id="contenu">
<?php
if(isset($_POST['envoi']))
{
echo("<pre>\n");
var_dump($_POST);
echo("</pre>\n");
echo("<pre>\n");
var_dump($_FILES);
echo("</pre>\n");
echo $donnees[0]['repertoire_photos_big'].time().'.jpg';
$upload = upload('img1',$donnees[0]['repertoire_photos_big'].time().'.jpg',15360, array('jpg','jpeg') );
print_r($upload);
echo (false !== $upload) ? "Upload img1 réussi!<br />" : "Upload img1 échoué!<br />";
}
else
{
?>
<h3>Upload</h3>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" enctype="multipart/form-data">
<input type="file" name="img1" />
<input type="hidden" name="user" value="<?php echo $_SESSION['user']['id'];?>" />
<input type="submit" name="envoi" value="Envoyer" />
</form>
<?php
}
?>
</div>
</div>
</div>
</body>
</html>[/php]
De mon coté, j'ai des erreurs à l'affichage parce que certaines variables ne sont pas définies, mais complète avec les parties manquantes et fais le test, puis reviens avec le résultat.