Piccolo problema con gestione immagini.

[email protected]

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:

Claudio Curci

Nuovo Utente
15 Mar 2013
8
0
0
Ciao,
la sottocartella di Immagini esiste già al momento del trasferimento del file?
Ha adeguati permessi di scrittura?
 

[email protected]

Nuovo Utente
2 Mar 2013
25
0
0
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.
 

Claudio Curci

Nuovo Utente
15 Mar 2013
8
0
0
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?)
 

[email protected]

Nuovo Utente
2 Mar 2013
25
0
0
No sono con Windows7,comunque per creare la cartella utilizzo l'istruzione:

$path="Immagini/".$_SESSION["Email"];
mkdir("$path",0777);
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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);
//...
?>
 

[email protected]

Nuovo Utente
2 Mar 2013
25
0
0
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
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