Portion de script d'upload qui foire :'(

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Portion de script d'upload qui foire :'(

par nejme.eddinne » 25 août 2006, 13:03

any way check "upload_max_filesize"

par Invité » 25 août 2006, 11:58

Ok, merci, t'es un chef ! 8)

Rien à redire sur mon code sinon ?

++

Korg :lol:

par @rthur » 25 août 2006, 11:31

Avec un exit() derrière le header, ça marche ! Merci à tous et en particulier à toi Arthur, mais comme je suis du genre curieux, je voudrais savoir pourquoi ca fonctionne pas sans le exit() ???

Korg
Sur certaines configurations et de manière aléatoire, si ta page envoie quelque chose au navigateur juste après la commande header(), le navigateur ne va pas tenir compte du header et va continuer de charger la page...

C'est indiqué dans la doc de façon pas très explicite
http://fr.php.net/header#AEN119280
http://fr.php.net/header#64189

par Invité » 25 août 2006, 10:04

Avec un exit() derrière le header, ça marche ! Merci à tous et en particulier à toi Arthur, mais comme je suis du genre curieux, je voudrais savoir pourquoi ca fonctionne pas sans le exit() ???

Korg

par Korg » 25 août 2006, 09:33

Salut tlm,

- Oui, le fichier testé fait plus de 10Mo :)
- Oui, le bloc s'appelle bien "fichier"
- Oui j'ai l'attribut enctype="..."

Il faut savoir que le script ci-dessous marche bien. Tout se passe bien mais le contrôle sur le poids du fichier ne fonctionne pas. Si vous avez des commentaires et critiques à faire sur le code, n'hésitez pas, je suis même preneur ;)
<? session_start(); 
if (isset($_POST["Ajouter"])) {
$dos_desti = "docs/";
$temp_file = $_FILES['fichier']['tmp_name'];
$size_file = $_FILES['fichier']['size'];
if ($size_file > 10000000){
header("location:ajt_docs_err.php?k=poi");
}
if(!is_uploaded_file($temp_file)){
header("location:ajt_docs_err.php?k=int");
}else{
$nomfichier = str_replace("'","", $_FILES['fichier']['name']);
$nom_fichier = str_replace(" ","", $nomfichier);
$nom_fichier = strtr($nom_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$nom_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $nom_fichier);
if (file_exists($dos_desti . $nom_fichier)) { 
header("location:ajt_docs_err.php?k=exi");
}else{
$copymove = move_uploaded_file($temp_file, $dos_desti . $nom_fichier);
if ($copymove==false) {
header("location:ajt_docs_err.php?k=erf");
}
if($copymove==true){
include "connex.php";
if ($connex){
$q="INSERT INTO docs...";
mysql_query($q);
mysql_close();
header("location:docs2.php?id=".$_POST["ldoc"]."");
}else{
header("location:ajt_docs_err.php?k=erf");
}
}
}
}
}
?>
Korg

par Ryle » 24 août 2006, 20:34

- Le fichier que tu testes fait-il bien plus de 10Mo ? sinon il ne rentrera pas dans ton if :)

- Le champ dans lequel tu spécifies le chemin du fichier s'appelle-t-il bien "fichier" ($_FILES['fichier'])

- As-tu ajouté dans ton formulaire l'attribut enctype="..." nécessaire pour l'upload de fichier ?

(bref, plein de questions :))

par @rthur » 24 août 2006, 19:58

Bonsoir,

Essaye de mettre un exit();
après ta commande header

par Elie » 24 août 2006, 19:35

Qu'est ce qui ne marche pas en fait ?

Portion de script d'upload qui foire :'(

par Korg » 24 août 2006, 17:06

Hello, j'chui noob en php et j'ai voulu me lancer avec un script d'upload.

J'ai fait ça mais ca marche pas :
$size_file = $_FILES['fichier']['size'];

if ($size_file > 10000000){
header("location:ajt_doc_err.php?id=1");
}
La valeur de l'id récupère la nature de l'erreur en $_GET

Quelqu'un pour m'aider svp ?

Korg