Upload de fichiers chez Free

Mammouth du PHP | 19672 Messages

17 août 2005, 20:27

Pour info, un upload http est par défaut limité à 2Mo, chez free comme ailleurs. Regardez le phpinfo...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 17 Messages

17 août 2005, 22:04

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

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 17 Messages

18 août 2005, 09:47

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

merciavous
Invité n'ayant pas de compte PHPfrance

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 ! :)

Eléphant du PHP | 82 Messages

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. :)
Modifié en dernier par s3b54sk8 le 15 nov. 2005, 19:40, modifié 1 fois.
Sébastien.

Invité
Invité n'ayant pas de compte PHPfrance

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 "" ?

Eléphant du PHP | 199 Messages

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 !

Eléphant du PHP | 82 Messages

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:
Sébastien.

Eléphant du PHP | 199 Messages

15 nov. 2005, 19:44

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

Eléphant du PHP | 82 Messages

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.
Sébastien.

Eléphant du PHP | 199 Messages

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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

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';

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 82 Messages

16 nov. 2005, 08:12

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

Eléphant du PHP | 199 Messages

16 nov. 2005, 18:46

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