IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Upload] Variable dans le chemin pas prise en compte


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut [Upload] Variable dans le chemin pas prise en compte
    Bonjour,

    voilà depuis maintenant 3 jours que je tente de comprendre pourquoi mon script d'upload n'envoie pas les fichiers la où il faut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    session_start();
     
            $id = $_COOKIE['id']; // -> id vaut '1'
     
            $diapid = $_SESSION['diapid']; // -> vaut '122'
     
            $path= "../../../../diap/photos/$id/$diapid/";
     
    ...
    // Ici vient le script d'upload, je ne l'ai pas posté pour plus de clarté, mais au besoin, n'hésitez pas
    ?>

    Les fichiers s'upload correctement, mais jamais au grand JAMAIS la variable $diapid n'est prise en compte !
    En somme, les images s'upload toujours dans le dossier juste avant $diapid. Ici elles iraient dans : diap/photos/1/

    Pourtant, lorsque je fais un echo $path, tout s'affiche exactement comme il faut

    J'ai vu sur le forum quelqu'un qui avait exactement le même problème, mais ça ne m'a pas beaucoup aider

    Voilà, j'espère avoir été claire dans mes explications

    En vous remerciant

  2. #2
    Membre chevronné Avatar de FredPsy
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 285
    Par défaut
    Bonsoir,
    Est ce que $diapid vaut toujours 122 ????

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Non, il s'agit d'un ID en auto_increment, donc il varie à chaque nouveau upload

  4. #4
    Membre chevronné Avatar de FredPsy
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 285
    Par défaut
    Pourrais tu effectivement envoyer ton script en entier.

    Tu dis que lorsque tu fais un , tu as le bon résultat.

    Vu le code au dessus, à l'affichage, tu obtiens donc : "diap/photos/1/122/". C'est donc étonnant que ton upload se fasse sur le répertoire précédent.

    Avec ton code, je pourrais mieux voir.

    Merci.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Voilà le code qui vient tout juste en dessous :

    PS : ce code n'est pas de moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
     
    <?php
    session_start();
     
            $id = $_COOKIE['id']; // -> id vaut '1'
     
            $diapid = $_SESSION['diapid']; // -> vaut '122'
     
            $path= "../../../../diap/photos/$id/$diapid/";
     
     
    // Code for Session Cookie workaround
    	if (isset($_POST["PHPSESSID"])) {
    		session_id($_POST["PHPSESSID"]);
    	} else if (isset($_GET["PHPSESSID"])) {
    		session_id($_GET["PHPSESSID"]);
    	}
     
     
     
    // Check post_max_size (http://us3.php.net/manual/en/features.file-upload.php#73762)
    	$POST_MAX_SIZE = ini_get('post_max_size');
    	$unit = strtoupper(substr($POST_MAX_SIZE, -1));
    	$multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1)));
     
    	if ((int)$_SERVER['CONTENT_LENGTH'] > $multiplier*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) {
    		header("HTTP/1.1 500 Internal Server Error");
    		echo "POST exceeded maximum allowed size.";
    		exit(0);
    	}
     
    // Settings
    	$save_path = "$path";				// The path were we will save the file (getcwd() may not be reliable and should be tested in your environment)
    	$max_file_size_in_bytes = 2147483647;				// 2GB in bytes
    	$extension_whitelist = array("jpg", "JPG", "JPEG", "gif", "png");	// Allowed file extensions
    	$valid_chars_regex = '.A-Z0-9_ !@#$%^&()+={}\[\]\',~`-';				// Characters allowed in the file name (in a Regular Expression format)
     
    // Other variables	
    	$MAX_FILENAME_LENGTH = 260;
    	$file_name = "";
    	$file_extension = "";
    	$uploadErrors = array(
            0=>"There is no error, the file uploaded with success",
            1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini",
            2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form",
            3=>"The uploaded file was only partially uploaded",
            4=>"No file was uploaded",
            6=>"Missing a temporary folder"
    	);
     
    // Validate the upload
    	if (!isset($_FILES['Filedata'])) {
    		HandleError("No upload found in \$_FILES for " . 'Filedata');
    		exit(0);
    	} else if (isset($_FILES['Filedata']["error"]) && $_FILES['Filedata']["error"] != 0) {
    		HandleError($uploadErrors[$_FILES['Filedata']["error"]]);
    		exit(0);
    	} else if (!isset($_FILES['Filedata']["tmp_name"]) || !@is_uploaded_file($_FILES['Filedata']["tmp_name"])) {
    		HandleError("Upload failed is_uploaded_file test.");
    		exit(0);
    	} else if (!isset($_FILES['Filedata']['name'])) {
    		HandleError("File has no name.");
    		exit(0);
    	}
     
    // Validate the file size (Warning the largest files supported by this code is 2GB)
    	$file_size = @filesize($_FILES['Filedata']["tmp_name"]);
    	if (!$file_size || $file_size > $max_file_size_in_bytes) {
    		HandleError("File exceeds the maximum allowed size");
    		exit(0);
    	}
     
     
    // Validate file name (for our purposes we'll just remove invalid characters)
    	$file_name = preg_replace('/[^'.$valid_chars_regex.']|\.+$/i', "", basename($_FILES['Filedata']['name']));
    	if (strlen($file_name) == 0 || strlen($file_name) > $MAX_FILENAME_LENGTH) {
    		HandleError("Invalid file name");
    		exit(0);
    	}
     
     
    // Validate that we won't over-write an existing file
    	if (file_exists($save_path . $file_name)) {
    		HandleError("File with this name already exists");
    		exit(0);
    	}
     
    // Validate file extention
    	$path_info = pathinfo($_FILES['Filedata']['name']);
    	$file_extension = $path_info["extension"];
    	$is_valid_extension = false;
    	foreach ($extension_whitelist as $extension) {
    		if ($file_extension == $extension) {
    			$is_valid_extension = true;
    			break;
    		}
    	}
    	if (!$is_valid_extension) {
    		HandleError("Invalid file extension");
    		exit(0);
    	}
     
    // Validate file contents (extension and mime-type can't be trusted)
    	/*
    		Validating the file contents is OS and web server configuration dependant.  Also, it may not be reliable.
    		See the comments on this page: http://us2.php.net/fileinfo
    		
    		Also see http://72.14.253.104/search?q=cache:3YGZfcnKDrYJ:www.scanit.be/uploads/php-file-upload.pdf+php+file+command&hl=en&ct=clnk&cd=8&gl=us&client=firefox-a
    		 which describes how a PHP script can be embedded within a GIF image file.
    		
    		Therefore, no sample code will be provided here.  Research the issue, decide how much security is
    		 needed, and implement a solution that meets the needs.
    	*/
     
     
    // Process the file
    	/*
    		At this point we are ready to process the valid file. This sample code shows how to save the file. Other tasks
    		 could be done such as creating an entry in a database or generating a thumbnail.
    		 
    		Depending on your server OS and needs you may need to set the Security Permissions on the file after it has
    		been saved.
    	*/
    	if (!@move_uploaded_file($_FILES['Filedata']["tmp_name"], $save_path.$file_name)) {
    		HandleError("File could not be saved: ". $save_path.$file_name);
    		exit(0);
    	}
     
    // Return output to the browser (only supported by SWFUpload for Flash Player 9)
     
    	echo "File Received ". $save_path.$file_name;
    	exit(0);
     
     
    /* Handles the error output.  This function was written for SWFUpload for Flash Player 8 which
    cannot return data to the server, so it just returns a 500 error. For Flash Player 9 you will
    want to change this to return the server data you want to indicate an error and then use SWFUpload's
    uploadSuccess to check the server_data for your error indicator. */
    function HandleError($message) {
    	header("HTTP/1.1 500 Internal Server Error");
    	echo $message;
    }
     
    ?>

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14

Discussions similaires

  1. [Upload] Variable dans le chemin pas prise en compte
    Par bermanarber dans le forum Langage
    Réponses: 19
    Dernier message: 12/12/2007, 23h28
  2. [MySQL] Variable pas prise en compte dans la requête
    Par Zenerox dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/04/2007, 21h54
  3. Variable dans un chemin
    Par Strix dans le forum Langage
    Réponses: 2
    Dernier message: 15/01/2007, 10h35
  4. [POO] Variable pas prise en compte
    Par cyrill.gremaud dans le forum Langage
    Réponses: 21
    Dernier message: 18/08/2006, 20h10
  5. Réponses: 1
    Dernier message: 19/05/2006, 19h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo