Inserire un'immagine avatar nel profilo per avere ogni utente la sua pagina

Ciao

Ciao Longo,

Allora ho verificato, e le immagini vengono memorizzate nel db o meglio i link. perchè le immagini mi hanno sconsigliato di memorizzarle nel db sennò diventa troppo pesante. Rimane permanente l'errore:

"Warning: strtoupper() expects parameter 1 to be string, array given in /volume1/web/utenti/provalogin/paginaris.php on line 26 "

La riga 26 di paginaris.php è la seguente:

PHP:
$array =  strtoupper($_SESSION['nome'] );     //che mi da il nome in maiuscolo inisieme a benvenuto

Ti posto i due file dell'immagine, tante volte riuscissi a trovare qualche errore che a me sufgge, e se per caso ti venisse in mente come unirli ben venga.

index.php:

PHP:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.js" type="text/javascript"></script>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js'></script>
<script src='http://memai.altervista.org/js/jquerymin.js'></script><script 
<script>
function togli(x)
{
	$('#'+x).toggle();
	var immagine = document.getElementById('hidden'+x).value;
	$.get('togli.php',{img:immagine},function(done){$('#cancella_img').html(done)});
}


function carica()
{
	$.post('insert_immages.php',{fine:'yes'},function(done){$('body').html(done)});
}

</script>
<?php
require_once("connetti.php");
require_once("paginaris.php");
if(isset($_SESSION['nome'])) {


#se non esistono delle cartelle le creo
if(!file_exists('img_temp'))
{
	mkdir('img_temp/',0777);
}
if(!file_exists('immagini'))
{
	mkdir('immagini/',0777);
}
if($_POST['sub'])
{
	#Inizializzo la cartella dove andranno a finire le imamgini
	$dir = 'img_temp/';
	#ricevo i dati delle immagini
	#$nome per il nome del file, es: pippo.jpeg
	$nome = $_FILES['file']['name'];
	#$nome_temporaneo invece per il nome temporaneo che
	#il server crea per l'immagine pippo.jpeg
	$nome_temporaneo = $_FILES['file']['tmp_name'];
	
	#Inizializzo una variabile a cui dò un valore intero pari a 0
	#semplicemente per far girare il codice while e leggere l'array
	$n=0;
	#finche n sarà minore delle immagini caricate, il ciclo continuer�
	while($n<count($nome))
	{
		#trovo le informazioni , come: l'altezza, la larghezza e il sorgente delle immagini
		#creando una lista e usando poi getimagesize() per prelevare le informazioni
		list($larghezza,$altezza,$sorgente,$attributo) = getimagesize($nome_temporaneo[$n]);
		#creo uno switch in base al sorgente e per ogni caso  effettuer� un preciso evento
		switch($sorgente)
		{
			case IMAGETYPE_GIF:
			#creo le immagini
			$immagine = imagecreatefromgif($nome_temporaneo[$n]);
			imagegif($immagine, $dir.$nome[$n]);
			break;
			
			case IMAGETYPE_JPEG:
			$immagine = imagecreatefromjpeg($nome_temporaneo[$n]);
			imagejpeg($immagine, $dir.$nome[$n]);
			break;
			
			case IMAGETYPE_PNG:
			$immagine = imagecreatefrompng($nome_temporaneo[$n]);
			imagepng($immagine, $dir.$nome[$n]);
			break;
			
			case IMAGETYPE_BMP:
			$immagine = imagecreatefrombmp($nome_temporaneo[$n]);
			imagebmp($immagine, $dir.$nome[$n]);
			break;
		}
		
		#Creo il div dove gli assegno l'id per identificare  con JQuery le imamgini appena caricate
		?>	<div id='<?php echo $n?>'>
				<img src='<?php echo $dir.$nome[$n]?>' style='width:100px; height:100px'>
				<input  id='hidden<?php echo $n ?>' type='hidden' value='<?php echo $dir.$nome[$n] ?>'/>
				<div onclick='togli("<?php echo $n ?>")'>Togli</div>
			</div>
			<div id='rimetti<?php echo $n ?>'  onclick='rimetti("<?php echo $n ?>")' style='display:none'>Rimetti</div>
		<?php
		$n++; #aumento la variabile inizializzata per il funzionamento dello while
	}
	?>
		<div id='cancella_img'></div>
		<input type='submit' value='carica' onclick='carica();void 0'/>
	<?php
	exit;
}
?>
<form action='' method='POST' enctype='multipart/form-data'>
	<input type='file' name='file[]' multiple size ="60"/>
	<input type='submit'  name='sub' value='Carica'/>
</form>
<?php
	
}
?>

Qua mi da un triangolino giallo non so il perchè. Me l'ha dato sempre:

PHP:
		list($larghezza,$altezza,$sorgente,$attributo) = getimagesize($nome_temporaneo[$n]); //triangolino giallo e sicuramente non me la fa eseguire

E questo è inser_immages.php:

PHP:
<?php
require_once("connetti.php");
require_once("paginaris.php");
if(isset($_SESSION['nome'])) {
    
if(isset($_POST['fine']))
{
	#Inserisci questa funzioncina per leggere tutti i file contenuti nella cartella immagini
	#che poi verranno inseriti nel db tramite una query grazie ad un for
	function illustrazioni($cartella){
		$foto=Array();
		if(file_exists($cartella)){
			$directory = opendir($cartella);
			while (false !== ($file = readdir($directory))) { 
				if(is_file($cartella.$file)){
					array_push($foto,$file);
				}
			}
			$handle = closedir($directory);
		}
		sort($foto);
		return $foto;
	}
	$foto_t=array();
	$foto_t=illustrazioni("img_temp/");
	$conta = count($foto_t);
	for ($x=0; $x<$conta; $x++)
	{	
		$immagine_t = "img_temp/$foto_t[$x]";
		$immagine = "immagini/$foto_t[$x]";
		echo "<img src='".$immagine_t."' width='100px' height='100px'> "; 
		#questa variabile contiene il valore dell'url  finale che si inserirà alla fine
		#Sposto i file nella cartella temporanea in quella fissa
		copy($immagine_t,'immagini/'.$foto_t[$x]) or die('non si sposta la foto');
		##infine elimino il file nella directory temporanea
		unlink($immagine_t);
               
		$insert_query = "INSERT INTO immagine(immagine) VALUES('".$immagine."')";
		mysql_query($insert_query);
               
	}
	echo "Le immagini sono state inserite nel database con successo!";
}
mysql_close();
}
?>

Qua mi da un altro triangolino giallo, credo che sia un errore di sintassi:

PHP:
$handle = closedir($directory); //triangolino giallo (che sicuramente non mi fa eseguire la riga)

Se le tieni separati, funzionano magnificamenete, se provi ad unire il tutto succede un casino. In ultimo ti vorrei far notare che ho messo ad entrambi i file le seguenti righe:

PHP:
require_once("connetti.php");      //richiamo della connessione al db
require_once("paginaris.php");    //richiamo alla pagina protetta solo chi si logga la può vedere
if(isset($_SESSION['nome'])) {   //richiamo della sessione (forse sbaglio ???? Boh non saprei)

Ovviamente l'ultima parentesi graff si chiude a fine codice di entrambi. Grazie. Spero di risolvere insiema te il problema.
 
Si nel campo SRC devi inserire il link che è nel database quindi ti serve una query.
Mi dici il tuo "nome" sul sito?
Ti ha sempre dato questo errore?
 
Ciao

Si nel campo SRC devi inserire il link che è nel database quindi ti serve una query.
Mi dici il tuo "nome" sul sito?
Ti ha sempre dato questo errore?

Io mi chiamo Fabio, piacere. Il mio contatto skype è: mousesenzapalle2007 (se tante volte mi vuoi aggiunre per avere un contatto diretto). Io sono registrato sul mio sito come paperinik4 che viene trasformato dalla sessione in Fabio tutto maiuscolo. Quell'errore me lo da solo quand ho inserito queste righe:

PHP:
require_once("connetti.php");
require_once("paginaris.php");
if(isset($_SESSION['nome'])) {

Sui file inser_immages e index. Non ci puoi arrivare da esterno sul mio sito, in quanto lavoro tutto sul synology (nas). Tu hai skype per caso ???
 
Il secondo triangolino giallo c'è perché non bisogna assegnare closedir() a una variabile. Quindi togli "$handle=".
Poi sicuro che in paginaris hai la sessione aperta? Non ti vede la $_SESSION['nome']..fai delle prove e stampala a video o controlla il contenuto con un var_dump().
 
Ciao

Allora,

Per quanto riguarda la sessione, sono sicuro che è aperta perchè sennò non mi farebbe entrare o sbaglio ????

deboo corregere in questa maniera ??

da così:

PHP:
$handle = closedir($directory);

A così:

PHP:
closedir($directory);

Ho o detto na cavolata ???? Il primo triangolino è ito. Correzione effettuata corretamenter. grazie.
 
Si ti permette l'accesso ma non si sa che succede, almeno non lo so io visto che non hai pubblicato il contenuto di paginaris.
Il var dump fallo subito dopo questo:
PHP:
require_once("paginaris.php");
 
Ciao

Ti posto la paginaris, in tanto metto anche il var_dum dove mi hai consigliato.

PHP:
link rel="stylesheet" type="text/css" href="coloredisfondo.css">
 
    <?php

    require_once("connetti.php");
    session_start();
if(isset($_COOKIE["ultimoaccesso"])) {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $ultimo_cookie = $_COOKIE["ultimoaccesso"];
    $me= "Il tuo ultimo accesso è stato il:  $ultimo_cookie";
} else {
    $valore_cookie = date("d/m/Y - H:i:s");
    setcookie ("ultimoaccesso", $valore_cookie, time() + 365 *24*3600);
    $me= "Non ti sei mai collegato a questa pagina";
}


if(isset($_SESSION['nome'])) {

$array = mysql_query("SELECT * FROM utenti WHERE id=" . $_SESSION['id']);  

$array=mysql_fetch_array($array);  
    
$array =  strtoupper($_SESSION['nome'] );     
// if(isset($_SESSION['nome']))  {   

    echo "<div class=\"messaggio\"><h1>";

    
echo "BENVENUTO ".$array."<br />";
    
    echo $me;

      echo "</div> </h1>";

}else{
    header("Location:failed.php");      
    exit();   
 
//}

}
 ?> 
 
<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>benvenuto</title>

<body>
 
    
<center> <br> <br> <br>

 
 <input type="button" onClick="location.href='index.php';" style='padding:5px' value="Modifica" />
 <input type="button" onClick="location.href='logout.php';" style='padding:5px' value="Cancella" />
 <input type="button" onClick="location.href='logout.php';" style='padding:5px' value="Salva" />
 <input type="button" onClick="location.href='logout.php';" style='padding:5px' value="Logout" /> 
 
   
</center>
 </body>
</html>


Questo è il risultato del var_dump messo sulla paginaris.php --> va_dump($SESSION);

Risultato:

PHP:
array(2) { ["id"]=> &string(1) "1" ["nome"]=> &string(5) "fabio" }
 
Ok quindi abbiamo capito che per qualche strano motivo $_SESSION['nome'] è diventato un array contenente alla chiave 0 il nome. Vedi dove viene modificato.
 
ciao

Ciao,

Facile che siano tutti quei richiami che ho fatto. Parlo di require ecc. Come se ad ogni azione ci sia un refresh. Hoo notato che a ogni click, si aggiornava l'orario dell'ultimo accesso avvenuto. Volevo saper una cosa, é possibile unire il tutto in una pagina sola o é na stronzata ????
 
Si teoricamente è possibile..ma la pagina connetti.php la lascerei a parte.
 
Ciao Longo, buongiorno,


Scusami se non ti ho risposto subito, ma ad una certa ora psengo il pc. Si infatti tranne connetti, perchè è il richiamo della connessione al db. Senti mi puoi dare una mano ad unificare il tutto ??? Perchè io c'ho provato, ma con risultati negativissimi. E la soluzione che avevo trovato, ho notato che praticamente la pagina ri riaggiornava come se fosse ricaricata di continuo. Forse lo sbaglio è proprio perchè richiamo sempre la pagina connetti.php ??? Oppure quella è giusta ??? Boh ???
 
Molte volte non conviene unire tutto. Bisogna vedere se in questo caso conviene. Cosa fanno le pagine che vorresti unire? E quali sono i nomi?
 
Ciao

Ciao Longo,

Scusami, ma mi osno liberato solo ora dalla cucina. Ho dovuto preparare il pranzo. Allorro i file si chiamano:

1) paginaris.php

2) index.php (che richiama la funzione di visualizzazione immagine e la sua memorizzazione nel db)

