Help

Flo
Invité n'ayant pas de compte PHPfrance

03 mai 2005, 11:36

C'est le cas !

ViPHP
ViPHP | 2144 Messages

03 mai 2005, 11:44

Donc il te faut passer par un formulaire html et une page de traitement php pour gêrer l'insertion comme cela t'a été conseillé plus haut...

Flo
Invité n'ayant pas de compte PHPfrance

03 mai 2005, 13:16

Ca ressemble à ça ?
Formulaire


<html>
<head><Title>Formulaire de chargement de fichier</Title></head>
<body>
<form enctype="multipart/form-data" action="Exemple.php" method="post">

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

Envoyez ce fichier : <input name="userfile" type="file" />

<input type="submit" value="Envoyer le fichier" />
</form>
</body>



et le php :




<?php
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "Le fichier est valide, et a été téléchargé
avec succès. Voici plus d'informations :\n";
} else {
echo "Attaque potentielle par téléchargement de fichiers.
Voici plus d'informations :\n";
}

echo 'Voici quelques informations de déboguage :';
print_r($_FILES);

echo '</pre>';
?>
</html>

Flo
Invité n'ayant pas de compte PHPfrance

03 mai 2005, 15:29

C'est bon, j'ai trouvé un tutorial très complet et j'ai compris la globalité de la chose. J'ai donc créé mon formulaire html ainsi que la page de réception php. J'ai égalemment ma base de donnée. Par contre l'insertion des fichiers dans celle-ci ne marchent pas. D'ou cela peut'il venir ? Est ce un problème d'emplacement des fichiers ? Une erreur de code. Je vous joint mon code.

Code : Tout sélectionner

<?PHP //Initialisation de la variables $infos $infos = ''; //Initialisation des variables du formulaire (mise à '' si elles sont vides) empty($_POST['client']) ? $client = '' : $client = $_POST['client']; empty($_POST['titre']) ? $titre = '' : $titre = $_POST['titre']; //Vérification du pseudo et du titre if ($titre == '') $infos .= "- Vous devez définir un titre!<br>n"; if ($client == '') $infos .= "- Vous devez entrer le nom du client!<br>n"; //Pour savoir si le fichier a été uploadé, on vérifie si la taille est bien supérieur à 0 if (!empty($_FILES['fichier1']['size'])){ //On récupère la taille, le nom et le nom du fichier temporaire $f1_size = $_FILES['fichier1']['size']; $f1_name = $_FILES['fichier1']['name']; $f1_tmpname = $_FILES['fichier1']['tmp_name']; //Récupération de l'extension du fichier (on prend ce qui suit le dernier point et on le met en minuscule $ext = strtolower(substr($f1_name,strrpos($f1_name, ".")+1)); //Création du tableau des extensions acceptées $valides = array("bmp","jpg","gif","png"); //On vérifie la taille et l'extension, si tout est bon, on déplace le fichier if ($f1_size <= 1000000000 && in_array($ext,$valides)): move_uploaded_file($f1_tmpname, "./fichiers/{$f1_name}"); endIf //Si tout est bon (aucune erreur dans $infos), on déplace le fichier if ($infos == ''): move_uploaded_file($f1_tmpname, "./fichiers/{$f1_name}") or $infos .= "- Impossible d'enregistrer le fichier, contacter le webmaster!<br>n"; if ($infos == ''){ $res = mysql_connect('localhost','root',''); mysql_select_db('fichiers',$res); $add = mysql_query("INSERT INTO uploads VALUES ('','{$titre}','{$client}','{$f1_name}',{$f1_size});"); } endIf; }else $infos .= "- Vous devez sélectionner un fichier à uploader!<br>n"; //Si le formulaire n'a pas encore été validé, on n'affiche pas les erreurs if (empty($_POST['MAX_FILE_SIZE'])) $infos = ''; //Si il y a eu une erreur ou si le formulaire n'a pas encore été validé (Facile à savoir, tant que le formulaire n'est pas validé, MAX_FILE_SIZE est vide), on l'affiche if ($infos != '' || empty($_POST['MAX_FILE_SIZE'])): //Affichage des informations d'erreur au début du formulaire ?> <span style="color:red"><?PHP echo $infos; ?></span><br> <form name="envoie" method="post" action="envoie.php" enctype="multipart/form-data"> Client :<input type="text" name="client" size="50" maxlenght="50"> <br> Titre de l'affiche : <input type="text" name="titre" size="30" maxlenght="50"> <br> Fichier :<input type="file" name="fichier1"> <br> <input type="hidden" name="MAX_FILE_SIZE" value="1000000000"> <input type="submit" value="Envoi"> </form> <?PHP ENDif; if ($infos == '' && !empty($_POST['MAX_FILE_SIZE'])){ ?> BRAVO, transfer réussi! <?PHP } ?>
Merci beaucoup encore une fois pour votre aide

Flo
Invité n'ayant pas de compte PHPfrance

03 mai 2005, 15:32

(je remercie www.siteduzero.com pr le tuto)

Mammouth du PHP | 19672 Messages

03 mai 2005, 15:41

Je ne connaissais pas le endif en PHP, amusant; enfin bon, voilà une correction, j'ai pas testé:
<?PHP

//Initialisation de la variables $infos
$infos = '';

//Initialisation des variables du formulaire (mise à '' si elles sont vides)
empty($_POST['client']) ? $client = '' : $client = $_POST['client'];
empty($_POST['titre']) ? $titre = '' : $titre = $_POST['titre'];

//Vérification du pseudo et du titre
if ($titre == '') $infos .= "- Vous devez définir un titre!<br>n";
if ($client == '') $infos .= "- Vous devez entrer le nom du client!<br>n";

//Pour savoir si le fichier a été uploadé, on vérifie si la taille est bien supérieur à 0
if (!empty($_FILES['fichier1']['size']))
{

    //On récupère la taille, le nom et le nom du fichier temporaire
    $f1_size = $_FILES['fichier1']['size'];
    $f1_name = $_FILES['fichier1']['name'];
    $f1_tmpname = $_FILES['fichier1']['tmp_name'];


    //Récupération de l'extension du fichier (on prend ce qui suit le dernier point et on le met en minuscule
    $ext = strtolower(substr($f1_name,strrpos($f1_name, ".")+1));

    //Création du tableau des extensions acceptées
    $valides = array("bmp","jpg","gif","png");

    //On vérifie la taille et l'extension, si tout est bon, on déplace le fichier
    if ($f1_size <= 1000000000 && in_array($ext,$valides))
    {
        move_uploaded_file($f1_tmpname, "./fichiers/{$f1_name}");
    }
    //Si tout est bon (aucune erreur dans $infos), on déplace le fichier
    if ($infos == '')
    {
        move_uploaded_file($f1_tmpname, "./fichiers/{$f1_name}") or $infos .= "- Impossible d'enregistrer le fichier, contacter le webmaster!<br>n";
    }
    if ($infos == '')
    {
        $res = mysql_connect('localhost','root','');
        mysql_select_db('fichiers',$res);
        $add = mysql_query("INSERT INTO uploads VALUES ('','{$titre}','{$client}','{$f1_name}',{$f1_size});");
    }
}
else
{
    $infos .= "- Vous devez sélectionner un fichier à uploader!<br>n";
}
//Si le formulaire n'a pas encore été validé, on n'affiche pas les erreurs
if (empty($_POST['MAX_FILE_SIZE'])) $infos = '';

//Si il y a eu une erreur ou si le formulaire n'a pas encore été validé (Facile à savoir, tant que le formulaire n'est pas validé, MAX_FILE_SIZE est vide), on l'affiche
if ($infos != '' || empty($_POST['MAX_FILE_SIZE']))
{
    //Affichage des informations d'erreur au début du formulaire
?>
<span style="color:red"><?PHP echo $infos; ?></span><br>
<form name="envoie" method="post" action="envoie.php" enctype="multipart/form-data">
Client :<input type="text" name="client" size="50" maxlenght="50">
<br>
Titre de l'affiche : <input type="text" name="titre" size="30" maxlenght="50">
<br>
Fichier :<input type="file" name="fichier1">
<br>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000000">
<input type="submit" value="Envoi">
</form>
<?PHP 
}
if ($infos == '' && !empty($_POST['MAX_FILE_SIZE']))
{
?>
BRAVO, transfer réussi!
<?PHP
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Flo
Invité n'ayant pas de compte PHPfrance

03 mai 2005, 16:11

Merci, mais ça marche toujours pas.
Quand je le teste (en faisant aperçu dans dreamwaver), et que j'envoi le formulaire après avoir rempli les champs, ça me propose d'enregistrer le document php lui même (envoi.php). C'est bizarre, mais de plus, ayant fai un minimu de base de données je suis sur k'il faut enregistrer les documents dans un endroit bien précis.

ViPHP
ViPHP | 2144 Messages

03 mai 2005, 16:23

Tu testes en local mais as-tu bien installé un serveur web avec php sur la machine ?

Flo
Invité n'ayant pas de compte PHPfrance

03 mai 2005, 16:27

J'ai installé easy php, normalement y a tout.

ViPHP
ViPHP | 2144 Messages

03 mai 2005, 16:30

as-tu essayé sans passer par la preview de Dreamweaver ?
Dirctement dans un browser ?

Flo
Invité n'ayant pas de compte PHPfrance

03 mai 2005, 16:39

Désolé pour cette question mais c koi un browser ?

ViPHP
ViPHP | 2144 Messages

03 mai 2005, 16:43

Le programme qu'on utilise pour surfer sur le net : Ie, mozilla, etc

Flo
Invité n'ayant pas de compte PHPfrance

03 mai 2005, 16:43

Et je fai comment pr tester avec ça ?

Mammouth du PHP | 19672 Messages

03 mai 2005, 17:23

OUvre un navigateur (Internet Explorer, Firefox, celui de ton choix) et tappe comme adresse : http://localhost

Autre méthode: clic-droit sur l'icode EasyPHP dans la barre des tâches (en bas à droite) et dans le menu tu dois avoir un lien vers la page index de ton serveur.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Flo
Invité n'ayant pas de compte PHPfrance

03 mai 2005, 17:30

Ok, merci mais l'erreur ne viens pas de là apparemment puisque je n'est rian (à part parent directory)...