Ciao a tutti ragazzi

ho creato un account su Altervista.

Ho creato nel db una tabella foto con i campi colonna "id" , "titolo" ," descrizione", "indirizzo_foto".

Nella cartella principale del proprio sito ho creato una pagina index.html nella quale c'è un link che mi porta al form per inserire l'immagine (form che si trova sempre nella cartella principale).

Poi ho creato la cartella "allegati" sempre nella cartella principale, dove andare a memorizza l'immagine/documento.

1)Questa cartella deve avere solo i permessi di scrittura , o tutti i permessi e quindi 777?


Questo è il form
codice HTML:
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>modulo web</title></head>
<body>
<h3>Questa è un modulo web collegato al database ed al programma upload</h3>

<form method="post" enctype="multipart/form-data" action="upload.php">
<p>Immagine <input type="file" size="30" name="allegato"></p><p>Titolo <input type="text" size="10" name="titolo" ></p>
<p>Breve Descrizione<br> <textarea name="descrizione" rows="8" cols="28"></textarea></p></select></p>
<p>
<input type="submit" value="Aggiungi"></p></form>

</body>
</html>

Questo è il file di memorizzazione sulla cartella e nella tabella del db.

Codice PHP:
<?php
require_once('configurazione_credenziali_esterno_altervista.php');
$link = @mysqli_connect(DB_HOSTDB_USERNDB_PSW) or die("Errore connessione: "mysqli_connect_error());

$dbw = @mysqli_select_db($linkDB_my) or die("Errore apertura database: " mysqli_error($link));

$nomefile_tmp=$_FILES["allegato"]["tmp_name"];

$tipoallegato=$_FILES["allegato"]["type"];

$nomeallegato=$_FILES["allegato"]["name"]; //nome dell'allegato completo di estensione

$fullpath="allegati/";
//cartella dove salverò i doc. deve avere permessi di scrittura che sono//da modificare in fase di creazione della cartella tramite programma FTP o tramite il pannello di controllo offerto dal provider

if(isset($nomeallegato)){    

$okcopy=copy($nomefile_tmp,"$fullpath$nomeallegato");}

if(
$okcopy){
    
//recupero le info dal form   

 
$titolo=$_POST['titolo'];  
  
$desc=$_POST['descrizione'];   
 
$urlfoto='http://sitositosito.altervista.org/'.$fullpath.$nomeallegato;    //è l'indirizzo assoluto di dove si trova l'immagine


    
$rs=@mysqli_query($link,"INSERT INTO foto (titolo,descrizione,indirizzo_foto) VALUES('$titolo','$desc','$urlfoto')");    //valorizzo le colonne titolo, descrizione, foto con i dati appena recuperati   

 
if($rs){    echo "ok. Dati salvati<br>"
   echo 
"$urlfoto";    }   
 else{echo 
"riprova<br>";   
 echo 
"$urlfoto";}

}
?>

File per leggere cosa ho memorizzato nel db

Codice PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>leggo i file dal db</title></head>
<body>
<h1>leggo i file dal db di altervista</h1>


<?php

require_once('configurazione_credenziali_esterno_altervista.php');
$link = @mysqli_connect(DB_HOSTDB_USERNDB_PSW) or die("Errore connessione: "mysqli_connect_error());$dbw = @mysqli_select_db($linkDB_my) or die("Errore apertura database: " mysqli_error($link));

$strsql"SELECT * FROM foto ";$rs = @mysqli_query($link$strsql) or die("Errore query database: " mysqli_error($link));

while (
$riga mysqli_fetch_array($rs)) { 
   
$str_id $riga['id'];   
 
$str_nome $riga['titolo']; 
   
$str_desc $riga['descrizione'];  
  
$str_indirizzo $riga['indirizzo_foto'];  
  echo 
"Riga:  $str_id -> Titolo: $str_nome - Descrizione: $str_desc - Indirizzo: $str_indirizzo<br>  
  <img src='"
.$str_indirizzo."'><br>";      
  }        
    
?>                                         
   </body>  
  </html>
Mi funziona tutto alla perfezione.

Ho però delle domande al riguardo:

per fare dei controlli sull'estensione, sulla dimensione dei file, per esempio posso
accettare foto .jpeg, .tiff , jpg di 5mb, gif di 2 mb, documenti docx, doc e pdf da 3 mb ma non file.exe cosa devo fare?


Questa parte con il recupero delle info come la si sfrutta bene?
Codice PHP:
$nomefile_tmp=$_FILES["allegato"]["tmp_name"];
$tipoallegato=$_FILES["allegato"]["type"];
$nomeallegato=$_FILES["allegato"]["name"