News
hack2 - Dec 11th, 2016
function curPageName() { //nom de la page courante
return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);
}

function curPageURL() { //URL de la page courante
$URL_page = 'http';
if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$URL_page .= "s";}
$URL_page .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$URL_page .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$URL_page .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $URL_page;
}

function move_upload($Kontrol_file, $dossier_courant){ //transfert d'un fichier upload? dans le dossier courant - dossier contenant la page du script de l'upload
/* ------------------
$kontrol_file = $_FILES['fichiercsv']; //controle file dans le formulaire
$tmp_file = $kontrol_file['tmp_name']; //nom du fichier temporaire qui sera t?l?charg?
$type_file = $kontrol_file['type']; // extension du fichier ? t?l?charge
$name_file = $kontrol_file['name']; //nom du fichier ? t?l?charger du syst?me client
$size_file = $kontrol_file['size']; //taille du fichier ? t?l?charger
$error_file = $kontrol_file['error']; //une erreur est elle survenue - pas d'erreur si 0

echo "tmp_file: $tmp_file
";
echo "type_file: $type_file
";
echo "name_file: $name_file
";
echo "size_file: $size_file
";
echo "error_file: $error_file
";

v?rifie que le fichier temporaire est bien ?t? t?l?charg? - formulaire de type: method="post" enctype="multipart/form-data"
calcule l'emplacement du futur fichier dans le syst?me de fichier du serveur - m?me emplacement que le fichier courant
Si transfert r?ussit vers emplacement courant, fourni l'adresse type URL du fichier t?l?charg?
retourne l'emplacement du fichier sur le serveur dans son syst?me de fichier (Unix...)
-------------- */
if ($Kontrol_file["error"] == UPLOAD_ERR_OK) { //UPLOAD_ERR_OK = 0 - pas d'erreur lors du uploadage temporaire du fichier
$uploads_dir = $_SERVER['DOCUMENT_ROOT'].$dossier_courant;
$tmp_name = $Kontrol_file["tmp_name"];
$name = $Kontrol_file["name"];
$final_name = "$uploads_dir$name"; //chemin complet de la page sur le serveur exprim? dans le syst?me de fichier du serveur (ex sous Unix)
$reponse = move_uploaded_file($tmp_name, $final_name); //d?placement du fichier temporaire dans le dossier courant
if ($reponse) { //transfert r?ussi! nous fournissons le lien HTTP:// du fichier sur le serveur
$lien = curPageURL(); //URL de la page courante
$page_courante = curPageName(); //nom de la page courante
$lien = substr($lien, 0, - strlen($page_courante)); // retourne le dossier contenant la page courante sans le nom de la page courante
$lien = $lien.$name; //ajoute le nom du fichier upload? au dossier contenant la page courante
echo "

Le fichier $name a bien ?t? upload?

";
return "$uploads_dir$name"; //retourne la position du fichier dans le syst?me de fichier du serveur (ex Unix...)
}
}
}

function masterUpload($inputFileName){ //fonction maitre pour upload - re?oit sous forme de string le nom du controle de type input file
if (isset($_FILES[$inputFileName])){ //teste si le formulaire peut t?l?charger un fichier
$kontrol_file = $_FILES[$inputFileName];
$page_courante = curPageName(); //nom de la page courante avec son extension
$script_name = $_SERVER['SCRIPT_NAME']; //chemin de la page courante y compris son nom et son extension
$dossier_courant = substr($script_name, 0, - strlen($page_courante)); // retourne le dossier contenant la page courante

$extensions_valides = array( 'csv' , 'txt', 'html','php','js','gif', 'jpg', 'avi', 'flv', 'mp3', 'xls', 'doc' );
$name_file = $kontrol_file['name']; //nom du fichier ? t?l?charger du syst?me client
$extension_upload = substr(strrchr($name_file, '.') ,1); //extension du fichier ? t?l?charger
if (in_array($extension_upload,$extensions_valides) ){ //v?rification de l'extension de fichier ? t?l?charger
$destination = move_upload($kontrol_file, $dossier_courant); //appelle la fonction pour d?placer le fichier
} else {
echo "L'extension du fichier s?lectionn? n'est en principe pas accept?e, nous allons toutefois l'Upload? si possible! n
";
$destination = move_upload($kontrol_file, $dossier_courant); //appelle la fonction pour d?placer le fichier
}
}
return true;
}
?>



Upload de fichier - transfert de fichier vers le serveur





Upload d'un fichier vers le serveur


Pour r?aliser l'Upload d'un fichier de votre ordinateur (poste client) vers
un serveur vous devez utiliser un formulaire avec une m?thode sp?ciale.


par exemple vous devrez ?crire:


<form action="" name="form_upload" id="form_upload"
method="post" enctype="multipart/form-data">


Votre formulaire devra donc ?tre de m?thode "post" et surtout avec
l'enctype "multipart/form-data"


C'est cette derni?re qui lors de la validation, soumission du formulaire
assurera le transfert de votre fichier vers le serveur.


Dans un premier temps cette m?thode transf?re un fichier temporaire sur le
serveur selon un emplacement temporaire lui aussi d?finit par les param?tres
du serveur.


Si vous souhaitez conserver ce fichier il vous faudra alors le d?placer ?
un autre emplacement sur le serveur.


En effet le fichier temporaire ainsi upload? sera supprim? d?s la fin de
votre script!


Quoiqu'il en soit vous venez ? ce stade de upload? un fichier certe temporaire
vers le serveur.


D?placer un fichier temporaire vers un emplacement stable sur le serveur


Si vous souhaitez conserver votre fichier sur le serveur vous devez donc
d?placer le fichier temporaire upload? vers un autre emplacement sur le serveur.


Bien entendu cela suppose que vous avez les droits d'?criture sur cet emplacement
sur le serveur, ce qui est g?n?ralement le cas si l'emplacement serveur est
votre propre site web, ou encore si l'auteur du site vous autorise cette ?criture.


Pour d?placer le fichier temporaire sur le serveur nous aurons besoin de
conna?tre son emplacement et son nom sur le serveur.


Ceci nous est fourni en php grace au code suivant:


$kontrol_file = $_FILES['fichiercsv']; //controle
file dans le formulaire - fichiercsv est le nom (name) du contr?le input type
file dans le formulaire qui nous permet de choisir le fichier sur l'ordinateur
client


        $tmp_file = $kontrol_file['tmp_name'];
//nom du fichier temporaire qui sera t?l?charg?


        $type_file = $kontrol_file['type'];
// extension, type du fichier ? t?l?charger


        $name_file = $kontrol_file['name'];
//nom du fichier ? t?l?charger dans le syst?me client


        $size_file = $kontrol_file['size'];
//taille du fichier ? t?l?charger


        $error_file = $kontrol_file['error'];
//une erreur est elle survenue - pas d'erreur si 0


Avec ceci nous connaissons le nom et l'emplacement du fichier temporaire
upload? sur le serveur ['tmp_name']


Nous connaissons ?galement le nom du fichier s?lectionn? sur le syst?me client
(seulement son nom et son extension, mais pas son chemin - pour raison dite
de s?curit? du syst?me client!) ['name']


Nous pouvons ?galement savoir si une erreur s'est produite lors de la tentaive
d'upload du fichier temporaire ['error'] - si 0 aucune erreur lors de l'upload


['type'] fourni davantage l'appartenance du fichier client que son extension,
ainsi nous serons si un fichier est li? ? excel mais pas son extension


['size'] donne la taille du fichier vu du client


l'upload
est limit? en taille par le serveur, vous serez oblig? de vous adapter ? cette
taille sauf si vous ?tes administrateur du serveur - modification du param?trage
du serveur n?cessaire


Pour d?placer le fichier temporaire nous aurons ?galement besoin de conna?tre
l'emplacement o? nous allons le placer sur le serveur.


En fait le d?placement se fait de la zone temporaire vers un emplacement
connu sur le serveur.


Pour cela il vous faudra donc indiquer un emplacement sur le serveur o? transf?r?
votre fichier.


Dans notre cas cet emplacement sera celui contenant le script autorisant
ce transfert.


La page php contenant se script de transfert sra appel?e page courante.


Dans notre cas le fichier temporaire sera donc d?plac? dans le m?me dossier
que celui de la page courante.


Vous pouvez bien entendu choisir un autre endroit sur le serveur si ce dernier
est valide.


Pour cela nous utilisrons 2 instructions:



  • $_SERVER['DOCUMENT_ROOT'] qui donne l'emplacement de la racine de votre
    site exprim?e dans le syst?me de fichier de votre serveur (Unix)

  • $_SERVER['SCRIPT_NAME']; //chemin de la page courante y compris son
    nom et son extension


Avec ceci nous avons tout ce qui nous faut pour r?aliser notre transfert
et ainsi concerver le fichier sur le serveur, m?me apr?s la fin de notre script.


Passons maintenant ? un petit essai!


Un exemple d'upload




Choix du fichier :







masterUpload("fichiercsv");
?>

Code de cette page


<?php


function curPageName() { //nom de la page courante


        return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);


}


 


function curPageURL() { //URL de la page courante


         $URL_page = 'http';


         if (isset($_SERVER["HTTPS"])
&& $_SERVER["HTTPS"] == "on") {$URL_page .= "s";}


         $URL_page .= "://";


         if ($_SERVER["SERVER_PORT"]
!= "80") {


          $URL_page .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];


         } else {


          $URL_page .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];


         }


         return $URL_page;


}


 


