Visualizzazione risultati 1 fino 7 di 7

Discussione: Pagine dinamiche in Php raggiungibili solo con login corretto

  1. #1
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Post Pagine dinamiche in Php raggiungibili solo con login corretto

    forse non mi sono spiegato bene nel titolo.

    sono alle prime armi con il php.
    ho appena finito di creare un sistema di login non basato su database mysql ma su un semplice file.

    alcune pagine sono dinamiche, cioè:

    index.php?opzione=1
    index.php?opzione=2
    [...]

    bene, fin qui ci siamo.
    ora mettiamo conto che uno apra il file "index.php" da un url. di default viene reindirizzato su la pagina di log-in e dopo aver effettuato il login va a finire su index.php?opzione=1 (per dire) che è la pagina principale del mio servizio di uploud.

    ecco qui la pagina che ho descritto

    da questa pagina si è reindirizzati qui

    e effettuato il log-in

    qui

    fin qui ci siamo. ora, uno bravo, cosa può fare?

    inserire l'url --> http://www.gabriele97.altervista.org...hp?option=home

    nel browser e essere reindirizzato nell'home di uploud, saltando la pagina di log-in.

    io ora vorrei fare in modo che se uno va

    http://www.gabriele97.altervista.org...hp?option=home

    venga restituito un messaggio di errore che richiede di eseguire il log-in.

    come posso fare?

  2. #2
    Guest

    Predefinito

    Semplicemente ad inizio pagina (in php subito dopo il body), controlli che $_POST["user"] e $_POST["password"] (le due variabili che contengono il valore dei due textfield del login) siano settati, cioè pretendi che qualcuno abbia riempito user e passw nel form della pagina prima. Si fa cosi:

    Codice PHP:
    <?php
    if(isset($_POST["user"]) && $_POST["user"]!="" && isset($_POST["password"]) && $_POST["password"]!= "") {
    ?>
    blocco da visualizzare se loggati (quindi tutta la pagina di amministrazione)

    Codice PHP:
    <?php
    } else {
    header("location:../index.php?page=login&alert=1");
    }
    ?>
    poi nella pagina login controlli se alert è a 1 e se è vero stampi un avviso. Tutto chiaro?
    Ultima modifica di musicanapoli : 06-03-2010 alle ore 18.00.47 Motivo: Codice racchiuso tra i tags

  3. #3
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Predefinito Non mi è chiaro

    non mi è chiaro, cosa dovrei fare. la pagina di login non è in php ma metà php che contiene i dati per le pagine dinamiche e l'html per il login.
    P.S. quando vieni reindirizzato nella pagina di login, i dati del form vengono inviati a pr_01.php che controlla nel file database se i dati inseriti sono coretti; se si si è reindirizzati nella home di uploud se è no, include il file di errore che ti dice di ritornare indietro e correggere.

    il file \uploud\index.php ecco come è formato

    Codice PHP:
    <?
    /*
    |---------------------------------------------------|
    | LICENSE BLOCK START |
    |---------------------------------------------------|
    | The Uploader 2.0 - Stable |
    |---------------------------------------------------|
    | |
    | Creators: Andy94 & Ste_95 |
    | Company: MegaLab.it |
    | Site: [url]www.MegaLab.it[/url] |
    | License: Creative Commons |
    | Released: Semptember, 2009 |
    | |
    |---------------------------------------------------|
    | LICENSE BLOCK END |
    |---------------------------------------------------|
    */
    ?>
    <html>
    <a href="http://forum.it.altervista.org/gabriele97/gabriele97.php">
    <?
    echo "$nascosto";
    ?>
    </a></html>
    <?
    switch($_GET['option'])
    {
    default:
    header("Location: http://www.gabriele97.altervista.org/altro/log-in/index.php?page=login");
    break;
    case
    'home':
    }
    //Importing config file and start session
    session_start();
    if (
    file_exists("MainHandler.php")) {
    @include(
    "MainHandler.php");
    } else {
    die(
    '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>The Uploader 2.0 - Critical Error</title></head><body><h1 style="text-align: center;margin: 0px;padding: 3px;background-color: #F0DC82;border: 3px solid #FF0000;width: 80%;margin-top: 3px;display: block;margin-left: auto;margin-right: auto;background-image: url(\'images/coreerror.png\');background-repeat: no-repeat;background-position: left;">Impossibile trovare il gestore delle eccezioni!</h1></body></html>');
    }
    head("Indice"); ?>
    <html>
    <body>
    <div id="page">
    <? navigation(); ?>
    <div id="main">
    <span class="crnrs-top"><span></span></span>
    <?
    if(!isset($_SESSION['upload_limit']) AND $main['upload_limit'] != 0 OR $_SESSION['upload_limit'] != 0 AND $main['upload_limit'] != 0 AND $_SESSION['upload_limit'] != date("d/m/Y")) {
    $_SESSION['upload_limit']=0;
    $_SESSION['time_upload_limit']=time();
    }
    $BannedUpload['query']="SELECT id FROM " . $main['table_prefix'] . "_ban WHERE IP='" . $_SERVER['REMOTE_ADDR'] . "' AND bannedfrom='UPLOAD'";
    $BannedUpload['execute']=mysql_query($BannedUpload['query']) or error("Impossibile eseguire la query", mysql_error());
    //Check if the upload script is in manteniance mode
    if($main['general_manteniance']==1) {
    message("Stato di manutenzione", $main['general_message']);
    closeall();
    exit;
    //Check if the user is banned from uploading files
    } else if ($main['upload_manteniance']==1) {
    message("Stato di manutenzione", $main['upload_message']);
    closeall();
    exit;
    } else if (
    $_SESSION['upload_limit'] == $main['upload_limit'] AND date("d/m/Y", $_SESSION['time_upload_limit']) == date("d/m/Y") AND $main['upload_limit'] != 0) {
    message("Limite upload raggiunto", "Secondo le regole stabilite dall'amministratore, hai raggiunto il numero massimo di upload giornaliero.");
    closeall();
    exit;
    } else if(
    mysql_num_rows($BannedUpload['execute']) != 0) {
    message("Ip Bannato", "Il tuo IP risulta essere stato bannato dall'Amministratore.");
    closeall();
    exit;
    }
    ?>
    <h3 class="title">The Uploader 2.0 - Sezione Upload</h3>
    <hr />
    <?
    if($main['show_in_index'] == 1){
    echo
    '<div id="allowedext">
    <fieldset><legend>Estensioni consentite</legend>
    <p style="margin: 0px; text-align: center;">L\'Amministratore consente upload file con queste estensioni.</p>'
    ;
    while(
    $temp = each($main['allowed_ext'])) {
    if(
    $n!=0) {
    echo
    ' | ';
    }
    echo
    $temp['value'];
    ++
    $n;
    }
    echo
    '</fieldset>
    </div>'
    ;
    }
    ?>
    <form id="upload" method="post" enctype="multipart/form-data" action="ajax/upload.php">
    <div id="slots">
    <? while ($main['max_file_slots'] > 0) {
    echo
    '<input type="file" class="input" id="input_' . $main['max_file_slots'] . '" name="upfile_' . $main['max_file_slots'] . '" size="90" />
    '
    ;
    --
    $main['max_file_slots'];
    }
    if(
    $main['captcha_upload'] == 1) {
    require_once(
    "api/captchahandler.php");
    @
    captcha_show("Upload");
    }
    ?>
    </div>
    <p style="text-align: center;">
    <input type="reset" id="reset" name="reset" value="Svuota campi" class="deletebutton" style="display: inline;" />
    <?
    if($main['captcha_upload'] == 0) {
    echo
    '<input type="submit" id="startupload" name="startupload" value="Avvia Upload" class="startbutton" style="display: inline;" onclick="window.open(\'ajax/upload.php\',\'mywindow\',\'width=500,height=300,scrollbars=1\');this.form.target=\'mywindow\';this.form.submit()" />';
    } else {
    echo
    '<input type="button" id="startupload" name="startupload" value="Avvia Upload" class="startbutton" style="display: inline;" onclick="$(\'captcha\').setStyle(\'display\', \'block\');" />';
    }
    ?>
    </p>
    </form>
    <span class="crnrs-bottom"><span></span></span>
    </div>
    <? ?>
    </div>
    </body>
    </html>
    ---------

    ce lo switch con default che reindirizza a ../index.php?option=login e poi ce "Home" che è la pagina che si visualizza dopo il login ...

    invece il file ../index.php ecco come è


    ----------

    Codice PHP:
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
    <?php
    switch($_GET['page'])
    {
    default:
    header("Location: index2.html");
    break;
    case
    'login':
    echo
    "";
    }
    ?>
    <html>
    <!-- spazio riservato all'area di log in -->

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td align="center" valign="middle"><form action="pr_01.php" method="post">
    <table width="280" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td colspan="2"><img src="http://www.gabriele97.altervista.org/altro/commenti%20e%20registrazioni%20al%20mio%20blog/images/logo.PNG" width="345" height="70"></td>
    </tr>
    <tr align="left" valign="middle">
    <td width="140" height="30" align="left"><div align="center"><strong>User : </strong></div></td>
    <td width="149" height="30"><input name="user" type="text" id="user" size="15"></td>
    </tr>
    <tr align="left" valign="middle">
    <td height="30"><div align="center"><strong>Password : </strong></div></td>
    <td height="30"><input name="password" type="password" id="password" size="15"></td>
    </tr>
    <tr align="right" valign="middle">
    <td height="30"><input type="submit" name="Submit" value="Login"></td>
    <td height="30" align="left"><input type="reset" name="Submit" value="Resetta"></td>
    </tr>
    <tr>
    <td colspan="2">
    <p align="center"><b><a href="http://www.gabriele97.wordpress.com">
    www.gabriele97.wordpress.com</a></b> </td>
    <div>
    </div>
    <tr align="center" valign="middle">
    <td colspan="2"><h6>&nbsp;</h6></td>
    </tr>
    </table>
    </form>
    </td>
    </tr>
    </html>

    c'è sempre lo switch di default porta a un'altra area di login che a noi non interessa, mentre "login" contiene il form di login che invia i dati al file pr_01.php

    [DS] Usa i tag di codice quando ne riporti ampi stralci, si legge meglio...
    Ultima modifica di dementialsite : 05-03-2010 alle ore 23.29.46

  4. #4
    Guest

    Predefinito

    nella prima pagina che hai postato:

    switch($_GET['option'])
    {
    default:
    header("Location: http://www.gabriele97.altervista.org/altro/log-in/index.php?page=login");
    break;
    case 'home':
    }

    mi sa che c'è un errore: scrivi "case 'home':" e poi chiudi lo switch! Deve rimanere aperto lo switch se deve mostrare la pagina home! Quindi fai:

    switch($_GET['option'])
    {
    default:
    header("Location: http://www.gabriele97.altervista.org/altro/log-in/index.php?page=login");
    break;
    case 'home':

    Codice PHP:
    //Importing config file and start session
    session_start();
    if (file_exists("MainHandler.php")) {
    @include("MainHandler.php");
    } else {
    die('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>The Uploader 2.0 - Critical Error</title></head><body><h1 style="text-align: center;margin: 0px;padding: 3px;background-color: #F0DC82;border: 3px solid #FF0000;width: 80%;margin-top: 3px;display: block;margin-left: auto;margin-right: auto;background-image: url(\'images/coreerror.png\');background-repeat: no-repeat;background-position: left;">Impossibile trovare il gestore delle eccezioni!</h1></body></html>');
    }
    head("Indice"); ?>
    <html>
    <body>
    <div id="page">
    <? navigation(); ?>
    <div id="main">
    <span class="crnrs-top"><span></span></span>
    <?
    if(!isset($_SESSION['upload_limit']) AND $main['upload_limit'] != 0 OR $_SESSION['upload_limit'] != 0 AND $main['upload_limit'] != 0 AND $_SESSION['upload_limit'] != date("d/m/Y")) {
    $_SESSION['upload_limit']=0;
    $_SESSION['time_upload_limit']=time();
    }
    $BannedUpload['query']="SELECT id FROM " . $main['table_prefix'] . "_ban WHERE IP='" . $_SERVER['REMOTE_ADDR'] . "' AND bannedfrom='UPLOAD'";
    $BannedUpload['execute']=mysql_query($BannedUpload['query']) or error("Impossibile eseguire la query", mysql_error());
    //Check if the upload script is in manteniance mode
    if($main['general_manteniance']==1) {
    message("Stato di manutenzione", $main['general_message']);
    closeall();
    exit;
    //Check if the user is banned from uploading files
    } else if ($main['upload_manteniance']==1) {
    message("Stato di manutenzione", $main['upload_message']);
    closeall();
    exit;
    } else if (
    $_SESSION['upload_limit'] == $main['upload_limit'] AND date("d/m/Y", $_SESSION['time_upload_limit']) == date("d/m/Y") AND $main['upload_limit'] != 0) {
    message("Limite upload raggiunto", "Secondo le regole stabilite dall'amministratore, hai raggiunto il numero massimo di upload giornaliero.");
    closeall();
    exit;
    } else if(
    mysql_num_rows($BannedUpload['execute']) != 0) {
    message("Ip Bannato", "Il tuo IP risulta essere stato bannato dall'Amministratore.");
    closeall();
    exit;
    }
    ?>
    <h3 class="title">The Uploader 2.0 - Sezione Upload</h3>
    <hr />
    <?
    if($main['show_in_index'] == 1){
    echo
    '<div id="allowedext">
    <fieldset><legend>Estensioni consentite</legend>
    <p style="margin: 0px; text-align: center;">L\'Amministratore consente upload file con queste estensioni.</p>'
    ;
    while(
    $temp = each($main['allowed_ext'])) {
    if(
    $n!=0) {
    echo
    ' | ';
    }
    echo
    $temp['value'];
    ++
    $n;
    }
    echo
    '</fieldset>
    </div>'
    ;
    }
    ?>
    <form id="upload" method="post" enctype="multipart/form-data" action="ajax/upload.php">
    <div id="slots">
    <? while ($main['max_file_slots'] > 0) {
    echo
    '<input type="file" class="input" id="input_' . $main['max_file_slots'] . '" name="upfile_' . $main['max_file_slots'] . '" size="90" />
    '
    ;
    --
    $main['max_file_slots'];
    }
    if(
    $main['captcha_upload'] == 1) {
    require_once(
    "api/captchahandler.php");
    @
    captcha_show("Upload");
    }
    ?>
    </div>
    <p style="text-align: center;">
    <input type="reset" id="reset" name="reset" value="Svuota campi" class="deletebutton" style="display: inline;" />
    <?
    if($main['captcha_upload'] == 0) {
    echo
    '<input type="submit" id="startupload" name="startupload" value="Avvia Upload" class="startbutton" style="display: inline;" onclick="window.open(\'ajax/upload.php\',\'mywindow\',\'width=500,height=300,scrollbars=1\');this.form.target=\'mywindow\';this.form.submit()" />';
    } else {
    echo
    '<input type="button" id="startupload" name="startupload" value="Avvia Upload" class="startbutton" style="display: inline;" onclick="$(\'captcha\').setStyle(\'display\', \'block\');" />';
    }
    ?>
    </p>
    </form>
    <span class="crnrs-bottom"><span></span></span>
    </div>
    <? ?>
    </div>
    </body>
    </html>
    e poi chiudi il "case 'home' con "break;" e infine lo switch

    quindi:
    switch{

    default:....;
    case 'home': blocco da eseguire; break;
    }

    stesso errore anche nel secondo file all'inizio

  5. #5
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Predefinito ok fatto, e poi

    ho fatto così come mi hai detto per il file \uploud\index.php


    Codice:
    <?
    /*
    |---------------------------------------------------|
    |				  LICENSE BLOCK START			    |
    |---------------------------------------------------|
    |			  The Uploader 2.0 - Stable			    |
    |---------------------------------------------------|
    |													|
    | Creators:          Andy94 & Ste_95				|
    |  Company:				MegaLab.it					|
    |     Site:           www.MegaLab.it                |
    |  License:			 Creative Commons				|
    | Released:          Semptember, 2009				|
    |													|
    |---------------------------------------------------|
    |				  LICENSE BLOCK END				    |
    |---------------------------------------------------|
    */
    ?>
    <html>
    <a href="http://forum.it.altervista.org/gabriele97/gabriele97.php">
    <?
    echo "$nascosto";
    ?>
    </a></html>
    <?
    switch($_GET['option'])
    {
        default:
    	header("Location: http://www.gabriele97.altervista.org/altro/log-in/index.php?page=login");
    	break;
        case 'home':
    		
    //Importing config file and start session
    session_start();
    if (file_exists("MainHandler.php")) {
    	@include("MainHandler.php");
    } else {
    	die('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>The Uploader 2.0 - Critical Error</title></head><body><h1 style="text-align: center;margin: 0px;padding: 3px;background-color: #F0DC82;border: 3px solid #FF0000;width: 80%;margin-top: 3px;display: block;margin-left: auto;margin-right: auto;background-image: url(\'images/coreerror.png\');background-repeat: no-repeat;background-position: left;">Impossibile trovare il gestore delle eccezioni!</h1></body></html>');
    }
    head("Indice"); ?>
    <html>
    <body>
    	<div id="page">
    		<? navigation(); ?>
    		<div id="main">
    			<span class="crnrs-top"><span></span></span>
    		<?
    		if(!isset($_SESSION['upload_limit']) AND $main['upload_limit'] != 0 OR $_SESSION['upload_limit'] != 0 AND $main['upload_limit'] != 0 AND $_SESSION['upload_limit'] != date("d/m/Y")) {
    			$_SESSION['upload_limit']=0;
    			$_SESSION['time_upload_limit']=time();
    		}
    		$BannedUpload['query']="SELECT id FROM " . $main['table_prefix'] . "_ban WHERE IP='" . $_SERVER['REMOTE_ADDR'] . "' AND bannedfrom='UPLOAD'";
    		$BannedUpload['execute']=mysql_query($BannedUpload['query']) or error("Impossibile eseguire la query", mysql_error());
    			//Check if the upload script is in manteniance mode
    			if($main['general_manteniance']==1) {
    				message("Stato di manutenzione", $main['general_message']);
    				closeall();
    				exit;
    				//Check if the user is banned from uploading files
    			} else if ($main['upload_manteniance']==1) {
    				message("Stato di manutenzione", $main['upload_message']);
    				closeall();
    				exit;
    			} else if ($_SESSION['upload_limit'] == $main['upload_limit'] AND date("d/m/Y", $_SESSION['time_upload_limit']) == date("d/m/Y") AND $main['upload_limit'] != 0) {
    				message("Limite upload raggiunto", "Secondo le regole stabilite dall'amministratore, hai raggiunto il numero massimo di upload giornaliero.");
    				closeall();
    				exit;
    			} else if(mysql_num_rows($BannedUpload['execute']) != 0) {
    				message("Ip Bannato", "Il tuo IP risulta essere stato bannato dall'Amministratore.");
    				closeall(); 
    				exit;
    			} ?>
    				<h3 class="title">The Uploader 2.0 - Sezione Upload</h3>
    				<hr />
    				<?
    				if($main['show_in_index'] == 1){
    					echo'<div id="allowedext">
    						<fieldset><legend>Estensioni consentite</legend>
    							<p style="margin: 0px; text-align: center;">L\'Amministratore consente upload file con queste estensioni.</p>';
    							while($temp = each($main['allowed_ext'])) {
    								if($n!=0) {
    									echo ' | ';
    								}
    								echo $temp['value'];
    								++$n;
    							}
    						echo'</fieldset>
    					</div>';
    				}
    				?>
    				<form id="upload" method="post" enctype="multipart/form-data" action="ajax/upload.php">
    					<div id="slots">
    					<? while ($main['max_file_slots'] > 0) {
    							echo '<input type="file" class="input" id="input_' . $main['max_file_slots'] . '" name="upfile_' . $main['max_file_slots'] . '" size="90" />
    							';
    							--$main['max_file_slots'];
    						}
    					if($main['captcha_upload'] == 1) {
    						require_once("api/captchahandler.php");
    						@captcha_show("Upload");
    					}
    					?>
    					</div>
    					<p style="text-align: center;">
    						<input type="reset" id="reset" name="reset" value="Svuota campi" class="deletebutton" style="display: inline;" />
    					<?
    					if($main['captcha_upload'] == 0) {
    						echo '<input type="submit" id="startupload" name="startupload" value="Avvia Upload" class="startbutton" style="display: inline;" onclick="window.open(\'ajax/upload.php\',\'mywindow\',\'width=500,height=300,scrollbars=1\');this.form.target=\'mywindow\';this.form.submit()" />';
    					} else {
    						echo '<input type="button" id="startupload" name="startupload" value="Avvia Upload" class="startbutton" style="display: inline;" onclick="$(\'captcha\').setStyle(\'display\', \'block\');" />';
    					}
    					?>
    					</p>
    				</form>
    			<span class="crnrs-bottom"><span></span></span>
    		</div>
    		<? ?>
    	</div>
    </body>
    </html>
    <? 
    break;
    }
    ?>
    lo switch viene chiuso lo stesso, perchè la parentesi "}" corrisponde con quella "{" all'inizio del file ...

    ma non ho concluso niente, perchè se uno indirizza il browser qui

    salta sempre il login, come posso fare?
    Ultima modifica di gabriele97 : 06-03-2010 alle ore 17.15.06

  6. #6
    Guest

    Predefinito

    Ciao, sono Stefano, sviluppatore del progetto The Uploader. Vorrei solo dire che sarebbe opportuno spostare il seguente blocco di codice:

    Codice:
    <html>
    <a href="http://forum.it.altervista.org/gabriele97/gabriele97.php">
    <?
    echo "$nascosto";
    ?>
    </a></html>
    <?
    switch($_GET['option'])
    {
        default:
    	header("Location: http://www.gabriele97.altervista.org/altro/log-in/index.php?page=login");
    	break;
        case 'home':
    Al di sotto di:

    Codice:
    //Importing config file and start session
    session_start();
    if (file_exists("MainHandler.php")) {
    	@include("MainHandler.php");
    } else {
    	die('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><title>The Uploader 2.0 - Critical Error</title></head><body><h1 style="text-align: center;margin: 0px;padding: 3px;background-color: #F0DC82;border: 3px solid #FF0000;width: 80%;margin-top: 3px;display: block;margin-left: auto;margin-right: auto;background-image: url(\'images/coreerror.png\');background-repeat: no-repeat;background-position: left;">Impossibile trovare il gestore delle eccezioni!</h1></body></html>');
    }
    In linea di massima, per evitare casini di vario genere, sarebbe importante porre qualunque codice aggiuntivo al di sotto delle righe che ti ho indicato.

    Per il tuo problema, comunque, se io apro la pagina per la quale tu dici si bypasserebbe il login, io vengo rimandato immediatamente alla pagina di login.

  7. #7
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Smile

    Ciao,
    ora funziona, perchè ho risolto con il controllo dei cookie ...
    questo cookie viene creato, non appena il file pr_01.php rileva i dati nel mio database ...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •