Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/02/2011, 10h45   #1
 
Inscription : février 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 3
Points : -1
Points : -1
Par défaut Upload et PHP_SELF

Bonjour.
Je galère avec le script ci-dessous.
Si je mets exactement le même code dans un fichier enregistre.php et que bien sur je modifie la ligne <form... en conséquence, l'upload se passe bien.
Avec
Code :
<form name="delibere" action="<?php $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
, impossible d'uploader le fichier et $_FILES['document']['error'] = 0, le fichier temporaire apparaît bien dans le dossier temporaire du serveur, mais je ne le retrouve pas ou il devrait être.
Par contre si je met
Code :
<form name="delibere" action="enregistre.php" enctype="multipart/form-data" method="post">
j'arrive bien à uploader le fichier.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
 
<?php
(isset($_POST['day'])) ? $day = $_POST['day'] : $day = date("d");
(isset($_POST['month'])) ? $month = $_POST['month'] : $month = date("m");
(isset($_POST['year'])) ? $year = $_POST['year'] : $year = date("Y");
(isset($_POST['document'])) ? $file = $_POST['document'] : $file = "";
(isset($_POST['elm1'])) ? $elm1 = $_POST['elm1'] : $elm1 = "";
(isset($bouton)) ? $bouton = "hidden" : $bouton = "visible";
$txt_erreur = "shh";
$erreur = false;
// Contrôle du formulaire et envoie
// Contrôle du fichier
// Code identique dans enregistre.php 
if (isset($_FILES['document']))  {
$log = fopen(date("YmdHis").".txt","w");
	$dossier = "";
fwrite($log,"dossier : ".$dossier."\r\n");
	$fichier = basename($_FILES['document']['name']);
fwrite($log,"fichier : ".$fichier."\r\n");
	$taille_maxi = 1000000;
	$taille = filesize($_FILES['document']['tmp_name']);
fwrite($log,"taille : ".$taille."\r\n");
	$extensions = array(".pdf",".jpg");
fwrite($log,"extension : ".$extensions."\r\n");
	$extension = strrchr($_FILES['document']['name'], '.');
	//Début des vérifications de sécurité...
	if(!in_array($extension, $extensions)) { //Si l'extension n'est pas dans le tableau
		$txt_erreur .= 'Vous devez uploader un document de type pdf<br>';
fwrite($log,$txt_erreur."\r\n");
	}
	if ($taille > $taille_maxi) {
		$txt_erreur .= 'Le document est trop gros...<br>';
fwrite($log,$txt_erreur."\r\n");
	}
	if(!isset($txt_erreur)) { //S'il n'y a pas d'erreur, on upload
		//On formate le nom du fichier ici...
//		$fichier = "Conseil du ".$_POST['day']."-".$_POST['month']."-".$_POST['year'].".pdf";
     $fichier = $year."-".$month."-".$day."-CM";
 
		if(move_uploaded_file($_FILES['document']['tmp_name'], $dossier.$fichier)) {
			echo '<div style=\"color:green;\">Upload effectué avec succès !</div>';
			$txt_erreur .= "Document téléchargé";
		}
			else  {
			echo 'Echec de l\'upload !<br>';
			$txt_erreur .= "Erreur de chargement";
		}
	}
	print_r($_FILES['document']);
fwrite($log,"tmp_name : ".$_FILES['document']['tmp_name']."\r\n");
fwrite($log,$txt_erreur."\r\n");
fwrite($log,"Code erreur : ".$_FILES['document']['error']."\r\n");
fclose($log);
}
// Fin du code identique dans enregistre.php
?>
 
<html>
<head>
<title>Téléchargement</title>
<link rel="stylesheet" type="text/css" href="../admin.css">
<link rel="stylesheet" type="text/css" href="../formulaire.css">
 
</head>
<body>
<h1 style="titre">Saisie des délibérés du conseil municipal</h1>
<?php
if (isset($txt_erreur) && $txt_erreur !="") {
	echo $txt_erreur;
}
?>
<form name="delibere" action="<?php $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
 <p class="double">
<label for="nom" class="">Date du conseil <span class="exposant">*</span> : </label>
<?php
require("../date.php");
?>
</p>
<p class="double">
<label for="file" class="">Emplacement du document <span class="exposant">*</span> : </label>
 <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input type="file" name="document">
</p>
<p class="simple">
Description sommaire (optionnel)
<textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%"><?php echo $elm1; ?></textarea>
</p>
<p class="simple">
<input type="submit" value="Envoyer" name="bouton" style="margin-right:30px; width:130px; visibility:<?php echo $bouton; ?>">
<input type="reset" value="Effacer" style="margin-right:30px; width:130px;">
<input type="button" value="Retour au choix" style="color:#ff12cc; width:130px;" onclick="location.href='../retour.php'">
</p>
</form>
</body>
</html>
Et voici un fichier log.txt

dossier :
fichier : liste_marches.pdf
taille : 262442
extension : Array
tmp_name : J:\EasyPHP5\tmp\php264.tmp
texte erreur :
Code erreur : 0

Merci de votre aide.
philg42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 10h48   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063

et précise ta question.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 10h51   #3
 
Inscription : février 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 3
Points : -1
Points : -1
Par défaut Merci de votre remarque.

Cordialement
philg42 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 21/02/2011, 10h55   #4
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
Citation:
Avec PHP_SELF, impossible. $_FILE['document']['error'] = 0,
ça je comprends pas ce que ça veut dire...
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 10h59   #5
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
Code :
1
2
3
4
5
6
7
8
9
		if(move_uploaded_file($_FILES['document']['tmp_name'], $dossier.$fichier)) {
			echo '<div style=\"color:green;\">Upload effectué avec succès !</div>';
			$txt_erreur .= 'Document téléchargé fichier temporaire déplacé vers "'.$dossier.$fichier.'"'."\r\n");
 
		}
			else  {
			echo 'Echec de l\'upload !<br>';
			$txt_erreur .= "Erreur d'enregistrement";
		}

de plus


Code :
1
2
3
$txt_erreur = "shh";
// blablabla
if(!isset($txt_erreur)) {}
ne pas oublier
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 13h05   #6
 
Inscription : février 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 3
Points : -1
Points : -1
Désolé pour le résolu, mais ça fonctionne toujours pas alors que le même script dans un autre fichier marche!
Cdt
philg42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 14h06   #7
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
ok

je suis triste que ça ne marche pas, mais sans plus d'info je ne peux que compatir. Je pense toujours que tu devrais corriger l'histoire du if( ! isset($txt_erreur) ) parce que c'est une condition toujours fausse, d'autant que tu déclares un booléen $erreur qui ne te sert pas.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h48.


 
 
 
 
Partenaires

Hébergement Web