function move_upload($Kontrol_file, $dossier_courant){ //transfert d'un fichier
upload? dans le dossier courant - dossier contenant la page du script de l'upload


        /* ------------------


        $kontrol_file = $_FILES['fichiercsv'];
//controle file dans le formulaire


        $tmp_file = $kontrol_file['tmp_name'];
//nom du fichier temporaire qui sera t?l?charg?


        $type_file = $kontrol_file['type'];
// extension du fichier ? t?l?charge


        $name_file = $kontrol_file['name'];
//nom du fichier ? t?l?charger du syst?me client


        $size_file = $kontrol_file['size'];
//taille du fichier ? t?l?charger


        $error_file = $kontrol_file['error'];
//une erreur est elle survenue - pas d'erreur si 0


        


        echo "tmp_file:  $tmp_file
</br>";


        echo "type_file:  $type_file
</br>";


        echo "name_file:  $name_file
</br>";


        echo "size_file:  $size_file
</br>";


        echo "error_file:  $error_file
</br>";


        


        v?rifie que le fichier temporaire
est bien ?t? t?l?charg? - formulaire de type:  method="post"
enctype="multipart/form-data"


        calcule l'emplacement du
futur fichier dans le syst?me de fichier du serveur - m?me emplacement que le
fichier courant


        Si transfert r?ussit vers
emplacement courant, fourni l'adresse type URL du fichier t?l?charg?


        retourne l'emplacement du
fichier sur le serveur dans son syst?me de fichier (Unix...)


        -------------- */


        if ($Kontrol_file["error"]
== UPLOAD_ERR_OK) { //UPLOAD_ERR_OK = 0 - pas d'erreur lors du uploadage temporaire
du fichier


                $uploads_dir
= $_SERVER['DOCUMENT_ROOT'].$dossier_courant;


                $tmp_name
= $Kontrol_file["tmp_name"];


                $name
= $Kontrol_file["name"];


                $final_name
= "$uploads_dir$name"; //chemin complet de la page sur le serveur
exprim? dans le syst?me de fichier du serveur (ex sous Unix)


                $reponse
= move_uploaded_file($tmp_name, $final_name); //d?placement du fichier temporaire
dans le dossier courant


                if
($reponse) { //transfert r?ussi! nous fournissons le lien HTTP:// du fichier
sur le serveur


                        $lien
= 'http'; //lien du fichier transf?r? sur le serveur - adresse type URL


                        if
(isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] ==
"on") {$lien .= "s";}


                        $lien
.= "://";


                        if
($_SERVER["SERVER_PORT"] != "80") {


                                $lien
.= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$dossier_courant.$name;


                        }
else {


                                $lien
.= $_SERVER["SERVER_NAME"].$dossier_courant.$name;


                        }


                        echo
"<p>Le fichier <span style='color:#00f'><strong> <a
href='$lien' target='_blank'>$name</a></strong></span>
a bien ?t? upload?</p>";


                        return
"$uploads_dir$name"; //retourne la position du fichier dans le syst?me
de fichier du serveur (ex Unix...)


                }


        }


}


?>


 


<html>


<head>


<title>Upload de fichier - transfert de fichier vers le serveur</title>


<meta name="generator" content="Namo WebEditor v5.0">


<meta name="generator2" content="jedit">


<link rel="stylesheet" href="../style.css">


</head>


<body>


<form action="" name="form_upload" id="form_upload"
method="post" enctype="multipart/form-data">


 


<p style="color:#00f;font-weight:bold">Choix du fichier :
</p>


<p><input type="file" name="fichiercsv" id="idfichiercsv"
size="26" >


 


<input type="submit" value="Upload file to server">


</form>


 


<?php


if (isset($_FILES['fichiercsv'])){ //teste si le formulaire
peut t?l?charger un fichier


        $kontrol_file = $_FILES['fichiercsv'];


        $page_courante = curPageName();
//nom de la page courante avec son extension


        $script_name = $_SERVER['SCRIPT_NAME'];
//chemin de la page courante y compris son nom et son
extension


        $dossier_courant = substr($script_name,
0, - strlen($page_courante));  // retourne le dossier
contenant la page courante


        


        $extensions_valides = array(
'csv' , 'txt', 'html','php','js','gif', 'jpg', 'avi', 'flv', 'mp3', 'xls', 'doc'
);


        $name_file = $kontrol_file['name'];
//nom du fichier ? t?l?charger du syst?me client


        $extension_upload = substr(strrchr($name_file,
'.')  ,1); //extension du fichier ? t?l?charger


        if (in_array($extension_upload,$extensions_valides)
){ //v?rification de l'extension de fichier ? t?l?charger


                $destination
= move_upload($kontrol_file, $dossier_courant); //appelle
la fonction pour d?placer le fichier


        } else {


                echo
"L'extension du fichier s?lectionn? n'est en principe pas accept?e, nous
allons toutefois l'Upload? si possible! n </br>";


                $destination
= move_upload($kontrol_file, $dossier_courant); //appelle
la fonction pour d?placer le fichier


        }


}


?>


 


</body>


</html>




Skandaosa.com All Rights Reserved