3) insert_immages (richiama la funzione per l'upload immagine quindi con tasto sfoglia e carica)

Sono queste le pagine che vorrei unire. Ovviamente se conviene. Perchè pensavo che se unissi le pagine forse non mi darebbe più quell'errore. E poi non dovrei m,ettere a tutte le pagine il richiamo "if(isset($_SESSION['nome'])) {" Tu che ne pensi ???
 
Cioè nella index tu ricevi l'immagine e salvi l'indirizzo nel db?
Di solito io non consiglio unire le pagine di caricamento e quella che riceve ciò che è stato caricato per inserirlo nel db.
La paginaris che fa?
 
Ciao

Si, confermo, la index ti da la possibilità di sfogliare la cartella, poi selezionare l'immagine che vuoi e dopo di che la carichi. Una volta caricata l'immagine, viene salvata il link nel db. La paginaris.php in pratica è una pagina riservata, che si applica o meglio che entra in funzione quando l'utente è loggato. Se non sei loggato o provi a digitare sulla barra degli indirizzi del browser, vieni automaticamente mandato in una pagina chiamata failed.php, che ti genera un errore. Inoltre, stavo sperimentando una query per il richiamo delle immagini ed è la seguente:

PHP:
//Inizio select per vedere l'immagine propria

$sql="select immagine from immagine where id=".$_GET['id'];
$result=mysql_query($sql);
$riga=mysql_fetch_row($result);
$filename=basename($riga[0]);
print "<img src='immagini/".$filename."'><br>".$filename;

Questa query funziona, l'ho inserita nella paginaris in fondo verso la fine, però se entro come utente2 vedo ugualmente la stessa immagine dell'utente. :( Rettifico, c'erano solo le immagini dell'utente (ossia di paperinik) ecco perchè vedevo sempre le stesse immagini ihiihihii che rinco che so.
 
Ultima modifica:
Ciao

Scusate,

Stavo cercando di modificare l'immagine iniziale di un avatar, volevo sapere se questo tipo di script poteva andare bene e se c'è qualche correzione da fare:

PHP:
  $foto = $_GET['foto'];
echo "<h1> Modifica immagine in corso $foto ... </h1>";

//$qry="UPDATE utenti  SET attivo='1' WHERE email='"$email'"';

$insert_query = "UPDATE immagine SET immagine ='immagine' WHERE id='$id'";


if (mysql_query($insert_query)) {
    echo "... Immagine modificata correttamente";
    header("Refresh: 3;URL=paginaris.php.php"); 
    
   // header("Refresh: 3;URL=login.php"); 
    header("Refresh: 3;URL=login.php"); 
} else {
    echo "Errore: immagine non modificata correttamente";
}
	
}


Sopratutto questa query qua,m, che non mi convince molto:

PHP:
$insert_query = "UPDATE immagine SET immagine ='immagine' WHERE id='$id'";


Spero di ricevere come al solito un'aiutone. Grazie anche a Longo.
 

Discussioni simili