immagine profilo utente:come salvarla a video?

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Ciao a tutti,
Sto creando un sito in php (il primo) e devo ammettere che qualche problemino lo incontro..
Uno e' questo..
Ho trovato in rete questo script in php che ti permette di effettuare l'upload con visione dell'immagine caricata.
Io vorrei reindirizzare l'immagine verso una mia pagina php e non so come fare ma cosa piu' importante vorrei che l'immagine uplodata restasse salvata in modo che quando l'utente si logga la trovasse li ,nel suo profilo..
vi posto lo script

PHP:
<?php ini_set("memory_limit", "200000000"); // for large images so that we do not get "Allowed memory exhausted"?>
<?php
// upload the file
if ((isset($_POST["submitted_form"])) && ($_POST["submitted_form"] == "image_upload_form")) {
	
	// file needs to be jpg,gif,bmp,x-png and 4 MB max
	if (($_FILES["image_upload_box"]["type"] == "image/jpeg" || $_FILES["image_upload_box"]["type"] == "image/pjpeg" || $_FILES["image_upload_box"]["type"] == "image/gif" || $_FILES["image_upload_box"]["type"] == "image/x-png") && ($_FILES["image_upload_box"]["size"] < 4000000))
	{
		
  
		// some settings
		$max_upload_width = 2592;
		$max_upload_height = 1944;
		  
		// if user chosed properly then scale down the image according to user preferances
		if(isset($_REQUEST['max_width_box']) and $_REQUEST['max_width_box']!='' and $_REQUEST['max_width_box']<=$max_upload_width){
			$max_upload_width = $_REQUEST['max_width_box'];
		}    
		if(isset($_REQUEST['max_height_box']) and $_REQUEST['max_height_box']!='' and $_REQUEST['max_height_box']<=$max_upload_height){
			$max_upload_height = $_REQUEST['max_height_box'];
		}	

		
		// if uploaded image was JPG/JPEG
		if($_FILES["image_upload_box"]["type"] == "image/jpeg" || $_FILES["image_upload_box"]["type"] == "image/pjpeg"){	
			$image_source = imagecreatefromjpeg($_FILES["image_upload_box"]["tmp_name"]);
		}		
		// if uploaded image was GIF
		if($_FILES["image_upload_box"]["type"] == "image/gif"){	
			$image_source = imagecreatefromgif($_FILES["image_upload_box"]["tmp_name"]);
		}	
		// BMP doesn't seem to be supported so remove it form above image type test (reject bmps)	
		// if uploaded image was BMP
		if($_FILES["image_upload_box"]["type"] == "image/bmp"){	
			$image_source = imagecreatefromwbmp($_FILES["image_upload_box"]["tmp_name"]);
		}			
		// if uploaded image was PNG
		if($_FILES["image_upload_box"]["type"] == "image/x-png"){
			$image_source = imagecreatefrompng($_FILES["image_upload_box"]["tmp_name"]);
		}
		

		$remote_file = "image_files/".$_FILES["image_upload_box"]["name"];
		imagejpeg($image_source,$remote_file,100);
		chmod($remote_file,0644);
	
	

		// get width and height of original image
		list($image_width, $image_height) = getimagesize($remote_file);
	
		if($image_width>$max_upload_width || $image_height >$max_upload_height){
			$proportions = $image_width/$image_height;
			
			if($image_width>$image_height){
				$new_width = $max_upload_width;
				$new_height = round($max_upload_width/$proportions);
			}		
			else{
				$new_height = $max_upload_height;
				$new_width = round($max_upload_height*$proportions);
			}		
			
			
			$new_image = imagecreatetruecolor($new_width , $new_height);
			$image_source = imagecreatefromjpeg($remote_file);
			
			imagecopyresampled($new_image, $image_source, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
			imagejpeg($new_image,$remote_file,100);
			
			imagedestroy($new_image);
		}
		
		imagedestroy($image_source);
		
		
		header("Location: submit.php?upload_message=image uploaded&upload_message_type=success&show_image=".$_FILES["image_upload_box"]["name"]);
		exit;
	}
	else{
		header("Location: submit.php?upload_message=make sure the file is jpg, gif or png and that is smaller than 4MB&upload_message_type=error");
		exit;
	}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Image Upload with resize</title>
<link rel="STYLESHEET" type="text/css" href="style/fg_membersite.css">
       <link rel="stylesheet" type="text/css" href="sfondosito.css">
       <link rel="stylesheet" type="text/css" href="menucarpeweb.css">
<style type="text/css">
<!--
body,td,th {
	font-family: Arial, Helvetica, sans-serif;
	color: #333333;
	font-size: 12px;
}

.upload_message_success {
	padding:4px;
	background-color:#009900;
	border:1px solid #006600;
	color:#FFFFFF;
	margin-top:10px;
	margin-bottom:10px;
}

.upload_message_error {
	padding:4px;
	background-color:#CE0000;
	border:1px solid #990000;
	color:#FFFFFF;
	margin-top:10px;
	margin-bottom:10px;
}

-->
</style></head>

<body>
<center>
<br><br><br><br><br><br><br><br>
<h1>Carica un immagine</h1>


        <?php if(isset($_REQUEST['upload_message'])){?>
            <div class="upload_message_<?php echo $_REQUEST['upload_message_type'];?>">
            <?php echo htmlentities($_REQUEST['upload_message']);?>
            </div>
		<?php }?>


<form action="submit.php" method="post" enctype="multipart/form-data" name="image_upload_form" id="image_upload_form" style="margin-bottom:0px;">
<label>Dimensione max 4MB. Estensione jpg, gif,  png:</label><br />
          <input name="image_upload_box" type="file" id="image_upload_box" size="40" />
          <input type="submit" name="submit" value="Upload immagine" />     
     
     <br />
	<br />

     
      <label>Scale down image? (2592 x 1944 px max):</label>
      <br />
      <input name="max_width_box" type="text" id="max_width_box" value="1024" size="4">
      x      
      
      <input name="max_height_box" type="text" id="max_height_box" value="768" size="4">
      px.
      <br />
      <br />
      <p style="padding:5px; border:1px solid #EBEBEB; background-color:#FAFAFA;">
      <strong>Note:</strong><br />
  Specifica le dimensioni di ritaglio automatiche.<br />
  
 <a href="delete_all_images.php">Cancella immagine.</a> :)<br />
  </p>
  </p>
<input name="submitted_form" type="hidden" id="submitted_form" value="image_upload_form" /></center>
<noscript><a href="http://www.thewebhelp.com/php/scripts/image-upload-with-resize/">PHP image upload script</a></noscript>
</form>




<?php if(isset($_REQUEST['show_image']) and $_REQUEST['show_image']!=''){?>
<p><img src="image_files/<?php echo $_REQUEST['show_image'];?>" /></p>
<?php }?>



</body>
</html>
 
Visto che fa l'upload lo script in teoria se controlli tra le tue cartelle sul server ci deve essere l'immagine caricata dall'utente. Poi dovresti salvare nel db il percorso della cartella nel db per poter poi stamparla all'occorrenza.
 
L'url lo devi comunque salvarlo da qualche parte. Anche in un file se non vuoi/puoi usare un db.
 
ho provato cosi:
PHP:
<?php
$dir = "id_user1/uploadimmagineprofilo/image_files/";


if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
           
           
          echo "<img src=\"{$dir}{$file}\"><br />";
        }
        closedir($dh);
       
    }
}

