Exemplo n.º 1
0
    write_error_to_log("API Connexion", "Connexion à la base de données impossible : " . $e->getMessage());
    die('{"status_code":0, "error_description":"connection to database failed"}');
}
/************************/
//		   JSON			//
/************************/
// On génére la commande SQL nous permettant de vérifier si l'utilisateur est
// bien authentifié (le mot de passe et le nom d'utilisateur doivent correspondre)
$selectStatement = $connexion->prepare('SELECT COUNT(*) FROM utilisateur WHERE utilisateur.username = :username AND utilisateur.password = :password LIMIT 1');
$selectStatement->bindValue(':username', $_POST['pseudoPost'], PDO::PARAM_STR);
$selectStatement->bindValue(':password', md5($_POST['passwordPost']), PDO::PARAM_STR);
// Execution de la commande SQL
if ($selectStatement->execute()) {
    // Calcul du nombre de colonne retournée
    $nbr_ligne = $selectStatement->fetchColumn();
    // Si le nombre de colonne est suppérieur à 0, l'utilisateur est alors connecté
    if ($nbr_ligne > 0) {
        // On assigne le pseudo et le mot de passe aux variables de session
        $_SESSION['pseudo'] = $_POST['pseudoPost'];
        $_SESSION['password'] = md5($_POST['passwordPost']);
        die('{"status_code":1}');
    } else {
        // Le mot de passe et/ou le nom d'utilisateur ne correspondent pas
        die('{"status_code":0,"error_description":"username and/or password does not match"}');
    }
} else {
    // Une erreur est survenue lors de l'execution de la commande SQL
    $errorInfoArray = $selectStatement->errorInfo();
    write_error_to_log("API Connexion", "Impossible d'exécuter la commande SQL (connexion) : " . $errorInfoArray[2]);
    die('{"status_code":0,"error_description":"failed to execute query"}');
}
Exemplo n.º 2
0
    // Vérification de la présence du fichier
    if (file_exists($fullPath)) {
        // Le fichier est déjà présent, il est inutile de le déplacer à nouveau
        write_error_to_log("API Importation", "Le fichier existe déjà (fichier : '" . $_FILES['file']['name'] . "')");
        die('{"status_code":0, "error_description":"file already exist"}');
    }
    // Vérification de la taille du fichier
    if ($tailleFichier > $MAX_FILESIZE) {
        // Le fichier est trop gros, il ne peut pas être mis en ligne
        write_error_to_log("API Importation", "La taille du fichier ('" . $tailleFichier . "') est trop importante, maximum : '" . $MAX_FILESIZE . "')");
        die('{"status_code":0, "error_description":"file too big"}');
    }
    // Vérification de la nature du fichier
    if (!($mimetypeFichier == "audio/flac") && !($mimetypeFichier == "audio/x-flac") && !($mimetypeFichier == "application/octet-stream")) {
        // Le fichier mis en ligne n'est pas un fichier flac
        write_error_to_log("API Importation", "Le mimetype du fichier est invalide (mimetype du fichier : '" . $mimetypeFichier . "')");
        die('{"status_code":0, "error_description":"file is not a valid flac file"}');
    }
    // Déplacement de la musique dans le dossier de stockage prévu à cet effet
    if (!move_uploaded_file($_FILES['file']['tmp_name'], $fullPath)) {
        // Déplacement du fichier impossible
        write_error_to_log("API Importation", "Impossible de déplacer le fichier au chemin : '" . $fullPath . "'");
        die('{"status_code":0, "error_description":"unable to move file"}');
    }
} else {
    // Une erreur est survenue lors de l'execution de la commande SQL
    write_error_to_log("API Importation", "Une erreur est survenue lors de l'upload du fichier : '" . $_FILES['file']['name'] . "'");
    die('{"status_code":0, "error_description":"upload error"}');
}
// Si tout ce passe bien, on retourne un résultat positif via une string JSON
die('{"status_code":1}');
Exemplo n.º 3
0
function getTrackForPlaylist($connexion, $playlistID)
{
    // Protection de la chaîne (pour éviter les attaques SQL)
    $playlistID = $connexion->quote($playlistID);
    // Création de la commande SQL
    $commande_SQL = "SELECT DISTINCT * FROM pistes, contenu_playlists WHERE pistes.idPISTES = contenu_playlists.PISTES_idPISTES AND contenu_playlists.PLAYLIST_idPLAYLIST=" . $playlistID;
    $tableauPistes = array();
    // Execution de la commande SQL
    if ($selectStatement = $connexion->query($commande_SQL)) {
        // Assignation de chaque ligne
        while ($ligne = $selectStatement->fetch(PDO::FETCH_ASSOC)) {
            // On vérifie si le tableau "$tableauPistes" contient la piste de cet enregistrement
            if (!in_array($ligne, $tableauPistes)) {
                // La piste n'existe pas dans le tableau,
                // on va l'ajouter
                $tableauPistes[] = array_map("utf8_encode", $ligne);
            }
        }
    } else {
        // Une erreur est survenue lors de l'execution de la commande SQL
        $errorInfoArray = $connexion->errorInfo();
        write_error_to_log("API Récupération données", "Impossible d'exécuter la commande SQL (récupération des pistes d'une playlist) : " . $errorInfoArray[2]);
    }
    return $tableauPistes;
}
Exemplo n.º 4
0
            } else {
                // Une erreur est survenue lors de l'execution de la commande SQL
                write_error_to_log("API Édition métadonnées", "Impossible d'exécuter la commande SQL (insert genre) : " . $errorInfoArray[2]);
                die('{"status_code":0,"error_description":"failed to insert genre"}');
            }
        } else {
            // Pour toute les autres métadonnées différentes de "genre"
            // Concaténation de la string "$commandeSQLUpdate" (début de la commande déclarée plus haut)
            // On ajoute toutes les métadonnées à mettre à jour
            $commandeSQLUpdate .= "`" . $global_array[$i]['column'] . "` = " . $connexion->quote($global_array[$i]['value']);
            if ($i == count($global_array) - 1) {
                // Conclusion de la commande SQL
                $commandeSQLUpdate .= " WHERE idPISTES=" . $idPISTES . ";";
                $updateStatement = $connexion->prepare(utf8_decode($commandeSQLUpdate));
                // Execution de la commande SQL
                if (!$updateStatement->execute()) {
                    // Une erreur est survenue lors de l'execution de la commande SQL
                    $errorInfoArray = $updateStatement->errorInfo();
                    write_error_to_log("API Édition métadonnées", "Impossible d'exécuter la commande SQL (update) : " . $errorInfoArray[2] . $commandeSQLUpdate);
                    die('{"status_code":0,"error_description":"failed to update metatag"}');
                }
            } else {
                // Le parcours du tableau n'est pas terminé, on ajoute donc une ","
                // permettant ainsi d'ajouter de nouvelle métadonnée
                $commandeSQLUpdate .= ", ";
            }
        }
    }
}
// Si tout ce passe bien, on retourne un résultat positif via une string JSON
die('{"status_code":1}');
Exemplo n.º 5
0
        // Envoie du mail
        // Le mail est ensuite traité et envoyé via le logiciel "fake sendmail"
        if (mail($to, $titre, $corps, $headers)) {
            // Le mail à bien été envoyé
            die('{"status_code":1}');
        } else {
            // Une erreur est survenue lors de l'envoie du mail
            write_error_to_log("API Mot de passe oublié", "Impossible d'envoyer l'email de réinitialisation");
            die('{"status_code":0,"error_description":"mail not sent"}');
        }
    }
    // Comparaison du hash récupéré précedement (base de données) avec l'argument récupéré en GET ("hashpass")
    if ($passwordHash != $_GET['hashpass']) {
        // Les 2 hash MD5 ne correspondent pas
        die('{"status_code":0,"error_description":"unable to login"}');
    }
    // Affichage d'un formulaire HTML permettant à l'utilisateur de changer son mot de passe
    echo '<form id="formChangerMotDePassePopup" method="POST" action="changepass.php">
			<input type="hidden" name="pseudoPost" id="pseudoName-text" value="' . $ligne['username'] . '">
			<input type="hidden" name="actualPasswordPost" id="pseudoName-text" value="' . $_GET['hashpass'] . '">
			<input placeholder="Nouveau mot de passe" name="newPasswordPost" id="newPassword-text" type="text">
			<input placeholder="Confirmation" name="confirmPasswordPost" id="confirmPassword-text" type="password">
			<br/><br/>
			<input type="submit" value="Changer le mot de passe" />
		</form>';
} else {
    // Une erreur est survenue lors de l'execution de la commande SQL
    $errorInfoArray = $selectStatement->errorInfo();
    write_error_to_log("API Mot de passe oublié", "Impossible d'exécuter la commande SQL (selection password) : " . $errorInfoArray[2]);
    die('{"status_code":0,"error_description":"failed to execute select query"}');
}
Exemplo n.º 6
0
        write_error_to_log("API Illustration Genres", "La taille du fichier ('" . $tailleFichier . "') est trop importante, maximum : '" . $MAX_FILESIZE_COVER . "')");
        die('{"status_code":0, "error_description":"file too big"}');
    }
    // Calcul taille de l'image
    if (getimagesize($_FILES[$tableauImageGenre[$i]]['tmp_name']) == 0) {
        // La valeur retournée est FALSE, donc le fichier n'est pas une image
        write_error_to_log("API Illustration Genres", "La cover est invalide (le fichier n'est pas une image)");
        die('{"status_code":0, "error_description":"file is not a valid image file"}');
    }
    // Déplacement de l'image dans le dossier de stockage prévu à cet effet
    if (!move_uploaded_file($_FILES[$tableauImageGenre[$i]]['tmp_name'], $fullPath)) {
        // Déplacement de l'image impossible
        write_error_to_log("API Illustration Genres", "Impossible de déplacer le fichier au chemin : '" . $fullPath . "'");
        die('{"status_code":0, "error_description":"unable to move file"}');
    }
    /************************/
    //	      MYSQL      	//
    /************************/
    // On génére la commande SQL permettant de mettre à jour le nom de l'image dans la base de données
    $commandeSQLUpdate = "UPDATE `genres` SET `image` = '" . $_FILES[$tableauImageGenre[$i]]['name'] . "' WHERE idGENRES=" . $tableauImageGenre[$i] . ";";
    $updateStatement = $connexion->prepare(utf8_decode($commandeSQLUpdate));
    // Execution de la commande SQL
    if (!$updateStatement->execute()) {
        // Une erreur est survenue lors de l'execution de la commande SQL
        $errorInfoArray = $updateStatement->errorInfo();
        write_error_to_log("API Illustration Genres", "Impossible d'exécuter la commande SQL (update) : " . $errorInfoArray[2] . $commandeSQLUpdate);
        die('{"status_code":0,"error_description":"failed to update image name"}');
    }
}
// Si tout ce passe bien, on retourne un résultat positif via une string JSON
die('{"status_code":1}');
Exemplo n.º 7
0
//	    Variables		//
/************************/
include 'conf.php';
$type = $_POST["type"];
if ($type != "albums" && $type != "artistes" && $type != "annees" && $type != "genres") {
    die('{"status_code":0, "error_description": "bad type"}');
}
/************************/
//		   MYSQL		//
/************************/
try {
    $connexion = new PDO("mysql:host={$DB_HOST};dbname={$DB_NAME}", $DB_READER_USER_LOGIN, $DB_READER_USER_PSW);
    $pseudoQuoted = $connexion->quote($_POST['pseudoPost']);
    $passwordQuoted = $connexion->quote($_POST['passwordPost']);
} catch (PDOException $e) {
    write_error_to_log("Génération choix playlist", "Connection DB failed: " . $e->getMessage());
    die('{"status_code":0, "error_description":"connection to database failed"}');
}
$date = getdate();
$dateStr = $date['mday'] . "/" . $date['mon'] . "/" . $date['year'];
echo '{"status_code":1, "fetched_at": "' . $dateStr . '"';
if ($type == "genres") {
    echo ',"genres": ';
    /************************/
    //	    GENRES  	 	//
    /************************/
    $commande_SQL = "SELECT * FROM genres WHERE nom != 'NULL'";
    $query = $connexion->prepare($commande_SQL);
    $query->execute();
    while ($result = $query->fetch(PDO::FETCH_ASSOC)) {
        $genresToUTF8Format[] = array_map("utf8_encode", $result);
Exemplo n.º 8
0
    /************************************/
    //  	Creation de la playlist     //
    /************************************/
    $commande_SQL = "INSERT INTO playlists VALUES (''," . $connexionWrite->quote($playlist_name) . ", 0)";
    $query = $connexionWrite->prepare($commande_SQL);
    $query->execute();
    /************************************/
    //  	ID de la playlist           //
    /************************************/
    $commande_SQL = "SELECT idPLAYLIST FROM playlists WHERE playlists.name = " . $connexion->quote($playlist_name) . " ORDER BY idPLAYLIST DESC LIMIT 1";
    $query = $connexion->prepare($commande_SQL);
    $query->execute();
    while ($result = $query->fetch(PDO::FETCH_ASSOC)) {
        $playlist_id = $result["idPLAYLIST"];
    }
    /************************************/
    //  	Insertion des musiques      //
    /************************************/
    for ($ipiste = 0; $ipiste < count($_playlist); $ipiste++) {
        $commande_SQL = "INSERT INTO contenu_playlists VALUES ( '', " . $playlist_id . ", " . $_playlist[$ipiste] . " )";
        $query = $connexionWrite->prepare($commande_SQL);
        $query->execute();
    }
    $commande_SQL = "UPDATE playlists SET items_count = '" . count($_playlist) . "' WHERE idPLAYLIST = '{$playlist_id}' ";
    $query = $connexionWrite->prepare($commande_SQL);
    $query->execute();
} catch (Exception $err) {
    die('{"status_code":0,"error_description":"Failed to execute query"}');
    write_error_to_log("Création playlist", $err->getMessage());
}
echo '{"status_code":1}';
Exemplo n.º 9
0
    $errorInfoArray = $selectStatement->errorInfo();
    write_error_to_log("API Changement mot de passe", "Impossible d'exécuter la commande SQL (vérification utilisateur) : " . $errorInfoArray[2]);
    die('{"status_code":0,"error_description":"failed to execute select query"}');
}
/************************/
//    Changement Pass   //
/************************/
// On génére la commande SQL permettant de mettre à jour le mot de passe
$selectStatement = $connexion->prepare('UPDATE utilisateur SET utilisateur.password = :newpassword WHERE utilisateur.username = :username AND utilisateur.password = :password');
$selectStatement->bindValue(':newpassword', $newPassword, PDO::PARAM_STR);
$selectStatement->bindValue(':username', $_POST['pseudoPost'], PDO::PARAM_STR);
$selectStatement->bindValue(':password', $_POST['actualPasswordPost'], PDO::PARAM_STR);
// Execution de la commande SQL
if ($selectStatement->execute()) {
    // La commande n'a renvoyée aucune erreur
    // On assigne le nouveau mot de passe à la variable de session
    $_SESSION['password'] = $newPassword;
    die('{"status_code":1}');
} else {
    // Une erreur est survenue lors de l'execution de la commande SQL
    $errorInfoArray = $selectStatement->errorInfo();
    write_error_to_log("API Changement mot de passe", "Impossible d'exécuter la commande SQL (changement mot de passe) : " . $errorInfoArray[2]);
    die('{"status_code":0,"error_description":"failed to execute update query"}');
}
// Cette fonction permet de vérifier si une string est un hash MD5
function isValidMd5($md5 = '')
{
    // En appliquant un masque REGEX à la string md5,
    // on retourne le resultat de la fonction
    return preg_match('/^[a-f0-9]{32}$/', $md5);
}