• ModSenior

    Non sò cosa hai fatto, quindi non posso risponderti.
    Non hai nemmeno scritto il problema che viene riscontrato con IE 8, ma essendo php lato server per me la conclusione può solo quella.


  • User

    Scusami...allora con ie8 fa il refresh della pagina quando invio il form di registrazione senza però registrare nulla. Se io metto <form action="privata.php"> allora mi dice che la registrazione è andata a buon fine ma senza effettivamente registrare nulla sul server. E' molto lungo il codice lo posto lo stesso?


  • ModSenior

    Controllo che il problema del non fare nulla si presenti sia premendo invio sulla tastiera sia premendo il pulsante submit con il mouse.

    Il codice puoi postarlo comunque tra gli appositi bbcode.


  • User

    Sia con invio tastiera che click mouse il rislutato non cambia.

    [php]
    <?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['registra']))
    {

    // Dati Inviati dal modulo
    $username = (isset($_POST['username'])) ? trim($_POST['username']) : '';    // Metto nella variabile 'username' il dato inviato dal modulo, se non viene inviato dò di default ''
    $password = (isset($_POST['password'])) ? trim($_POST['password']) : '';    // Metto nella variabile 'password' il dato inviato dal modulo, se non viene inviato dò di default ''
    $password2 = (isset($_POST['password2'])) ? trim($_POST['password2']) : '';    // Metto nella variabile 'password2' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';    // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    $name = (isset($_POST['name'])) ? trim($_POST['name']) : '';    // Metto nella variabile 'name' il dato inviato dal modulo, se non viene inviato dò di default ''
    $surname = (isset($_POST['surname'])) ? trim($_POST['surname']) : '';    // Metto nella variabile 'surname' il dato inviato dal modulo, se non viene inviato dò di default ''
    $azienda = (isset($_POST['azienda'])) ? trim($_POST['azienda']) : '';    // Metto nella variabile 'azienda' il dato inviato dal modulo, se non viene inviato dò di default ''
    $occupazione = (isset($_POST['occupazione'])) ? trim($_POST['occupazione']) : '';    // Metto nella variabile 'occupazione' il dato inviato dal modulo, se non viene inviato dò di default ''
    $indirizzo = (isset($_POST['indirizzo'])) ? trim($_POST['indirizzo']) : '';    // Metto nella variabile 'indirizzo' il dato inviato dal modulo, se non viene inviato dò di default ''
    $citta = (isset($_POST['citta'])) ? trim($_POST['citta']) : '';    // Metto nella variabile 'citta' il dato inviato dal modulo, se non viene inviato dò di default ''
    $comune = (isset($_POST['comune'])) ? trim($_POST['comune']) : '';    // Metto nella variabile 'comune' il dato inviato dal modulo, se non viene inviato dò di default ''
    $provincia = (isset($_POST['provincia'])) ? trim($_POST['provincia']) : '';    // Metto nella variabile 'provincia' il dato inviato dal modulo, se non viene inviato dò di default ''
    $cap = (isset($_POST['cap'])) ? trim($_POST['cap']) : '';    // Metto nella variabile 'cap' il dato inviato dal modulo, se non viene inviato dò di default ''
    $telefono = (isset($_POST['telefono'])) ? trim($_POST['telefono']) : '';    // Metto nella variabile 'telefono' il dato inviato dal modulo, se non viene inviato dò di default ''
    $fax = (isset($_POST['fax'])) ? trim($_POST['fax']) : '';    // Metto nella variabile 'fax' il dato inviato dal modulo, se non viene inviato dò di default ''
        
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
        $username = addslashes($username);
        $password = addslashes($password);
        $mail = addslashes($mail);
        $azienda = addslashes($azienda);
        $occupazione = addslashes($occupazione);
        $indirizzo = addslashes($indirizzo);
        $citta = addslashes($citta);
        $comune = addslashes($comune);
        $provincia = addslashes($provincia);
        $cap = addslashes($cap);
        $telefono = addslashes($telefono);
        $fax = addslashes($fax);
    
    }
    
    // Controllo il Nome Utente
    if(strlen($username) < 4 || strlen($username) > 28)
        die('Nome Utente troppo corto, o troppo lungo <a href="javascript:history.go(-1); return false">Modifica i Dati inseriti</a>');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT username FROM utenti WHERE username = '$username' LIMIT 1")) == 1)
        die('Nome Utente non disponibile <a href="javascript:history.go(-1); return false">Modifica i Dati inseriti</a>');
    // Controllo la Password
    elseif(strlen($password) < 4 || strlen($password) > 28)
        die('La password deve avere una lunghezza compresa tra i 4 e i 28 caratteri');
    elseif($password != $password2)
        die('Le due password non corrispondono');
    // Controllo l'E-mail
    elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail))
        die('Email non valida');
        // Controllo l'indirizzo email non sia già registrato
        elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
            die('Questo indirizzo email risulta gi&agrave; registrato da un altro utente');
    // Controllo il campo Nome
    elseif(strlen($name) < 3 || strlen($name) > 28)
        die('Nome non valido');
    // Controllo il campo Cognome
    elseif(strlen($surname) < 3 || strlen($surname) > 28)
        die('Cognome non valido');
    // Controllo il campo Azienda
    elseif(strlen($azienda) < 0 || strlen($azienda) > 200)
        die('Azienda non valida');
    // Controllo il campo Occupazione
    elseif(strlen($occupazione) < 0 || strlen($occupazione) > 200)
        die('Occupazione non valida');
    // Controllo il campo Indirizzo
    elseif(strlen($indirizzo) < 3 || strlen($indirizzo) > 200)
        die('Indirizzo non valido');        
    // Controllo il campo Città
    elseif(strlen($citta) < 3 || strlen($citta) > 200)
        die('Residenza non valida');
    // Controllo il campo Comune
    elseif(strlen($comune) < 2 || strlen($comune) > 200)
        die('Comune non valido');
    // Controllo il campo Provincia
    elseif(strlen($provincia) != 2)
        die('Provincia non valida');
    // Controllo il campo Cap
    elseif(strlen($cap) != 5)
        die('Cap non valido');
    // Controllo il campo Telefono
    elseif(strlen($telefono) < 2 || strlen($telefono) > 200)
        die('Campo Telefono non valido');
    // Controllo il campo Fax
    elseif(strlen($fax)  < 0 || strlen($comune) > 200)
        die('Campo Fax non valido');
    
    // Registrazione dell'utente nel database
    else
    {
        
        // Crypt della password per garantire una miglior sicurezza
        $password = md5($password);
        
        
        // Genero una stringa casuale di Attivazione
        $attivazione = '';
        for($x=1; $x<=32; $x++)
        $attivazione.=rand(0,9);
        $attivazione = md5($attivazione);
        $message = 'Per attivare il Suo account deve visitare il seguente link:<br><a href="http: // www . associazioneconsumatorieuropei . eu/ auth/attivazione .php?code='.$attivazione.'">Attiva account</a>';
        // Header dell'email, per mandarla in formato html
        $headers = "From: Associazione Consumatori Europei <[email protected]>\r\n";
        $headers .= "Reply-To: email\r\n";
        $headers .= "Return-Path: email\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
        // Invio L'email
        mail($mail, 'Associazione Consumatori Europei - Registrazione web', $message, $headers);
        
        // Query per l'inserimento dell'utente nel database
        $strSQL = "INSERT INTO utenti (username,password,mail,name,surname,azienda,occupazione,indirizzo,citta,comune,provincia,cap,telefono,fax,attivazione)";
        $strSQL .= "VALUES('$username', '$password', '$mail', '$name', '$surname', '$azienda', '$occupazione', '$indirizzo', '$citta', '$comune', '$provincia', '$cap', '$telefono', '$fax', '$attivazione')";
        mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
        
    
        // Reindirizzo l'utente ad una pagina di conferma della registrazione
        header('Location: registrato . php');
        exit;
    }
    

    }
    /INIZIO USERNAME VALIDATION/

    //get the username
    $username = mysql_real_escape_string($_POST['username']);

    //mysql query to select field username if it's equal to the username that we check '
    $result = mysql_query('select username from utenti where username = "'. $username .'"');

    //if number of rows fields is bigger them 0 that means it's NOT available '
    if(mysql_num_rows($result)>0){
    //and we send 0 to the ajax request
    echo 0;
    }else{
    //else if it's not bigger then 0, then it's available '
    //and we send 1 to the ajax request
    echo 1;
    }
    ?>
    [/php]```

    <form action="privata.php" method="post">
    <div align="center">
    <table width="100%">
    <tr>
    <td><font color="#FF0000">Dati per il Log-in</font> <br>
    <table border="0" width="100%">
    <tr>
    <td colspan="2">
    <p class="pform">
    <strong>Username:</strong><br />
    <div id="msgbox" style="display:none; color:#FF3300;"></div>
    </p>
    </td>
    <td colspan="2"><input name="username" class="inputform" type="text" id="username" onFocus="if(this.value=='Username') this.value='Username';"/>
    <script type="text/javascript">
    var campo = new LiveValidation('username', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Length, { minimum: 4, tooShortMessage: "Il campo deve contenere minimo 4 caratteri" } );
    campo.add(Validate.Length, { maximum: 28, tooLongMessage: "Il campo può contenere massimo 28 caratteri" } );
    </script>

                                </td>
                            </tr>
                            <tr>
                                <td colspan="2" ><p class="pform"><strong>E-mail:</strong></p></td>
                                <td colspan="2" ><input name="mail" class="inputform" type="mail" id="mail" value="" onFocus="if(this.value=='Email') this.value='Email';" /> <script type="text/javascript">
    

    var campo = new LiveValidation('mail', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Email, { failureMessage: "Devi inserire un indirizzo e-mail valido!" } );
    campo.add(Validate.Length, { minimum: 4, tooShortMessage: "Il campo deve contenere minimo 4 caratteri" } );
    </script>
    </td>
    </tr>
    <tr>
    <td colspan="4">
    <?php if ($message) : ?>
    <p id="message"><?=$message?></p>
    <?php endif ?>
    </td>
    </tr>
    <tr>
    <td width="15%"><p class="pform"><strong>Password:</strong></p></td>
    <td width="35%"><input name="password" class="inputform" type="password" id="password" value="" onFocus="if(this.value=='Password') this.value='';" /> <script type="text/javascript">
    var campo = new LiveValidation('password', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Length, { minimum: 4, tooShortMessage: "Il campo deve contenere minimo 4 caratteri" } );
    campo.add(Validate.Length, { maximum: 28, tooLongMessage: "Il campo può contenere massimo 28 caratteri" } );

    </script>
    </td>
    <td width="15%"><p class="pform"><strong>Conferma:</strong></p></td>
    <td width="35%"><input name="password2" class="inputform" type="password" id="password2" value="" onFocus="if(this.value=='Password2') this.value='';" /> <script type="text/javascript">
    var campo = new LiveValidation('password2', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Confirmation, { match: 'password', failureMessage: "La password non corrisponde a quella inserita!" } );
    </script>
    </td>
    </tr>
    <tr>
    <td colspan="4"><br>
    <font color="#FF0000">Dati Personali</font> <br> </td>
    </tr>
    <tr>
    <tr>
    <td width="15%"><p class="pform"><strong>Nome:</strong></p></td>
    <td width="25%"><input name="name" class="inputform" type="text" id="name" value="" onFocus="if(this.value=='Nome') this.value='Nome';" /> <script type="text/javascript">
    var campo = new LiveValidation('name', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Length, { minimum: 3, tooShortMessage: "Il campo deve contenere minimo 3 caratteri" } );
    campo.add(Validate.Length, { maximum: 28, tooLongMessage: "Il campo può contenere massimo 28 caratteri" } );

    </script>
    </td>
    <td width="15%"><p class="pform"><strong>Cognome:</strong></p></td>
    <td width="35%"><input name="surname" class="inputform" type="text" id="surname" value="" onFocus="if(this.value=='Cognome') this.value='Cognome';" /> <script type="text/javascript">
    var campo = new LiveValidation('surname', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Length, { minimum: 3, tooShortMessage: "Il campo deve contenere minimo 3 caratteri" } );
    campo.add(Validate.Length, { maximum: 28, tooLongMessage: "Il campo può contenere massimo 28 caratteri" } );

    </script>
    </td>
    </tr>
    <tr>
    <td><p class="pform">Azienda:</p></td>
    <td colspan="3"><input name="azienda" class="inputform" type="text" id="azienda" value="" onFocus="if(this.value=='Nome Azienda') this.value='Nome Azienda';"/> <script type="text/javascript">
    var campo = new LiveValidation('surname', { validMessage: "OK!" });
    campo.add(Validate.Length, { maximum: 200, tooLongMessage: "Il campo può contenere massimo 200 caratteri" } );
    </script>
    </td>
    </tr>
    <tr>
    <td><p class="pform">Occupazione:</p></td>
    <td colspan="3"><input name="occupazione" class="longinputform" type="text" id="occupazione" value="" onFocus="if(this.value=='Occupazione') this.value='Occupazione';" size="65" /> <script type="text/javascript">
    var campo = new LiveValidation('surname', { validMessage: "OK!" });
    campo.add(Validate.Length, { maximum: 200, tooLongMessage: "Il campo può contenere massimo 200 caratteri" } );
    </script></td>
    </tr>
    <tr>
    <td colspan="4"><br>
    <font color="#FF0000">Residenza</font> <br> </td>
    </tr>
    <tr>
    <td width="93"><p class="pform"><strong>Indirizzo:</strong></p></td>
    <td colspan="3"><input name="indirizzo" class="longinputform" type="text" id="indirizzo" value="" onFocus="if(this.value=='Indirizzo') this.value='Indirizzo';" size="65" /> <script type="text/javascript">
    var campo = new LiveValidation('indirizzo', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Length, { minimum: 3, tooShortMessage: "Il campo deve contenere minimo 3 caratteri" } );
    campo.add(Validate.Length, { maximum: 200, tooLongMessage: "Il campo può contenere massimo 200 caratteri" } );
    </script>
    </td>
    </tr>
    <tr>
    <td width="93"><p class="pform"><strong>Città:</strong></p></td>
    <td width="120"><input name="citta" class="inputform" type="text" id="citta" value="" onFocus="if(this.value=='Città') this.value='';" /> <script type="text/javascript">
    var campo = new LiveValidation('citta', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Length, { minimum: 3, tooShortMessage: "Il campo deve contenere minimo 3 caratteri" } );
    campo.add(Validate.Length, { maximum: 200, tooLongMessage: "Il campo può contenere massimo 200 caratteri" } );
    </script>
    </td>
    <td width="83"><p class="pform"><strong>Comune:</strong></p></td>
    <td width="120"><input name="comune" class="inputform" type="text" id="comune" value="" onFocus="if(this.value=='Comune') this.value='';" /> <script type="text/javascript">
    var campo = new LiveValidation('comune', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Length, { minimum: 2, tooShortMessage: "Il campo deve contenere minimo 2 caratteri" } );
    campo.add(Validate.Length, { maximum: 200, tooLongMessage: "Il campo può contenere massimo 200 caratteri" } );
    </script>
    </td>
    </tr>
    <tr>
    <td width="93"><p class="pform"> <strong>Provincia:</strong><br>
    <em>[ sigla ]</em> </p></td>
    <td width="120"><input name="provincia" type="text" id="provincia" value="" onFocus="if(this.value=='Provincia') this.value='';" size="3"/> <script type="text/javascript">
    var campo = new LiveValidation('provincia', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Length, { is: 2, wrongLengthMessage: "Il campo deve contenere 2 caratteri" } );
    </script>

    </td>
    <td width="83"><p class="pform"><strong>Cap:</strong></p></td>
    <td width="120"><input name="cap" class="inputform" type="text" id="cap" value="" onFocus="if(this.value=='Cap') this.value='Cap';" size="10"/> <script type="text/javascript">
    var campo = new LiveValidation('cap', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Numericality, { notANumberMessage: "Puoi inserire solo numeri!" });
    campo.add(Validate.Length, { maximum: 5, tooLongMessage: "Il campo può contenere massimo 5 caratteri" } );
    </script>
    </td>
    </tr>
    <tr>
    <td colspan="4"><br>
    <font color="#FF0000">Riferimenti</font> <br> </td>
    </tr>
    <tr>
    <td width="93"><p class="pform"><strong>Tel. / Cell.:</strong></p></td>
    <td width="120"><input name="telefono" class="inputform" type="text" id="telefono" value="" onFocus="if(this.value=='Telefono') this.value='Telefono';" /> <script type="text/javascript">
    var campo = new LiveValidation('telefono', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Numericality, { notANumberMessage: "Puoi inserire solo numeri!" });
    campo.add(Validate.Length, { maximum: 20, tooLongMessage: "Il campo può contenere massimo 20 caratteri" } );
    </script></td>
    <td width="83"><p class="pform">Fax.:</p></td>
    <td width="120"><input name="fax" class="inputform" type="text" id="fax" value="" onFocus="if(this.value=='Fax') this.value='Fax';" /> <script type="text/javascript">
    var campo = new LiveValidation('fax', { validMessage: "OK!" });
    campo.add(Validate.Presence, { failureMessage: "Il campo deve essere compilato!" });
    campo.add(Validate.Numericality, { notANumberMessage: "Puoi inserire solo numeri!" });
    campo.add(Validate.Length, { maximum: 20, tooLongMessage: "Il campo può contenere massimo 20 caratteri" } );
    </script></td>
    </tr>
    <tr>
    <td colspan="4"><p align="center"><font color="#006699"><strong><em><u>I dati in grassetto sono obbligatori.</u></em></strong></font></p></td>
    </tr>
    <tr>
    <td colspan="4" align="right"><input name="registra" type="image" src="../images/contact-send.gif" value="Registrati" /></td>
    </tr>
    </table></td>
    </tr>
    </table>
    </div>
    </form>


  • ModSenior

    La prima pagina che hai postato suppongo sia privata.php.
    Prova a mettere:
    [php]
    if(isset($_POST['username']))
    [/php]
    al posto di:
    [php]
    if(isset($_POST['registra']))
    [/php]


  • User

    Ok perfetto adesso funziona però prima ho dovuto anche cancellare l'action del form deve rimanere in bianco il campo quindi <form action="" method="post"> e funziona grazie mille ancora!


  • User

    Salve,
    Mi capita una cosa un po strana, io al momento del login imposto anche una seconda variabile di sessione, cioè $_SESSION['admin'], questa serve per stabilire i privilegi di certi utenti.

    Il problema arriva quando visualizzo una pagina, cioè la lista degli admin.
    Andando su questa pagina improvvisamente $_SESSION['admin'] da valore 1 assume valore 0, come mai? :S
    Ecco il codice della pagina:

    lista_admin.php
    [php]<?php
    require('config.php');
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Lista Admin</title>
    <link rel="stylesheet" href="/theme/style.css" type="text/css">
    </head>

    <body>

    <?php
    $admin = mysql_query("SELECT id, user, data_ins FROM utenti
    WHERE privilegi = '1' ORDER BY id") OR die(mysql_error());
    ?>
    <table><tr><td>
    <?php
    require('menu.php');
    ?>
    </td><td>
    <table border="1"><tr><th>#</th><th>Nome</th><th>Data</th></tr>
    <?php
    $i=1;
    while($lista_admin = mysql_fetch_array($admin))
    {
    echo '<tr>
    <td>'.$i.'</td>
    <td> <a href="/profile.php?id='.$lista_admin['id'].'">'.$lista_admin['user'].'</a> </td>
    <td> '.date('d M Y - G:i:s', $lista_admin['data_ins']).' </td>
    </tr>';
    $i++;
    }
    ?>
    </table>
    <?php
    require('footer.php');
    ?>
    </body>

    </html>
    [/php]

    In footer.php viene il link al Pannello Amministratore se $_SESSION['admin'] è uguale a 1.
    Ecco il codice:
    [php]<br /><?php if($_SESSION['admin'] == 1) { echo'<div align="center"><a href=" / privata.php?page=admin"><strong>Pannello Amministratore</strong></a></div>'; } ?>[/php]

    Potete aiutarmi?


  • ModSenior

    Ciao RCayla,

    il session_start è nel config.php?
    Gli altri valori in $_SESSION rimangono o si perdono pure quelli?


  • User

    Si e si 😛
    Nel senso che c'è session_start() e le altre variabili di sessione restano uguali, per testare ho fatto un echo delle due variabili e dopo essere andato nella lista admin la variabile $_SESSION['admin'] da 1 diventa "Resource id #7" :S


  • ModSenior

    Resource id #7 dovrebbe essere il valore restituito da mysql_query.
    E' possibile che stai usando $admin invece di $_SESSION['admin']?


  • User

    Scusa non ho capito, dove sto usando $admin invece di $_SESSION['admin']?


  • ModSenior

    Resource id #7 è un valore restituito dalla funzione mysql_query.
    Quindi o stampi la variabile sbagliata oppure la sovrascrivi.


  • User

    Allora, subito dopo il login in tutte le pagine $_SESSION['admin'] risulta 1, se vado in lista_admin risulta Resource id # 7 e dopo essere stato in questa pagine, in tutte le altre risulta 0, quindi è come se il valore cambiasse, eppure nel codice di lista_admin.php la variabile $_SESSION['admin'] non viene mai nominata..


  • ModSenior

    Non sò che dirti, l'unica cosa che mi sembra possibile è quella.


  • User

    Risolto, ho cambiato nome alla variabile che eseguiva la query e alla variabile del mysql_fetch_array, strano :mmm:


  • User Newbie

    Ciao a tutti, volevo provare a creare un login di un sito web, ma essendo un autodidatta e non so come fare qualcuno potrebbe aiutarmi? Grazie 1000.


  • ModSenior

    Ciao giov75,

    nel tutorial è spiegato come realizzare registrazione e login.


  • User Newbie

    Ciao Thedarkita,
    scusami ancora ma dove lo trovo questo tutorial? scusami ancora.


  • ModSenior

    Lo trovi alla pagina 1 di questa discussione.


  • User Newbie

    Scusami una scaricato il tutorial i file dove li devo posizionare?