Piccolo problema con gestione immagini.

  • Creatore Discussione Creatore Discussione Ppz@OdC
  • Data di inizio Data di inizio

Ppz@OdC

Nuovo Utente
2 Mar 2013
25
0
0
Ciao ragazzi,avrei un piccolo problema.Praticamento ho due script,uno si occupla di acquisire l'immagine e l'altro di farmela visualizzare,tuttavia ho dei problemi.

Questo è lo script che si occupa di acquisire l'immagine:
PHP:
<?php
session_start();
$Cartella = $_SESSION["Email"];
do { 
if (is_uploaded_file($_FILES['file']['tmp_name'])) { 

if ($_FILES['file']['size'] > 8024000) { 
$msg = "<p>Il file non deve superare i 18 KB!!</p>"; 
break; 
} 

list($width, $height, $type, $attr) = getimagesize($_FILES['file']['tmp_name']); 

if (($width > 400) || ($height > 500)) { 
$msg = "<p>Dimensioni non corrette!!</p>"; 
break; 
} 

if (($type!=1) && ($type!=2) && ($type!=3)) { 
$msg = "<p>Formato non corretto!!</p>"; 
break; 
} 
 
if (!move_uploaded_file($_FILES['file']['tmp_name'],"Immagini/$Cartella")) { 
echo "<p>Errore nel caricamento dell'immagine!!</p>"; 
break; 
}  
} 
} while (false); 
header("Vista.php");
?>


In questo script non riesco ad inserire la mia immagine nella cartella "Immagini" e più precisamente nella cartella che ha lo stesso nome della mia attuale sessione.

Mentre il secondo script si occupa di farmi vedere l'immagine,l'immagine che viene mostrato ha il nome della sessione,ma non riesco a farlo...come posso fare?

Secondo script,che (non)permette la visualizzazione dell'immagine.


PHP:
<?php
$path = "Immagini/'$_SESSION["Email"]'";
$dir_handle = @opendir($path) or die("Unable to open folder");
 
while (false !== ($file = readdir($dir_handle))) {
 
if($file == "index.php")
continue;
if($file == ".")
continue;
if($file == "..")
continue;
 
echo "<img src=\"{$path}{$file}\"><br />";
 
}
closedir($dir_handle);
 
?>
 
Ultima modifica di un moderatore:
Ciao,
la sottocartella di Immagini esiste già al momento del trasferimento del file?
Ha adeguati permessi di scrittura?
 
Si la cartella è presente,mentre la sottocartella viene creata automaticamento ogni volta che qualcuno si registra,tale sottocartella prende il nome del email.Per come la penso io sono presenti errori sintattici.
 
Dovresti prima creare la cartella, e poi inserire il file.

La cartella la puoi creare con mkdir("Immagini/$Cartella");

Se ancora non funziona, vai dentro Immagini e verifica quantomeno se la cartella è stata creata. In caso contrario dovresti aumentare i permessi di scrittura (sei su Apache /linux giusto?)
 
No sono con Windows7,comunque per creare la cartella utilizzo l'istruzione:

$path="Immagini/".$_SESSION["Email"];
mkdir("$path",0777);
 
ciao
innanzi tutto togli il silent, così vedi se apre la cartella e la legge
poi se non erro tu hai la carlella Immagini con dentro sottocartelle che si chiameranno (es.)
Immagini/[email protected]
Immagini/[email protected] ecc...
essendo indirizzi intanto devono finire con /
PHP:
<?php
//$path = "Immagini/'$_SESSION["Email"]'";//poi prova a correggere in
$path = "Immagini/".$_SESSION["Email"]."/";
$dir_handle = opendir($path) or die("Unable to open folder");
while (false !== ($file = readdir($dir_handle))) {
if($file == "index.php")
continue;
if($file == ".")
continue;
if($file == "..")
continue;
 
//echo "<img src=\"{$path}{$file}\"><br />";//e correggere anche questa in
echo "<img src=\"".$path.$file."\"><br />";
}
closedir($dir_handle);
?>
poi se devi leggere delle immagini perchè non usi la funzione glob()?
es.
PHP:
<?php
$path = "Immagini/".$_SESSION["Email"]."/";
$immagini=glob($path."*.jpg");//crea un array con i nomi di tutte le jpg della path indicata
foreach($immagini as $immagine){
	echo "<img src=\"".$path.$immagine}."\"><br />";
}
?>
se poi nella cartella oltre che alle jpg hai anche (es) png
fai un array_merge es.
PHP:
<?php
//....
$imm_jpg=glob($path."*.jpg");
$imm_png=glob($path."*.png");
$immagini=array_merge($imm_jpg,$imm_png);
//...
?>
 
Mi esce questo errore:
Notice: Undefined variable: _SESSION in C:\xampp\htdocs\AbbyVideo.php on line 69


Usando questo codice:
PHP:
<?php 
//$path = "Immagini/'$_SESSION["Email"]'";//poi prova a correggere in 
$path = "Immagini/".$_SESSION["Email"]."/"; 
$dir_handle = opendir($path) or die("Unable to open folder"); 
while (false !== ($file = readdir($dir_handle))) { 
if($file == "index.php") 
continue; 
if($file == ".") 
continue; 
if($file == "..") 
continue; 
  
//echo "<img src=\"{$path}{$file}\"><br />";//e correggere anche questa in 
echo "<img src=\"".$path.$file."\"><br />"; 
} 
closedir($dir_handle); 
?>
 
Ultima modifica di un moderatore:
ciao
non l'ho scritto tutto, manca il session_start()

p.s.
racchiudi sempre il codice tra gli appositi tag (seconda riga formattazione post ultime tre iconcine, nell'ordine CODE HTML PHP)
 
ciao
verifica che la sessione esista e che venga trasmessa, prima di
$path = "Immagini/".$_SESSION["Email"]."/";
metti
PHP:
<?php
//....
var_dump($_SESSION["Email"].);
$path = "Immagini/".$_SESSION["Email"]."/";
//....
?>
e posta cosa riporta il var_dump
 

Discussioni simili