La fonction LOAD DATA LOCAL INFILE

Pour lutter contre les actes de malveillances et continuer à protéger autant que possible les données de nos clients, nous avons désactivé la fonction "LOAD DATA LOCAL INFILE".

Ne sont pas concernées par cette modification les personnes important leurs fichiers CSV (à condition de ne pas cocher "CSV via LOAD DATA") via phpMyAdmin.

La fonction "LOAD DATA LOCAL INFILE" permet d'importer un fichier CSV dans une table MySQL et est malheureusement désormais fréquemment utilisée par les pirates pour obtenir l'accès à certains sites hébergés sur des machines acceptant cette fonction.

Plus d'informations sur les risques de sécurité avec la fonction LOAD DATA LOCAL INFILE sur : http://dev.mysql.com/doc/refman/5.7/en/load-data-local.html

Nous fournissons bien entendu une alternative pour continuer à importer des données au format CSV dans une table MySQL. Ci-dessous, un exemple en quelques lignes PHP faciles à implémenter dans votre script PHP ou créez simplement un nouveau fichier PHP dans votre répertoire /public_html :

<?

// Le code proposé ci-dessus ne l'est qu'à titre d'exemple pour que vous puissiez
// comprendre comment remplacer cette fonction, libre à vous de développer
// votre propre moyen plus efficace pour insérer des données.

$NomDuFichier = "data.csv";

// ouverture du fichier csv en lecture
$handle = fopen($NomDuFichier, "r");
if ($handle) {
// decomposition de chaque ligne du fichier csv
while (($data = fgetcsv($handle, 1000, ";", "\"")) !== FALSE) {
$num = count($data)-1;
// generation de la requete SQL
$query = "INSERT INTO `test` VALUES (";
for ($c=0; $c < $num; $c++) {
$query .= "'" . mysql_real_escape_string($data[$c]) ."',";
}
$query .= "'" . mysql_real_escape_string($data[$num]) ."')";
// insertion de la ligne dans la base MySQL
mysql_query($query, $link) or die (mysql_error());
$query = NULL;
}
// fermeture du fichier csv
fclose($handle);
} else {
echo "<p>Erreur: impossible d'ouvrir le fichier.</p>\n";
exit(1);
}
?>


Il nous est malheureusement impossible de vous indiquer précisément à quel endroit de votre script ces lignes de code doivent être ajoutées.

Nous vous invitons également à consulter la documentation de PHP concernant fgetcsv ici: http://php.net/manual/fr/function.fgetcsv.php

autre script proposé par Régis Giudicelli :

   // ouverture du fichier csv en lecture

    $handle = fopen('data/'.$filename, "r");

    if ($handle) {

        // decomposition de chaque ligne du fichier csv

        $row = 0;

         while (($data = fgetcsv($handle, 1000, ";", "\"")) !== false) {

            $num = count($data)-1;

            if ($row==0) {

                $query = "INSERT INTO `test` VALUES (";

            } else {

                $query .= ",(";

            }

            $query .= "'" . mysql_real_escape_string($data[0]) ."'";

            for ($c=1; $c < $num; $c++) {

                $my_valeur=$data[$c];

                if ($my_valeur!="NULL") {

                    $query .= ",'" . mysql_real_escape_string($data[$c]) ."'";

                } else {

                    $query .= ",NULL";

                }

            }

             $query .= ")"; 

            if ($row==100) {

                // insertion des lignes dans la base MySQL

                mysql_query($query, $link) or die(mysql_error());

                $query="";

                $row=0;

            } else {

                $row++;

            }

        } 

        if ($query!="") {

             // il reste des lignes à insérer

            mysql_query($query, $link) or die(mysql_error());

        }

        // fermeture du fichier csv

        fclose($handle);

    } else {

        echo "<p>Erreur: impossible d'ouvrir le fichier.</p>\n";

        exit(1);

    }



  • 151 Utilisateurs l'ont trouvée utile
Cette réponse était-elle pertinente?

Articles connexes

PrestaShop - Créez votre boutique en ligne

PrestaShop - Rapide, Simple, Performante et Gratuite
Choisissez la solution PrestaShop...

Modifier les MX pour ceux de Google Apps

Connectez-vous à DirectAdmin.https://www.rapidenet.ca/clients.phpConnectez votre compte...

Migrer les courriels entre votre ancien et votre nouveau serveur IMAP

« Procédure pour les boites de courriel IMAP »Instructions :1- Sur votre...

Modifier les pages d'erreurs

Les pages d’erreurs vous permettent de controler ce que les visiteurs voient qaund ils...

Créer une Tâche CRON

Les tâches CRON sont un système de commandes qui peuvent être...