Partage
  • Partager sur Facebook
  • Partager sur Twitter

L'image n'arrive nul part

    1 juillet 2022 à 20:16:20

    Bonjour, voici mon code :

    <?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 !

    • Partager sur Facebook
    • Partager sur Twitter
      1 juillet 2022 à 20:40:03

      Bonsoir,

      Que dises les logs de ton serveur ?

      La fonction "move_uploaded_file" renvoi un booléan, il serait bien de le vérifier.

      Que donnes un var_dump($_FILES); à la ligne 42 ?

      Tu envoies ton fichier dans le dossier parent du script avec le nom "postnom_image" ?

      • Partager sur Facebook
      • Partager sur Twitter
        1 juillet 2022 à 21:14:14

        Quel dossier ?

        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 ?

        -
        Edité par julp 1 juillet 2022 à 21:33:07

        • Partager sur Facebook
        • Partager sur Twitter

        L'image n'arrive nul part

        × 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.
        • Editeur
        • Markdown