Upload de fichiers chez Free

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 : Upload de fichiers chez Free

par Manio 54 » 16 nov. 2005, 18:46

lol c'est vrai j'avais pas pensé que l '/' n'était pas dans l'id_basse !

par s3b54sk8 » 16 nov. 2005, 08:12

Merci ca fonctionne parfaitement. En fait il suffisait de mettre "../../" pour atteindre la racine :oops:

par Truc » 16 nov. 2005, 01:19

Salut, apparemment tu as tout essayé sauf ça (en prime un test de validation qui ne fera pas de mal :wink: ) :
$chemin_dest="../../photos/".$basse_id."/".$dest_fichier;
if(move_uploaded_file($_FILES['photo']['tmp_name'], $chemin_dest))
   echo 'Upload Ok';
else
   echo 'Erreur';

par Manio 54 » 15 nov. 2005, 20:06

ah ok je vois !
Je pense que l'erreur viens du lien vu que cela marche très bien chez moi qui suis aussi chez free ! Mais ou sa je vois pas trop !
Les pros du PHP une idée ?

par s3b54sk8 » 15 nov. 2005, 19:57

Alors $basse_id c'est juste l'id du projet à laquelle l'image appartient. Ainsi sur le site quand on choisira un projet, je rechercherais et sélectionnerais les images correspondant au projet sélectionné dans cette table en fonction de cette entrée.

Lors de l'upload, cette variable est alimenter correctement par le formulaire.

par Manio 54 » 15 nov. 2005, 19:44

$basse_id j'ai pas suivi a quoi il correspondait ?

par s3b54sk8 » 15 nov. 2005, 19:37

Voilà ce que je viens de tester :
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier.$dest_fichier);
Ne fonctionne pas.
move_uploaded_file($_FILES['photo']['tmp_name'], "$dest_dossier"."$dest_fichier");
Ne fonctionne pas.
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier{$dest_fichier});
Ne fonctionne pas.
move_uploaded_file($_FILES['photo']['tmp_name'], "../kbasse/photos/{$basse_id}/{$dest_fichier}");
Ne fonctionne pas non plus pourtant le dossier "Racine/kbasse/photos/1" existe bien et mon script me donne bien le bon id (premieère chose que j'ai regardé justement, voir si il pointait pas un dossier inexistant...).

Voilà tout ma condition :

if($step == "1"){

	// Récupération de divers infos du formulaire :
	$nserie = $_POST['nserie'];
	$comment = $_POST['comment'];
	$nature = $_POST['nature'];
	$basse_id = $_POST['basse_id'];



	if(isset($_FILES['photo']))
	{
	  // Paramètres :
	  $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
	  $taille_max = "500000";
	  $dest_dossier = '../kbasse/photos/'.$basse_id.'/';
	  unset($erreur);
	  // chmod($dest_fichier, 0777);

	  //	
	  // Vérifications :
	  //
	  // Bonne extension :
	  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
	  {
		$erreur = "extension";
	    echo ('Veuillez sélectionner un fichier de type png, gif ou jpg !');  
	  }
	  elseif( file_exists($_FILES['photo']['tmp_name']) and filesize($_FILES['photo']['tmp_name']) > $taille_max)
	  {
		$erreur = "taille";
	    echo ("L'image doit faire moins de 500Ko !");
	  }

	  // Copie du fichier
	  if(!isset($erreur))
	  {
		// Récupération du nom du fichier
	    $dest_fichier = basename($_FILES['photo']['name']);
	    
		//
		// formatage nom fichier
	    //
		// enlever les accents :
	    $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
	    // remplacer les caracteres autres que lettres, chiffres et point par _
	    $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
	    // copie du fichier
	    move_uploaded_file($_FILES['photo']['tmp_name'], "../kbasse/photos/{$basse_id}/{$dest_fichier}");
	  }
	}
	
	$sql = "INSERT INTO kah_img (pid,url,bass_id,comment,nature) VALUES('','".$dest_fichier."','".$basse_id."','".$comment."','".$nature."')";

	// on envoie la requete
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// Redirection en cas de succès

} // Fin step1
Ca sera peut etre plus parlant.

Et mon arborescence :
Racine/kbasse/photos/$basse_id/ (qui existe)
Racine/kbasse/admin/mod_img_add.php

Voilà si ca peut aider à m'aider... :roll:

par Manio 54 » 15 nov. 2005, 19:16

desolé le post précédent c'était moi mais apparament j'avais du virer mais cookies car je n'étais pas identifié automatiquement !

par Invité » 15 nov. 2005, 19:09

Mon dossier photos était un niveau au dessus du .php !
Sinon si tu mets ton nom de dossier non sous forme de variable mais en "normal" genre ../photos
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier.{$dest_fichier}"); // et si tu enleves les "" ?

par s3b54sk8 » 15 nov. 2005, 18:34

Bonjour à tous.

Je me permet de remonter ce sujet parce que j'ai une question se rapportant à ce code (étant donné que je suis aussi chez Free et que ca bug et que ce code a l'air de marcher chez les autres mais pas chez moi) :
<?php
//On récupère la taille, le nom et le nom du fichier temporaire
$f1_size = $_FILES['photo']['size'];
$f1_name = $_FILES['photo']['name'];
$f1_tmpname = $_FILES['photo']['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","tif","wbmp");
//On vérifie la taille et l'extension, si tout est bon, on déplace le fichier

if ($f1_size <= 10000000 && in_array($ext,$valides)):
move_uploaded_file($f1_tmpname, "./photo/{$f1_name}");


endIf

?>

Et plus particulièrement à cette partie :

if ($f1_size <= 10000000 && in_array($ext,$valides)):
move_uploaded_file($f1_tmpname, "./photo/{$f1_name}");

Trois petites questions :

Déjà à quoi servent les "{" et "}" autour de $f1_name ?

Ton fichier *.php est au meme niveau que le dossier photo si je me trompe pas ?

Et si on a par exemple dans notre arborescence sur notre serveur :
Racine -> photos
Racine -> admin -> ajout_img.php

Quelle est la destination que l'on doit mettre ? J'ai essayé "../photos/", "/var/www/free.fr/mon_compte/photos/" mais ca marche pas.

Voilà quand même la ligne ou se trouve mon erreur :
move_uploaded_file($_FILES['photo']['tmp_name'], "$dest_dossier"."{$dest_fichier}");

Si quelqu'un pouvait me filer un coup de pouce (pas de poing ca fait mal) ca serait sympa. :)

remerciement

par merciavous » 19 août 2005, 21:40

je me suis servi aussi de ce script et c'est le seul qui fonctionne apres pas mal de recherches.
bravo ! :)

par spiglik » 18 août 2005, 09:47

ok merci je pense que je vais faire ca alors :)

par Cyrano » 17 août 2005, 22:08

pas vraiment sauf en passant par le ftp et les fonction PHP de ftp sont désactivées chez free. DOnc il ne reste que le client ftp.

par spiglik » 17 août 2005, 22:04

ah ok merci beaucoup
un moyen de passer outre ? sans php s'il faut

par Cyrano » 17 août 2005, 20:27

Pour info, un upload http est par défaut limité à 2Mo, chez free comme ailleurs. Regardez le phpinfo...