Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    controllare se un utente è admin

    allora ragazzi ho un piccolo problema che non riesco a risolvere partiamo dal login:
    Codice PHP:
    <form action="controllo.php" method="post">
                  <
    fieldset>
                    <
    p>
                        <
    label for="username">Username:</label>
                        <
    input type="text" name="user">
                    </
    p>
                    <
    p>
                        <
    label for="password">Password:</label>
                        <
    input type="password" name="psw">
                    </
    p>
                </
    fieldset>
                <
    input type="submit" value="Invio">
                <
    class="links"><a href="registrazione.html" class="register">Registrati</a></p>
                </
    form
    poi il controllo
    Codice PHP:
     <?php
                  session_start
    ();
                  
                  
    $user $_POST['user'];
                  
    $psw $_POST['psw'];
                   
    $_SESSION['user'] = $user;
                
                  include 
    'db.inc.php'
                      
                  try
                  {
                      
    $sql "SELECT idUtente,COUNT(*) FROM accesso WHERE user = :user AND psw = :psw ";
                      
    $st $pdo->prepare($sql);
                      
    $st->bindValue(':user' $userPDO:ARAM_STR);
                      
    $st->bindValue(':psw' $pswPDO:ARAM_STR);
                      
    $st->execute();
                      
                  }   
                     catch(
    PDOException $e)
                  {
                      
    $error "Errore nell'esecuzione della query ";
                      include 
    'error.html.php';
                      exit();
                  }  
                  
                  
    $res $st->fetch();


                  if(
    $res[0] > 0)
                  {
                          if(
    $res['admin'] == 1)
                        {
                            
    $_SESSION['id'] = "admin";
                           
    //$risq = "Accesso riuscito.";
                            
    header('Location:chat.php');
                        }
                        else
                        {
                            
    $_SESSION['id'] = "user";
                            
    //$risq = "Accesso riuscito.";
                            
    header('Location:chat.php');
                        }
                          
    //$risq = "Accesso riuscito.";
                        
    header('Location:chat.php');
                  } 
                      else
                  {
                          
    //$risq = "Accesso non riuscito.";
                          
    header('Location:index.html');
                  }
                  
            
    ?>

    allora questa pagina mi controlla se un utente che si logga è presente nel database if($res[0]>0) e successivamente un secondo controllo per verificare che l'utente sia un admin cioè se il campo admin(aggiunto cosi "alter table accesso add column admin boolean" sul database relazionale di altervista) se il campo admin è 1 allora è admin, se è a 0 sarà un normale utente. poi su chat.php in base se è un utente è admin oppure no viene visualizzato un messaggio diverso(poi aggiungerò dei comandi appositi per chi è admin) chat.php:
    Codice PHP:
    <?php    
    session_start
    ();        
    $user $_SESSION['id'];       
     if(!isset(
    $_SESSION['id']))    
    {       
     
    header('Location: .');   
     }
    ?>    
    <body>         
    <div style="color:blue; font: 20px Arial; text-align: center;">
    <?php if($user=="admin")
    {                                                                                 
    echo 
    "Benvenuto Admin: " $_SESSION['user'];                                                                       }else
    {                                                                                
    echo 
    "Benvenuto: " $_SESSION['user'];

    ?>
    </div>
    sapete aiutarmi? quello che mi succede è che sia un utente con admin settato a 1 o 0 mi visualizza sempre il benvenuto per l'utente normale

  2. #2
    Dov'è che recuperi la colonna admin nella query?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Dov'è che recuperi la colonna admin nella query?
    con il fetch sbaglio?
    azz è vero che stupido

  4. #4
    allora approfitto del mio thread per porvi un altro problema devo verificare che non venga registrato un nuovo utente con lo stesso username di uno già presente. presi i dati dal form questo è il controllo e inserimento. il problema è che se inserisco lo stesso user la registrazione avviene ugualmente e nel database ho due user o più con lo stesso nome.
    Codice PHP:
    <?php

        $nome 
    $_POST['nome'];
        
    $cognome $_POST['cognome'];
        
    $email $_POST['email'];
        
    $user $_POST['user'];
        
    $psw $_POST['psw'];
        
    $rpsw $_POST['rpsw'];
        
        if(
    $psw!=$rpsw)
        {
            
    header('Location: registrazione.html');
        }
        else
        {

          include 
    'db.inc.php';
          
          try
          {
              
    $sql "SELECT * FROM accesso";
            
    $ris $pdo->query($sql);
            
    $row $ris->fetch();
            
            if(
    $user == $row['user'])
            {
                
    $user_r "L'username inserito è già utilizzato.";
            }
            else
            {
                 
    $user_r "";    
                 try
                   {
                    
    $sql 'INSERT INTO accesso SET nome = :nome, cognome = :cognome ,
                    user = :user , email = :email , psw = :psw, admin = 0 '
    ;
                    
    $st $pdo->prepare($sql);
                    
    $st->bindValue(':nome' $nome);
                    
    $st->bindValue(':cognome' $cognome);
                    
    $st->bindValue(':email' $email);
                    
    $st->bindValue(':user' $user);
                    
    $st->bindValue(':psw' $psw);
                    
    $st->execute();
                   } catch (
    PDOException $e
                   {
                  
    $err 'Errore inserimento dati';
                  include 
    'errore.php';
                  exit();
                   }
            }
                
          } catch(
    PDOException $e)
          {
            
    $err 'Errore inserimento dati';
            include 
    'errore.php';
            exit();
          }
            
        include 
    'risReg.php';
        
        }
    ?>
    e questo è l'include
    Codice PHP:
    <html>
        <head>
            <meta charset="utf8">
            <title> Esito registrazione </title>
        </head>
        
        <body>
            <p> La registrazione è: </p>
            <?php 
                
    if($user_r=="")
                {
                     echo 
    'riuscita.';
                     
    header("refresh:3;url=index.html");
                 }
                else
                {
                     echo 
    'fallita. Hai inserito un username già utilizzato.';
                     
    header("refresh:3;url=registrazione.html");
                }
            
    ?>
       </body>
    </html>
    Ultima modifica di matt 95; 09-06-2014 a 19:28

  5. #5
    Ciao, invece di fare la query su tutti i campi per vedere se un utente è già registrato, non puoi fare una query sul campo user per vedere se è uguale a quella immessa dall'utente che si sta registrando?
    Seconda cosa, fai attenzione che USER è una parola riservata in sql, credo debba andare tra parentesi quadre. quindi prova così

    Codice PHP:

    $sql 
    "SELECT [user] FROM accesso WHERE [user]= '".$user."'"

  6. #6
    grazie della risposta, comunque se seleziono un campo solo, quello che mi serve, o tutti non cambia nulla quindi lo escludo, per quanto riguarda che user è una parola riservata sql non l'ho mai sentito, magari può essere ma credo sia improbabile visto che funziona tutto il resto, non avrebbe senso allora che ti consentissero di lasciarti fare un campo di nome user.

  7. #7
    Se non cicli il resultset controlli solamente il primo risultato della query.

    P.S.
    In ogni caso quello che fai è sbagliato in quanto nella query devi mettere una where condition con l'utente che stai cercando di inserire. In tal modo se la select ti restituisce un risultato allora significa che l'utente esiste già altrimenti puoi inserirlo.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,802
    Aggiungi un campo alla tabella ! Chiamalo stato!!! E gli metti il valore 1
    poi una volta che prelevi la query tutti quelli che hanno il valore 1 saranno admin!!
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    usa, unique nel campo della tabella e dopo gestisci l'errore con try catch..
    esempio email varchar(255) unique,

    non chiedermi come si fa.. ma sto provando anche io..

    EDIT - dicevo per la registrazione dell'utente..

    saluti.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    1,802
    [PHP]
    $ris = mysql_query("select * from accesso whare user =$user");
    If(mysql_num_row($ris)>0)
    Non è tanto importante saper fare,quanto ad avere voglia d imparare .

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.