?>

.....e funziona ma id_user1 e' il primo utente del database ..il problema e che se si logga l'utente 2 non deve vedere le immagini dell'utente 1...come posso fare longo8
 
gestisco le sessioni utente con questo script che indirizza ogni utente verso il suo percorso..

PHP:
echo "<a href='/id_user" . $_SESSION['id_of_user'] . "/upload.php'><font size='3'>PERCOSO UTENTE</A>

ma non so come adattarlo a questo??..

PHP:
 <?php
$dir = "id_user1/uploadimmagineprofilo/image_files/";


if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
           
           
          echo "<img src=\"{$dir}{$file}\"><br />";
        }
        closedir($dh);
       
    }
}

?>
 
.....e funziona ma id_user1 e' il primo utente del database ..il problema e che se si logga l'utente 2 non deve vedere le immagini dell'utente 1...come posso fare longo8
Database? Vuol dire che hai un db? Allora perché non inserisci anche gli url li?
il problema e che se si logga l'utente 2 non deve vedere le immagini dell'utente 1
Tu glielo devi impedire con dei controlli. È meglio gestire i permessi direttamente dal php sfruttando la sessione.
 
Basta vedere se la cartella che ha selezionato coincide con l'id dell'utente contenuto nella variabile di sessione che hai usato per indirizzare l'utente. $_SESSION['id_of_user']
 
