<?php
// Initialiser la session
session_start();
// Vérifiez si l'utilisateur est connecté, sinon redirigez-le vers la page de connexion
if(!isset($_SESSION["username"])){
header("Location: login");
exit();
}
?>
<?php
require_once "conn.php";
if(isset($_SESSION['username']))
{
try
{
$id = $_SESSION['username']; //get "update_id" from index.php page through anchor tag operation and store in "$id" variable
$select_stmt = $db->prepare('SELECT * FROM users WHERE username =:id'); //sql select query
$select_stmt->bindParam(':id',$id);
$select_stmt->execute();
$row = $select_stmt->fetch(PDO::FETCH_ASSOC);
extract($row);
}
catch(PDOException $e)
{
$e->getMessage();
}
}
if(isset($_REQUEST['btn_update']))
{
try
{
$name =$_REQUEST['txt_name']; //textbox name "txt_name"
$image_file = $_FILES["txt_file"]["name"];
$type = $_FILES["txt_file"]["type"]; //file name "txt_file"
$size = $_FILES["txt_file"]["size"];
$temp = $_FILES["txt_file"]["tmp_name"];
$path="upload/".$image_file; //set upload folder path
$directory="upload/"; //set upload folder path for update time previous file remove and new file upload for next use
if($image_file)
{
if($type=="image/jpg" || $type=='image/jpeg' || $type=='image/png' || $type=='image/gif') //check file extension
{
if(!file_exists($path)) //check file not exist in your upload folder path
{
if($size < 5000000) //check file size 5MB
{
move_uploaded_file($temp, "../post" .$image_file); //move upload file temperory directory to your upload folder
}
else
{
$errorMsg="Your File To large Please Upload 5MB Size"; //error message file size not large than 5MB
}
}
else
{
$update_stmt=$db->prepare("UPDATE users SET name=:name_up, image=:file_up WHERE id=:id"); //sql update query
$update_stmt->bindParam(':name_up',$name);
$update_stmt->bindParam(':file_up',$image_file); //bind all parameter
$update_stmt->bindParam(':id',$id);}
}
else
{
$errorMsg="Upload JPG, JPEG, PNG & GIF File Formate.....CHECK FILE EXTENSION"; //error message file extension
}
}
else
{
$image_file=$row['image']; //if you not select new image than previous image sam it is it.
}
if(!isset($errorMsg))
{
$update_stmt=$db->prepare("UPDATE users SET name=:name_up, image=:file_up WHERE id=:id"); //sql update query
$update_stmt->bindParam(':name_up',$name);
$update_stmt->bindParam(':file_up',$image_file); //bind all parameter
$update_stmt->bindParam(':id',$id);
if($update_stmt->execute())
{
$updateMsg="File Update Successfully......."; //file update success message
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
<title>Edit Photo de Profil</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<script src="js/jquery-1.12.4-jquery.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<div class="wrapper">
<div class="container">
<div class="col-lg-12">
<?php
if(isset($errorMsg))
{
?>
<div class="alert alert-danger">
<strong>WRONG ! <?php echo $errorMsg; ?></strong>
</div>
<?php
}
if(isset($updateMsg)){
?>
<div class="alert alert-success">
<strong>UPDATE ! <?php echo $updateMsg; ?></strong>
</div>
<?php
}
?>
<form method="post" class="form-horizontal" enctype="multipart/form-data">
<div class="form-group">
<label class="col-sm-3 control-label">Name</label>
<div class="col-sm-6">
<input type="text" name="txt_name" class="form-control" value="<?php echo $name; ?>" required/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">File</label>
<div class="col-sm-6">
<input type="file" name="txt_file" class="form-control" value="<?php echo $image; ?>"/>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-9 m-t-15">
<input type="submit" name="btn_update" class="btn btn-primary" value="Update">
<a href="../espace_membre" class="btn btn-danger">Cancel</a>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
Il n'y a aucune erreur visible, pourtant le fichier upload n'arrive jamais dans le dossier. Si quelqu'un à une idée de ce qui se passe je suis preneurs, bonne soirée !
Tu ne réutilises pas $path ni même $directory (répétition de "upload/" au passage), ton fichier serait situé dans le répertoire parent du script courant avec pour nom "post" + le nom côté client.
Qu'est censé faire le catch ligne 27 ? Honnêtement, autant laisser planter que de mettre ces try/catch inutiles ...
Pourquoi il y a 2 requêtes UPDATE ? Sachant que la première n'est jamais exécutée ?!?
Il ne faut jamais se fier au type du fichier émis par le client ($_FILES["txt_file"]["type"]) !
lignes 9/10 : pourquoi fermer les balises pour les rouvrir la ligne d'après ?
if(isset($_SESSION['username'])) n'a pas de else, il se passe quoi sinon ?
pourquoi conserver le nom de l'utilisateur plutôt que son id en session ? Ca éviterait ce SELECT inutile au passage
normalement aucun navigateur ne te laissera définir (= ignorée) une value à input type=file (si a encore ça avait un sens déjà)
$_REQUEST['btn_update'] : tu sais que c'est forcément du $_POST, pourquoi utiliser $_REQUEST ? Pareil pour $_REQUEST['txt_name'].
if($type=="image/jpg" || $type=='image/jpeg' || $type=='image/png' || $type=='image/gif'), mieux : if (in_array($type, ['image/jpg', 'image/jpeg', 'image/png', 'image/gif']) (dommage que PHP n'ait pas d'équivalent aux %w de Ruby ou autres sigils - sigil_W - d'Elixir)
> La fonction "move_uploaded_file" renvoi un booléan, il serait bien de le vérifier.
+1 mais de souvenir, avec les erreurs affichées, on avait avant tout droit à un warning si elle échouait donc une condition antérieure est fausse ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli