• ModSenior

    Se devi far accedere solo chi ha come permessi admin:
    [php]
    if(!isset($_SESSION['permessi']) || $_SESSION['permessi'] != 'admin')
    {
    header('Location: index.php');
    exit;
    }
    [/php]


  • User Newbie

    Grandioso! Grazie 1000.


  • User Newbie

    Ciao Dark prima di tutto volevo dirti che sei grandioso.Grazie per averci messo a disposizione questo script che è davvero molto utile.Ti faccio i miei migliori complimenti
    Volevo solamente chiederti,ho seguito tutto come fare per aggiungere l'utente admin ma come imposto username e password dell' admin?
    E che devo aggiungere nella tabella sql?

    PS:Si può fare che l'admin in una pagina aggiunge altri admin o li elimina?


  • ModSenior

    Ciao seriosman,

    grazie per i complimenti. 🙂
    Puoi semplicemente registrare un nuovo account ed in seguito cambiare manualmente dal database il campo relativo all'utente in questione in modo tale da impostarlo admin, puoi anche automattizarti questa operazione creandoti una pagina apposita con accesso esclusivo agli admin per creare degli account admin direttamente o per permetterti la modifica di un utente già esistente.


  • User Newbie

    Scusami TheDarkIta mi puoi dare il codice del database nuovo con il nuovo valore "permessi" o quello che ci vuole?
    Un'altra cosa io non ho capito,vorrei fare in modo che quando accede l'account "admin" esce una pagina diversa da quando si logga un utente normale.Come faccio?


  • ModSenior

    Il campo puoi aggiungerlo alla tabella del tuo database con phpmyadmin.
    Per fare in redirect ad una pagina piuttosto che un altra basta un semplice controllo in fase di login.


  • User Newbie

    Si ma il problema è che non so come fare.


  • User Newbie

    Ciao Thedarkita, Sei ancora dei nostri? Ci aiuterai ancora? Inutile ringraziarti per il lavoro eccellente, sono riuscito a costruire davvero un'area privata funzionante partendo da zero! Ora però mi restano altri dubbi e altri problemini. Come creo una pagina di modifica del profilo? In qualche post precedente hai già dato qualche dritta, ma non sono ancora riuscito a farla funzionare. Ti posto il codice che ho usato:

    pagina di modifica:
    [PHP]<?php
    // Includo la connessione al database
    require('config.php');

    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login']))
    {
    header('Location: login.php');
    exit;
    }

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

    // Dati Inviati dal modulo
    $nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : '';    // Metto nella variabile 'name' il dato inviato dal modulo, se non viene inviato dò di default ''
    $cognome = (isset($_POST['cognome'])) ? trim($_POST['cognome']) : '';    // Metto nella variabile 'surname' il dato inviato dal modulo, se non viene inviato dò di default ''
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'username' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'password' 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 ''
    
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    	$nome = addslashes($nome);
    	$cognome = addslashes($cognome);
        $user = addslashes($user);
        $pass = addslashes($pass);
        $mail = addslashes($mail);
    

    }

    $setquery = '';
    if($attualenome != $nome && $nome != '') 
        $setquery = ((isset($setquery)) ? $setquery.",nome = '$nome'" : "nomeattuale = '$nome'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    if($attualeuser != $cognome && $cognome != '') 
        $setquery = ((isset($setquery)) ? $setquery.",cognome = '$cognome'" : "cognomeattuale = '$cognome'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    if($attualeuser != $user && $user != '') 
        $setquery = ((isset($setquery)) ? $setquery.",campouser = '$user'" : "campouser = '$user'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    if($attualepassword != $password)
        $setquery = ((isset($setquery)) ? $setquery.",campopassword = '$password'" : "campopassword = '$password'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    if($attualemail != $mail)
        $setquery = ((isset($setquery)) ? $setquery.",campomail = '$mail'" : "campomail = '$mail'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    if($attualeazienda != $azienda)
        $setquery = ((isset($setquery)) ? $setquery.",campoazienda = '$azienda'" : "campoazienda = '$azienda'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    if($attualeoccupazione != $occupazione)
        $setquery = ((isset($setquery)) ? $setquery.",campooccupazione = '$occupazione'" : "campooccupazione = '$occupazione'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)        
    if($attualeindirizzo != $indirizzo)
        $setquery = ((isset($setquery)) ? $setquery.",campoindirizzo = '$indirizzo'" : "campoindirizzo = '$indirizzo'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)        
    if($attualecitta != $citta)
        $setquery = ((isset($setquery)) ? $setquery.",campocitta = '$citta'" : "campocitta = '$citta'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)        
    if($attualecomune != $comune)
        $setquery = ((isset($setquery)) ? $setquery.",campocomune = '$comune'" : "campocomune = '$comune'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    if($attualeprovincia != $provincia)
        $setquery = ((isset($setquery)) ? $setquery.",campoprovincia = '$provincia'" : "campoprovincia = '$provincia'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    if($attualecap != $cap)
        $setquery = ((isset($setquery)) ? $setquery.",campocap = '$cap'" : "campocap = '$cap'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)        
    if($attualetelefono != $telefono)
        $setquery = ((isset($setquery)) ? $setquery.",campotelefono = '$telefono'" : "campotelefono = '$telefono'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    if($attualefax != $fax)
        $setquery = ((isset($setquery)) ? $setquery.",campofax = '$fax'" : "campofax = '$fax'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)        
    
    mysql_query("UPDATE utenti SET $setquery WHERE id = '$id'");
    

    }
    ?>[/PHP]

    form di modifica:
    [HTML]<form action="" method="post">
    Nome<br />
    <input name="nome" type="text" id="nome" value="<?php echo $user['nome'];?>" onFocus="if(this.value=='nome') this.value='nome';" /><br />
    <br />
    Cognome<br />
    <input name="cognome" type="text" id="cognome" value="<?php echo $user['cognome'];?>" onFocus="if(this.value=='cognome') this.value='cognome';" /><br />
    <br />
    Username<br />
    <input name="user" type="text" id="user" value="<?php echo $USER["user"];?>" onfocus="if(this.value=='user') this.value='user';" /><br />
    <br />
    Password<br />
    <input name="pass" type="password" id="pass" value="<?php echo $USER["pass"];?>" onfocus="if(this.value=='Pass') this.value='pass';" /><br />
    <br />
    Conferma password<br />
    <input name="conferma" type="password" id="conferma" value="<?php echo $USER["conferma"];?>" onfocus="if(this.value=='conferma') this.value='conferma';" /><br />
    <br />
    Indirizzo email<br />
    <input name="mail" type="text" id="mail" value="<?php echo $USER["mail"];?>" onfocus="if(this.value=='mail') this.value='mail';" /><br />
    <br />
    <input name="modifica" type="submit" value="modifica" /><br />
    </form>[/HTML]


  • ModSenior

    Prova cosi:
    [php]

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

    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login']))
    {
    header('Location: login.php');
    exit;
    }

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

    // Dati Inviati dal modulo 
    $nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : '';    // Metto nella variabile 'name' il dato inviato dal modulo, se non viene inviato dò di default '' 
    $cognome = (isset($_POST['cognome'])) ? trim($_POST['cognome']) : '';    // Metto nella variabile 'surname' il dato inviato dal modulo, se non viene inviato dò di default '' 
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'username' il dato inviato dal modulo, se non viene inviato dò di default '' 
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'password' 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 '' 
     
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza 
    if (!get_magic_quotes_gpc()) { 
        $nome = addslashes($nome); 
        $cognome = addslashes($cognome); 
        $user = addslashes($user); 
        $pass = addslashes($pass); 
        $mail = addslashes($mail); 
    

    }

    if($attualenome != $nome && $nome != '')  
        $setquery = ((isset($setquery)) ? $setquery.",nome = '$nome'" : "nomeattuale = '$nome'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($attualeuser != $cognome && $cognome != '')  
        $setquery = ((isset($setquery)) ? $setquery.",cognome = '$cognome'" : "cognomeattuale = '$cognome'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($attualeuser != $user && $user != '')  
        $setquery = ((isset($setquery)) ? $setquery.",campouser = '$user'" : "campouser = '$user'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($attualepassword != $password) 
        $setquery = ((isset($setquery)) ? $setquery.",campopassword = '$password'" : "campopassword = '$password'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($attualemail != $mail) 
        $setquery = ((isset($setquery)) ? $setquery.",campomail = '$mail'" : "campomail = '$mail'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($attualeazienda != $azienda) 
        $setquery = ((isset($setquery)) ? $setquery.",campoazienda = '$azienda'" : "campoazienda = '$azienda'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($attualeoccupazione != $occupazione) 
        $setquery = ((isset($setquery)) ? $setquery.",campooccupazione = '$occupazione'" : "campooccupazione = '$occupazione'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)         
    if($attualeindirizzo != $indirizzo) 
        $setquery = ((isset($setquery)) ? $setquery.",campoindirizzo = '$indirizzo'" : "campoindirizzo = '$indirizzo'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)         
    if($attualecitta != $citta) 
        $setquery = ((isset($setquery)) ? $setquery.",campocitta = '$citta'" : "campocitta = '$citta'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)         
    if($attualecomune != $comune) 
        $setquery = ((isset($setquery)) ? $setquery.",campocomune = '$comune'" : "campocomune = '$comune'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($attualeprovincia != $provincia) 
        $setquery = ((isset($setquery)) ? $setquery.",campoprovincia = '$provincia'" : "campoprovincia = '$provincia'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($attualecap != $cap) 
        $setquery = ((isset($setquery)) ? $setquery.",campocap = '$cap'" : "campocap = '$cap'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)         
    if($attualetelefono != $telefono) 
        $setquery = ((isset($setquery)) ? $setquery.",campotelefono = '$telefono'" : "campotelefono = '$telefono'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($attualefax != $fax) 
        $setquery = ((isset($setquery)) ? $setquery.",campofax = '$fax'" : "campofax = '$fax'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)         
    

    if(isset($setquery))
    mysql_query("UPDATE utenti SET $setquery WHERE id = '$id'");
    }
    ?>
    [/php]


  • User Newbie

    Grazie per la dritta, ma ancora non va... non capisco proprio da cosa possa dipendere! Potrebbe dipendere dalla sessione con cui mi loggo? Oppure il form che utilizzo è sbagliato? Scusa se ti stresso! Ma è l'unica pagina che proprio non sono riuscito a far funzionare da solo!

    Mega dubbio, ma è normale che dentro i campi del form non mi compaia niente? In teoria per come li ho costruiti dovrebbero vedersi i valori attualmente inseriti nel database, o sbaglio?

    P.


  • ModSenior

    Aggiungi dopo la query:
    [php]
    echo "UPDATE utenti SET $setquery WHERE id = '$id'";
    [/php]

    Ed incolla qua cosa mostra.


  • User Newbie

    Stampando la query mi vienie fuori:
    UPDATE utenti SET WHERE id = ''
    Direi che non mi riconosce l'id, quindi come temevo potrebbe essere "un'errore" di login?

    Se eseguo la query in PHP my admin questo è il risultato.
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql_query("UPDATE utenti SET $setquery WHERE id = '$id' ")' at line 1

    Scusa ma sono anche io, ovviamente, alle prime armi con il PHP... e non è così semplice!


  • ModSenior

    Infatti $id non c'è da nessuna prte nel tuo script, $setquery suppongo sia vuota perchè avevi lasciato i campi vuoti durante la prova, fai questa modifica e dovrebbe funzionare:
    Al posto di:
    [php]
    mysql_query("UPDATE utenti SET $setquery WHERE id = '$id'");
    [/php]
    Metti:
    [php]
    mysql_query("UPDATE utenti SET $setquery WHERE id = {$_SESSION['login']}");
    [/php]


  • User Newbie

    Grazie Thedarkita... ma purtroppo non funziona ancora 😢. Non so davvero più che pesci prendere...

    Quale altro potrebbe essere l'errore?? Nel form? Secondo me non invia i dati... però boh?:?

    Help please!


  • ModSenior

    Ma a $attualenome gli hai assegnato il valore?


  • User Newbie

    hem... forse no... che pirla... cosa faccio, gli assegno un valore del tipo:

    [PHP]$attualenome = (isset($_POST['nome'])) ? trim($_POST['nome']) : '';[/PHP]

    Oppure non c'entra niente? che valore devo dargli? che richiama al form di pubblicazione?

    E' giusto che esistano due variabili diverse $nome e $attualenome? Una riferita ai dati nel DB e una riferita ai dati inviati dal modulo?


  • ModSenior

    Dipende cosa devi fare... se devi fare un confronto con il nome attuale devi fare una query per recuperarlo.


  • User Newbie

    Ok, grazie ho afferrato il concetto... Però per far funzionare a livello basilare la mia pagina di modifica profilo non è necessario fare un confronto vero? Ciò detto, come devo definire la variabile nomeattuale? E soprattutto è necessaria? Scusami se ti stresso, ma dopo aver fatto tutto senza bisogno d'aiuto ora sono entrato nel pallone... Credo mi sfugga ancora qualche concetto teorico... Però dovresti essere orgolioso, grazie al tuo tutorial ho fatto grandi cose sul mio sito :tongueout:!


  • ModSenior

    Non è necessaria.


  • User Newbie

    Ho riprovato il tutto... Temo ci sia ancora qualcosa che non va, perché non solo non mi cambia i dati nel DB, ma per altro se clicco su "modifica" mi ricarica semplicemente la stessa pagina... Possibile che io sia così tonto? Avresti voglia di provare a ricontrollare tutto il mio codice, senza fretta e correggermelo? Grazie in anticipo
    P.

    PS: Altro problemino, aprendo la pagina mi compila in automatico il campo "user" (come da impostazione) mentre tutti gli altri campi sono vuoti... potrebbe essere un problema di login? Magari sbaglio a impostare la sessione di login?

    Codice PHP all'inizio della pagina di modifica:
    [PHP]<?php
    // Includo la connessione al database
    require('config.php');

    // Se non è stata definita la variabile manda l'utente alla homepage
    if(!isset($_SESSION['login']))
    {
    header('Location: login.php');
    exit;
    }

    // Se il modulo viene inviato...
    if(isset($_POST['modifica']))
    {
    // Dati Inviati dal modulo
    $nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : ''; // Metto nella variabile 'nome' il dato inviato dal modulo, se non viene inviato dò di default ''
    $cognome = (isset($_POST['cognome'])) ? trim($_POST['cognome']) : ''; // Metto nella variabile 'surname' il dato inviato dal modulo, se non viene inviato dò di default ''
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'username' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'password' 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 ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza 
    if (!get_magic_quotes_gpc()) { 
        $nome = addslashes($nome);
        $cognome = addslashes($cognome);
        $user = addslashes($user);
        $pass = addslashes($pass);
        $mail = addslashes($mail);
    

    }

    if($nome != $nome && $nome != '')  
        $setquery = ((isset($setquery)) ? $setquery.",nome = '$nome'" : "nomeattuale = '$nome'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($cognome != $cognome && $cognome != '')  
        $setquery = ((isset($setquery)) ? $setquery.",cognome = '$cognome'" : "cognomeattuale = '$cognome'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($user != $user && $user != '')  
        $setquery = ((isset($setquery)) ? $setquery.",campouser = '$user'" : "campouser = '$user'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($pass != $pass) 
        $setquery = ((isset($setquery)) ? $setquery.",campopass = '$pass'" : "campopass = '$pass'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE) 
    if($conferma != $pass) 
        $setquery = ((isset($setquery)) ? $setquery.",campoconferma = '$conferma'" : "campoconferma = '$conferma'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    if($mail != $mail) 
       $setquery = ((isset($setquery)) ? $setquery.",campomail = '$mail'" : "campomail = '$mail'");// IF in forma contratta, sintassi: ((CONDIZIONE) ? RETURN_TRUE : RETURN_FALSE)
    

    if(isset($setquery))
    mysql_query("UPDATE utenti SET $setquery WHERE id = {$_SESSION['login']}");
    }
    ?>[/PHP]

    Form da compilare:
    [HTML]<form action="" method="post">
    Nome<br />
    <input name="nome" type="text" id="nome" value="<?php echo $_SESSION["nome"];?>" onfocus="if(this.value=='nome') this.value='nome';" /><br />
    <br />
    Cognome<br />
    <input name="cognome" type="text" id="cognome" value="<?php echo $_SESSION["cognome"];?>" onfocus="if(this.value=='cognome') this.value='cognome';" /><br />
    <br />
    Username<br />
    <input name="user" type="text" id="user" value="<?php echo $_SESSION["user"];?>" onfocus="if(this.value=='user') this.value='user';" /><br />
    <br />
    Password<br />
    <input name="pass" type="pass" id="pass" value="<?php echo $_SESSION["pass"];?>" onfocus="if(this.value=='pass') this.value='pass';" /><br />
    <br />
    Conferma password<br />
    <input name="conferma" type="pass" id="conferma" value="<?php echo $_SESSION["conferma"];?>" onfocus="if(this.value=='conferma') this.value='conferma';" /><br />
    <br />
    Indirizzo email<br />
    <input name="mail" type="text" id="mail" value="<?php echo $_SESSION["mail"];?>" onfocus="if(this.value=='mail') this.value='mail';" /><br />
    <br />
    <input name="modifica" type="submit" value="modifica" /><br />
    <br />

    			</form>[/HTML]