Certo e ci sto provando lavorando qui

PHP:
$dir = "id_user1/uploadimmagineprofilo/image_files/";

cercando di far funzionare cosi...ma niente

PHP:
$dir = 'id_user" . $_SESSION['id_of_user'] . "/uploadimmagineprofilo/image_files/';

dove sbaglio?
 
Certo e ci sto provando lavorando qui

PHP:
$dir = "id_user1/uploadimmagineprofilo/image_files/";

cercando di far funzionare cosi...ma niente

PHP:
$dir = 'id_user" . $_SESSION['id_of_user'] . "/uploadimmagineprofilo/image_files/';

dove sbaglio?
Prova cosi

PHP:
$dir = $_SESSION['id_of_user'].'/uploadimmagineprofilo/image_files/';

ps: ovviamente ci deve essere il session_start() prima
 
Si in pratica così ogni utente ha la sua cartella. Certo che se un utente (id_utente1) vuole guardare le foto di un altro utente (id_utente2) basta che cambi l'1 con il 2 nel link e compaiono tutte davanti.
Quindi la pagina che stampa le foto dovrebbe avere all'inizio il controllo di cui parlavo.
 
Cosi funziona Nefyt pero' Longo8 ha ragione...
Chissa' se mi suggerisce qualche chiccha sui controlli in formato script php?
 
Pero' e' strana una cosa...
Peche' mi visualizza la pagina con due error img cosi?
Eppure la cartella che visiona lo script e' vuota... non capisco
carpeweb.altervista.org/login-home.php
 
Ultima modifica:
Cosi funziona Nefyt pero' Longo8 ha ragione...
Chissa' se mi suggerisce qualche chiccha sui controlli in formato script php?
Finché memorizzerai le immagini come file sarà possibile accedergli in un modo o nell'altro,quindi se vuoi essere totalmente sicuro dovresti memorizzarle sul db come blob, comunque non ho ben capito dove sarebbe possibile vedere tutte le foto semplicemente cambiando l'id. Se l'id è una sessione che penso venga settata al login con l'id dell'utente preso dal database, non potrà modificarlo, al massimo puo trovare la directory delle immagini dell'altro utente ma se non conosce il nome(delle immagini) non puo visualizzarle.


Se intendevate un eventuale directory listing, si puo facilmente evitare da htaccess aggiungendo questo
Codice:
Options -Indexes
(verificato in locale)
 
Ultima modifica:
In realtà come stai facendo non c'è bisogno di fare dei controlli.
In altre parole l'immagine è comunque visibile da tutti gli utenti se si sa l'indirizzo (se non viene impedito l'accesso in altri modi).
Ma è così sempre quindi non c'è nulla da fare a meno che non vuoi appesantire il db (scelta non conveniente).
Per quanto riguarda il codice (in questo caso non c'è bisogno visto che non sussiste il problema) in generale preferisco dare suggerimenti per mettere la voglia all'utente di cercare e informarsi, se trova il codice bello e pronto non è soddisfacente per me perché credo che tutti possano arrivare se indirizzati (io compreso :) ).

Edit: ho appena letto la tua risposta nefyt. Infatti mi sbagliavo, l'unico modo di accedere è quello diretto infatti è si può evitare da htaccess.
 
Ultima modifica:

Discussioni simili