Ce site utilise des cookies pour améliorer uniquement votre expérience utilisateur.
Vous pouvez lire à tout moment comment nous utilisons les cookies sur le site.
Bonjour,
J'ai suivi le tutoriel pour les avatars, lorsque j'essaie d'upload un avatar, il me sort une erreur:
L’image « https://www.didoub74.fr/monprofil » ne peut être affichée car elle contient des erreurs.
Voici la partie de mon code qui pose problème :
if ($extensionUpload == 'jpg' || $extensionUpload == 'jpeg' || $extensionUpload == "pjpg" || $extensionUpload == 'pjpeg')
{ // Content type
header('Content-Type: image/jpeg');
// Important !!
$exif = exif_read_data($filename);
if (!empty($exif['Orientation']))
{
switch ($exif['Orientation'])
{
case 8:
$image_p2 = imagerotate($image_p2, 90, 0);
break;
case 3:
$image_p2 = imagerotate($image_p2, 180, 0);
break;
case 6:
$image_p2 = imagerotate($image_p2, -90, 0);
break;
}
} // Affichage
imagejpeg($image_p2, "public/avatars/" . $_SESSION['id'] . "/" . $nom . "." . $extensionUpload, 75); imagedestroy($image_p2);}
Si vous avez besoin du code complet dîtes moi et je vous le donnerais
Cordialement Maximilien
P.S. Un topic précédent à été créer, c'est mon ancien compte que j'ai supprimé et recréer pour un souci.
Je pense avoir trouver le problème, le problème semble venir de la librarie "exif" qui ne semble pas activé, plus que à attendre l'approbation de l'administrateur système pour confirmer mon hypothèse ;)
P.S. Ce serait bien d'indiquer que la librarie GD est requise ;)
Re @Didoub74,
Il faudrait afficher les erreurs...
Essaye de supprimer cette ligne temporairement afin que les erreurs du code soient affichées :
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set("display_errors", 1);
Après modification, qu'est-ce que cela t'affiche ? 🤔
Tenez mon code:
<?php
session_start();
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set("display_errors", 1);
require('class/connexionDB.php');
if (!isset($_SESSION['id'])){
header('Location: index.php');
exit;
}
// On récupère les informations de l'utilisateur connecté
$afficher_profil = $db->query("SELECT *
FROM utilisateur
WHERE id = ?",
array($_SESSION['id']));
$afficher_profil = $afficher_profil->fetch();
if(!empty($_POST)) {
extract($_POST);
$valid = true;
if (isset($_POST['submit'])) {
$nom = htmlentities(trim($nom));
$prenom = htmlentities(trim($prenom));
$mail = htmlentities(strtolower(trim($mail)));
if (empty($pseudo)) {
$valid = false;
$er_pse = "Il faut mettre un pseudo";
}
if (empty($email)) {
$valid = false;
$er_mail = "Il faut mettre un mail";
} elseif (!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $email)) {
$valid = false;
$er_mail = "Le mail n'est pas valide";
} else {
$req_mail = $db->query("SELECT mail
FROM utilisateur
WHERE mail = ?",
array($mail));
$req_mail = $req_mail->fetch();
if ($req_mail['mail'] <> "" && $_SESSION['mail'] != $req_mail['mail']) {
$valid = false;
$er_mail = "Ce mail existe déjà";
}
}
#--- AVATAR ---
if (!empty($_FILES['file']['name'])) { // On vérifie qu'il y a bien un fichier
$filename = $_FILES['file']['tmp_name']; // On récupère le nom du fichier
list($width_orig, $height_orig) = getimagesize($filename); // On récupère la taille de notre fichier (l'image)
if ($width_orig >= 500 && $height_orig >= 500 && $width_orig <= 6000 && $height_orig <= 6000) { // On vérifie que la taille de l'image et correcte
$ListeExtension = array('jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'png' => 'image/png', 'gif' => 'image/gif');
$ListeExtensionIE = array('jpg' => 'image/pjpg', 'jpeg' => 'image/pjpeg');
$tailleMax = 5242880; // Taille maximum 5 Mo
// 2mo = 2097152
// 3mo = 3145728
// 4mo = 4194304
// 5mo = 5242880
// 7mo = 7340032
// 10mo = 10485760
// 12mo = 12582912
$extensionsValides = array('jpg', 'jpeg'); // Format accepté
if ($_FILES['file']['size'] <= $tailleMax) { // Si le fichier et bien de taille inférieur ou égal à 5 Mo
$extensionUpload = strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1)); // Prend l'extension après le point, soit "jpg, jpeg ou png"
if (in_array($extensionUpload, $extensionsValides)) { // Vérifie que l'extension est correct
$dossier = "public/avatars/" . $_SESSION['id'] . "/"; // On se place dans le dossier de la personne
if (!is_dir($dossier)) { // Si le nom de dossier n'existe pas alors on le crée
mkdir($dossier);
} else {
if (file_exists( __DIR__ . "/public/avatars/" . $_SESSION['id'] . "/" . $_SESSION['avatar']) && isset($_SESSION['avatar'])) {
unlink( __DIR__ . "/public/avatars/" . $_SESSION['id'] . "/" . $_SESSION['avatar']);
}
}
$nom = md5(uniqid(rand(), true)); // Permet de générer un nom unique à la photo
$chemin = __DIR__ . "/public/avatars/" . $_SESSION['id'] . "/" . $nom . "." . $extensionUpload; // Chemin pour placer la photo
$resultat = move_uploaded_file($_FILES['file']['tmp_name'], $chemin); // On fini par mettre la photo dans le dossier
if ($resultat) { // Si on a le résultat alors on va comprésser l'image
if (is_readable( __DIR__ . "/public/avatars/" . $_SESSION['id'] . "/" . $nom . "." . $extensionUpload)) {
$verif_ext = getimagesize( __DIR__ . "/public/avatars/" . $_SESSION['id'] . "/" . $nom . "." . $extensionUpload);
// Vérification des extensions avec la liste des extensions autorisés
if ($verif_ext['mime'] == $ListeExtension[$extensionUpload] || $verif_ext['mime'] == $ListeExtensionIE[$extensionUpload]) {
// J'enregistre le chemin de l'image dans filename
$filename = __DIR__ . "/public/avatars/" . $_SESSION['id'] . "/" . $nom . "." . $extensionUpload;
// Vérification des extensions que je souhaite prendre
if ($extensionUpload == 'jpg' || $extensionUpload == 'jpeg' || $extensionUpload == "pjpg" || $extensionUpload == 'pjpeg') {
$image2 = imagecreatefromjpeg($filename);
}
// Définition de la largeur et de la hauteur maximale
$width2 = 720;
$height2 = 720;
list($width_orig, $height_orig) = getimagesize($filename);
// Redimensionnement
$image_p2 = imagecreatetruecolor($width2, $height2);
imagealphablending($image_p2, false);
imagesavealpha($image_p2, true);
// Cacul des nouvelles dimensions
$point2 = 0;
$ratio = null;
if ($width_orig <= $height_orig) {
$ratio = $width2 / $width_orig;
} else if ($width_orig > $height_orig) {
$ratio = $height2 / $height_orig;
}
$width2 = ($width_orig * $ratio) + 1;
$height2 = ($height_orig * $ratio) + 1;
imagecopyresampled($image_p2, $image2, 0, 0, $point2, 0, $width2, $height2, $width_orig, $height_orig);
imagedestroy($image2);
if ($extensionUpload == 'jpg' || $extensionUpload == 'jpeg' || $extensionUpload == "pjpg" || $extensionUpload == 'pjpeg') {
// Content type
header('Content-Type: image/jpeg'); // Important !!
$exif = exif_read_data($filename);
if (!empty($exif['Orientation'])) {
switch ($exif['Orientation']) {
case 8:
$image_p2 = imagerotate($image_p2, 90, 0);
break;
case 3:
$image_p2 = imagerotate($image_p2, 180, 0);
break;
case 6:
$image_p2 = imagerotate($image_p2, -90, 0);
break;
}
}
// Affichage
imagejpeg($image_p2, "public/avatars/" . $_SESSION['id'] . "/" . $nom . "." . $extensionUpload, 75);
imagedestroy($image_p2);
}
$DB->insert("UPDATE utilisateur SET avatar = ? WHERE id = ?",
array(($nom . "." . $extensionUpload), $_SESSION['id']));
$_SESSION['avatar'] = ($nom . "." . $extensionUpload); // On met à jour l'avatar
$info_avatar = "Nouvel avatar enregistré !";
header('Location: profil'); // Pour la redirection
exit;
} else {
$er_avatar = "Le type MIME de l'image n'est pas bon";
}
}
} else
$er_avatar = "Erreur lors de l'importation de votre photo.";
} else
$er_avatar = "Votre photo doit être au format jpg.";
} else
$er_avatar = "Votre photo de profil ne doit pas dépasser 5 Mo !";
} else
$er_avatar = "Dimension de l'image minimum 400 x 400 et maximum 6000 x 6000 !";
} else
$er_avatar = "Veuillez mettre une image";
if ($valid) {
$db->insert("UPDATE utilisateur SET pseudo = ?, mail = ?
WHERE id = ?",
array($pseudo, $email, $_SESSION['id']));
$_SESSION['pseudo'] = $pseudo;
$_SESSION['mail'] = $mail;
//header('Location: monprofil.php');
//exit;
}
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="css/now-ui-kit.css">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/main.css">
<link href="https://fonts.googleapis.com/css?family=Poppins:300,400,600,700,800,900&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,600,700,800,900&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lato:300,400,600,700,800,900&display=swap" rel="stylesheet">
<title>CrosStorm | Mon profil</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<?php require "menu.php"; ?>
<div class="heading">
<h1 style="text-align: center" class="display-5 title">Modifier son profil</h1>
<!--<a class="btn btn-secondary btn-lg" href="#server_link" target="_blank" role="button">Add to server</a>-->
<br /><br /><br /><br /><br /><br />
</div>
<?php
if(isset($er_pse) OR isset($er_mail) OR isset($er_avatar)){
?>
<section>
<div class="alert alert-warning alert-dismissible fade show alerts-main" role="alert">
<div class="spacer">
<h4 class="alert-heading">Erreur: </h4>
<ul>
<?php if(isset($er_pse)){?><li><?php echo $er_pse ?></li><?php } ?>
<?php if(isset($er_mail)){?><li><?php echo $er_mail ?></li><?php } ?>
<?php if(isset($er_avatar)){?><li><?php echo $er_avatar ?></li><?php } ?>
</ul>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
</div>
</section>
<?php
}
?>
<?php
if(isset($info_avatar)){
?>
<section>
<div class="alert alert-success alert-dismissible fade show alerts-main" role="alert">
<div class="spacer">
<h4 class="alert-heading">Succès: </h4>
<ul>
<li><?php echo $info_avatar ?></li>
</ul>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
</div>
</section>
<?php
}
?>
<div class="features form-register">
<h4>Veuillez remplir tout les champs</h4>
<div id="form-main">
<div id="form-div">
<form class="form" id="form1" method="post" enctype="multipart/form-data">
<p class="pseudo">
<input name="pseudo" type="text" value="<?php if(isset($pseudo)){ echo $pseudo; }else{ echo $afficher_profil['pseudo'];}?>" class="validate[required,length[0,100]] feedback-input" placeholder="Nom d'utilisateur" id="pseudo" />
</p>
<p class="email">
<input name="email" type="text" value="<?php if(isset($email)){ echo $email; }else{ echo $afficher_profil['mail'];}?>" class="validate[required,custom[email]] feedback-input" id="email" placeholder="Email" />
</p>
<p class="password">
<input name="password" type="password" class="validate[required], feedback-input" id="password" placeholder="Mot de passe" />
</p>
<p class="avatar">
<input id="file" type="file" name="file" class="file-selector"/>
</p>
<br />
<div class="submit">
<input type="submit" name="submit" class="hover" value="S'inscrire" id="button-blue"/>
<div class="ease"></div>
</div>
</form>
</div>
</div>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
</div>
<?php require "footer.php"; ?>
<script src="./js/bootstrap.min.js"></script>
</body>
</html>
Plus particulièrement le
header('Content-Type: image/jpeg');
Quand je l'enlève la page marche mais avec une autre erreur
Re:
@Space001 L'image arrive bien dans le dossier, la ligne posant problème se situe dans le bout de code ci-dessus
Re:
J'ai signalé ce soucis à @Clouder...
Si des caractères n'ont pas été pris en compte avec le copier-coller, c'est peut-être la raison pour laquelle l'image n'est pas importée 😉
Le bouton télécharger ne marchant pas, j'ai copié-collé
Re:
Pour obtenir le code, tu as fais un copier-coller ou tu l'as télécharger directement ? 🤔
De mon côté, elle est au format jpg donc oui j'ai essayé,
J'avais pas vu que de base elle était en png et donc j'ai du la convertir dans le passé.
P.S. Le site étant en local, j'ai du demandé à mes parent d''activer la librairie GD (2-3 semaine d'attente)