Problème avec upload photo de profil
- Accueil
- Forum
- Programmation
- PHP
- Problème avec upload photo de profil
Ce topic est suivi par : jake, TheOldNoob, tutosfaciles48, faucon_noir
jake Le 16 septembre 2016 à 16:19 (Édité le 25 janvier 2019 à 17:52)
j'ai un problème avec mon script. J'ai suivi le tuto de A à Z de PrimFX, écrit & ré-écrit le code complet du php pour upload une photo de profil dans son espace membre.
Il ne se passe absolument rien. Rien dans la base de donnée, rien dans le dossier de stockage...
Pouvez-vous m'aider svp ?
voici mon code php :
if(isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name']))
{
$tailleMax = 2097152;
$extensionsValides = array('jpg', 'jpeg', 'gif', 'png');
if($_FILES['avatar']['size'] <= $tailleMax)
{
$extensionUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
if(in_array($extensionUpload, $extensionsValides))
{
$chemin = "membres/avatars/".$_SESSION['auth']->id.".".$extensionupload;
$resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
if($resultat)
{
$updateavatar = $bdd->prepare('UPDATE membres SET avatar = :avatar WHERE id = :id');
$updateavatar->execute(array(
'avatar' => $_SESSION['id'].".".$extensionUpload,
'id' => $_SESSION['id']
));
header('Location: profil.php?id='.$_SESSION['id']);
}
else
{
$msg = "Erreur pendant l'importation de votre photo de profil";
}
}
else
{
$msg = "Votre photo de profil doit être au format jpg, jpeg, gif ou png";
}
}
else
{
$msg = "Votre photo de profil ne doit pas dépasser 2 Mo";
}
}
TheOldNoob Le 17 septembre 2016 à 08:52 (Édité le 1 janvier 1970 à 01:00)
On peu voir ton formulaire qui va avec? En générale l'erreur vien de la, et souvent c'est l'oublie du enctype="multipart/form-data"
<form method="post" enctype="multipart/form-data">
tutosfaciles48 Le 18 septembre 2016 à 15:26 (Édité le 1 janvier 1970 à 01:00)
faucon_noir Le 19 septembre 2016 à 02:35 (Édité le 1 janvier 1970 à 01:00)
jake Le 23 septembre 2016 à 13:18 (Édité le 1 janvier 1970 à 01:00)
oui j'ai fait l'insertion lors de l'inscription de la personne et ça fonctionne mais pour UPDATE ca me la supprime de la base de donnée et rien ne se produit.
Pas d'erreur, rien...
TheOldNoob Le 23 septembre 2016 à 14:06 (Édité le 1 janvier 1970 à 01:00)
faucon_noir Le 26 septembre 2016 à 05:18 (Édité le 1 janvier 1970 à 01:00)
function debug($variable)
{
echo '<pre>'.print_r($variable, true).'</pre>';
}
et puis pour upload la photo je te conseille la méthode du site du zero , c'est celle que j'utilise elle marche très bien
coucougael94 Le 30 septembre 2016 à 19:46 (Édité le 1 janvier 1970 à 01:00)
- Salut, ton code php n'est pas le problème (j'ai vite fait regardé)
faucon_noir Le 30 septembre 2016 à 21:30 (Édité le 1 janvier 1970 à 01:00)
TheOldNoob Le 1 octobre 2016 à 14:31 (Édité le 1 janvier 1970 à 01:00)
PaulLavieille Le 1 octobre 2016 à 23:42 (Édité le 1 janvier 1970 à 01:00)
<?php
require_once('config/config.php');
if(isset($_POST['forminscription']))
{
$pseudo = htmlspecialchars($_POST['pseudo']);
$prenom = htmlspecialchars($_POST['prenom']);
$certificate = htmlspecialchars($_POST['certificate']);
$nom = htmlspecialchars($_POST['nom']);
$user_ip = htmlspecialchars($_SERVER['REMOTE_ADDR']);
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
if(!empty($_POST['pseudo']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']) AND!empty($_POST['prenom']) AND!empty($_POST['nom']))
{
$reqpseudo= $bdd->prepare("SELECT * FROM membres WHERE pseudo= ?");
$reqpseudo->execute(array($pseudo));
$reqpseudo= $reqpseudo->rowCount();
if($reqpseudo == 0)
{
$pseudolength = strlen($pseudo);
if($pseudolength <= 255)
{
if($mdp == $mdp2)
{
$longueurKey = 15;
$key = "";
for($i=1;$i<$longueurKey;$i++) {
$key .= mt_rand(0,9);
}
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, password, prenom, nom, user_ip, certificate, d_inscription) VALUES(?, ?, ?, ?, ?, ?, NOW())");
$insertmbr->execute(array($pseudo, $mdp, $prenom, $nom, $user_ip, $certificate));
$id_du_membre = $bdd->lastInsertId();
if(isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name']))
{
$tailleMax = 3145728;
$extensionsValides = array('jpg', 'jpeg', 'gif', 'png');
if($_FILES['avatar']['size'] <= $tailleMax)
{
$extensionsUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
if(in_array($extensionsUpload, $extensionsValides))
{
$chemin = "avatars/" .$id_du_membre.".".$extensionsUpload;
$resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
if($resultat)
{
$updateAvatar = $bdd->prepare('INSERT INTO membres(avatar) VALUES (?)');
$updateAvatar->execute(array($id_du_membre.".".$extensionsUpload));
}
else
{
$erreur = "Erreur inconnue lors de l'importation de l'image.";
}
}
else
{
$erreur = "Votre photo de profil doit être au format: jpg, jpeg, gif ou png";
}
}
else
{
$erreur = "Votre photo de profil ne doit pas dépasser 2Mo.";
}
}
$erreur = "<div>Votre compte a bien été créé !</div>";
}
else
{
$erreur = "<div>Vos mots de passes ne correspondent pas !</div>";
}
}
else
{
$erreur = "<div>Votre pseudo ne doit pas dépasser 255 caractères !</div>";
}
}
else
{
$erreur = "<div>Le pseudo est déjà utilisé !</div>";
}
}
else
{
$erreur = "<div>Tous les champs doivent être complétés !</div>";
}
}
?>
<html>
<head>
<title>Inscription</title>
<meta charset="utf-8">
</head>
<body>
<div align="center">
<h2>Inscription</h2>
<br /><br />
<form method="POST" action="">
<table>
<tr>
<td align="right">
<label for="pseudo">Pseudo :</label>
</td>
<td>
<input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo" />
</td>
</tr>
<tr>
<td align="right">
<label for="mdp">Mot de passe :</label>
</td>
<td>
<input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" />
</td>
</tr>
<tr>
<td align="right">
<label for="mdp2">Confirmation du mot de passe :</label>
</td>
<td>
<input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" />
</td>
</tr>
<tr>
<td align="right">
<label for="prenom">Prénom :</label>
</td>
<td>
<input type="text" id="prenom" placeholder="Le prénom" name="prenom" />
</td>
</tr>
<tr>
<td align="right">
<label for="nom">Nom :</label>
</td>
<td>
<input type="text" id="nom" placeholder="Le nom" name="nom"/>
</td>
</tr>
<tr>
<td align="right">
<label>Certifié :</label>
</td>
<td>
<select name="certificate">
<option value="0">0</option>
<option value="1">1</option>
</select>
</td>
</tr>
<tr>
<td>
<label>Avatar :</label>
</td>
<td align="center">
<br />
<input type="file" name="avatar" value="Je m'inscris" />
</td>
</tr>
<tr>
<td></td>
<td align="center">
<br />
<input type="submit" name="forminscription" value="Je m'inscris" />
</td>
</tr>
</table>
</form>
<?php
if(isset($erreur))
{
echo '<font color="red">'.$erreur."</font>";
}
?>
</div>
</body>
</html>
Regardez ce code, il doit avoir la même erreur que moi (tout s'insere bien sauf l'avatar, il est pas dans le dossier de stockage non plus)
TheOldNoob Le 2 octobre 2016 à 17:49 (Édité le 1 janvier 1970 à 01:00)
Ligne 95, tu a oublier le enctype 😀
<form method="POST" action="" enctype="multipart/form-data">
Et je suis a peu pres sur que Jake a fait la même chose, mais je l'ai déjà dit plus haut 😉