Visualizzazione dei risultati da 1 a 7 su 7

Discussione: login

  1. #1

    login

    ragazzi ho fatto questi tre script per login ma non mi fnzionano e non capisco perchè o meglio io metto pass e username mi dice che l'utente non è associato
    vi posto gli script
    Questo è il form

    Code:
    Codice PHP:
    <form action="./login.php" method="post" name="login"> 
                                          <div class="formitem"> 
                                          <label for="username">Username</label><input type="text" name="username" class="text"> 
                                          </div> 
                                            <div class="formitem"> 
                                          <label for="password">Password</label><input type="password" name="password" class="text"> 
                                          </div> 
                                          <div class="formitem"> 
                                            <input type="reset" name="reset" value="Reset" class="button"> 
                                            <input type="submit" name="submit" value="Login" class="button"> 
                                            </div> 
                                          </form></div> 
                                          <div class="menulaterale">::Azienda::</div> 
                                          <div class="menulaterale">[url="javascript:showhide('servizi');"]::Servizi::[/url]</div> 
                                           <div id="servizi"> 
                                          <div class="submenu">::Sito::</div>     
                                          <div class="submenu">::Guestbook::</div> 
                                          <div class="submenu">::Forum::</div>     
                                          <div class="submenu">::Chat::</div> 
                                          </div> 
                                         <div class="menulaterale">::Prodotti::</div> 
                                          <div class="menulaterale">::Lavora con Noi::</div>     
                                          <div class="menulaterale">::Publicità::</div> 
                                          <div class="menulaterale">::Agente Foxweb::</div> 
                                          <div class="menulaterale">[url="javascript:showhide('corsi');"]::Corsi::[/url]</div> 
                                          <div id="corsi"> 
                                          <div class="submenu">::Corsi Online::</div>     
                                          <div class="submenu">::Corsi in Sede::</div> 
                                          </div> 
                                          <div class="menulaterale">::Sondaggio::</div> 
                                          <div class="menulaterale">::Annunci::</div> 
         
        </td> 
        <td>    <?php 
        
    if(isset($_GET['login'])) { 
            
    // Gestione degli errori di login 
            
    if($_GET['login'] == "empty") { 
                echo 
    "<div><img src=\"./image/alert.png\">Attenzione, &egrave; necessario riempire tutti i campi.</div>\n"
            } elseif(
    $_GET['login'] == "failed") { 
                echo 
    "<div><img src=\"./image/alert.png\">Attenzione, i dati inseriti non sono associabili a nessun utente.</div>\n"
                 
            } elseif(
    $_GET['login'] == "chars") { 
                echo 
    "<div><img src=\"./image/alert.png\">Attenzione, sono permessi solo caratteri alfanumerici.</div>\n"
            } elseif(
    $_GET['login'] == "logout") { 
                echo 
    "<div id=\"formtitle\"><img src=\"./image/tick.png\">Logout eseguito con successo.</div>\n"
            } elseif(
    $_GET['login'] == "ban") { 
                            echo 
    "<div><img src=\"./image/alert.png\">Attenzione, questo utente risulta non essere autorizzato all'accesso.</div>\n"
                    } 
        } else { 
            
    // Messaggio predefinito 
            
    echo "<div>Non risulti autenticato nel sistema, prego inserisci Username e Password.</div>\n"
        } 
        
    ?></td> 
      </tr> 
    </table> 

    </body> 
    </html>
    questa è la pagina che elabora il tutto

    Code:
    Codice PHP:
    <?php 
    session_start
    (); 
    ob_start(); 

    include(
    "./config.php"); 

    $user $_POST['username']; 
    $pass md5($_POST['password']); 

    // Se non sono stati inseriti i dati di login rimanda alla pagina principale segnalando l'errore 
    if(!isset($user) || !isset($pass)) { 
        
    header("Location: ./content.php?login=empty"); 
    } else { 
        
    // Controllo principale sull'integrità dei caratteri per evitare tentativi di SQL Injection 
        
    if(!eregi("[^a-zA-Z0-9_]"$user)) { 
            
    $amm_sql "SELECT * FROM amministratore_istone  WHERE username='$user' and password='$pass'"
            
    $amm_query = @mysql_query($amm_sql); 
                    
    $amm_result = @mysql_fetch_array($amm_query); 
                    echo 
    $amm_sql
                    
    //anagrafica è la tabella utenti, rinominata per via del flusso xml 
            
    $user_sql "SELECT * FROM agente_istone WHERE username='$user' and password='$pass'"
            
    $user_query = @mysql_query($user_sql); 
                    
    $user_result = @mysql_fetch_array($user_query); 
             
            if(@
    mysql_num_rows($user_query) > 0) { 
                            if(
    $user_result['banned'] == 'Y') { 
                                    
    header("Location: ./content.php?login=ban"); 
                            } else { 
                                    
    $_SESSION['username'] = $user
                                     
                                    
    // L'utente e` un amministratore, quindi assegno come privilegi 1 
                                    
    $_SESSION['privileges'] = 1
                                     
                                    
    $_SESSION['time'] = time(); 
                                     
                                    
    $_SESSION['ammid'] = $amm_result['id_amministratore']; 
                                     
                                    
    header("Location: ./content.php"); 
                            } 
            } elseif(@
    mysql_num_rows($user_query) > 0) { 
                
    $_SESSION['username'] = $user
                 
                
    // L'utente e` un inquilino, quindi assegno come privilegi 2 
                
    $_SESSION['privileges'] = 2
                 
                
    $_SESSION['time'] = time(); 
                             
                            
    $_SESSION['userid'] = $user_result['id']; 
                             
                            
    $_SESSION['username'] = $user_result['username']; 
                         
    $_SESSION['codice_agente'] = $user_result['codice_agente']; 
                 
                
    header("Location: ./content.php"); 
            } else { 
                
    header("Location: ./content.php?login=failed"); 
            } 
        } else { 
            
    header("Location: ./content.php?login=chars"); 
        } 


    ob_end_flush(); 
    ?>

  2. #2
    Visionando velocemente il codice noto che fai due SELECT distinte, una sulla tabella "amministratore_istone" e l'altra su "agente_istone".

    Però poi quando fai i controlli per verificare se l'utente sia un administrator oppure un utente inquilino usi sempre la stessa condizione nei due IF (cioè sempre i risultati dell'interrogazione della tabella "agente_istone"):

    if(@mysql_num_rows($user_query) > 0)

    ....

    elseif(@mysql_num_rows($user_query) > 0)

    siccome la prima controlla se un utente è un administrator dovresti modificarla con il risultato della prima SELECT in questo modo:

    if(@mysql_num_rows($amm_query) > 0)

    poi probabilmente le due istruzioni che seguono:

    if($user_result['banned'] == 'Y') {
    header("Location: ./content.php?login=ban");

    dovrebbero andare sotto la seconda condizione e non nella prima.

    Se poi devi controllare il paramentro "banned" anche per l'utente administrator devi modificare le righe in questo modo:

    if($amm_result['banned'] == 'Y') {
    header("Location: ./content.php?login=ban");

  3. #3
    ascolta infatti il ban è per l'agente non l'amministratore , ma se lo sposto sotto mi fa errori di sintassi come dovrei sistemarlo?

  4. #4
    Succede questo perchè probabilmente spostando la condizione IF per l'utente bannato hai dimenticato di spostare anche la } di chiusura.

    comunque eccoti tutto il codice corretto.


    <?php
    session_start();
    ob_start();

    include("./config.php");

    $user = $_POST['username'];
    $pass = $_POST['password'];

    // Se non sono stati inseriti i dati di login rimanda alla pagina principale segnalando l'errore
    if(!isset($user) || !isset($pass)) {
    header("Location: ./content.php?login=empty");
    } else {
    // Controllo principale sull'integrità dei caratteri per evitare tentativi di SQL Injection
    if(!eregi("[^a-zA-Z0-9_]", $user)) {
    $amm_sql = "SELECT * FROM amministratore_istone WHERE username='$user' and password='$pass'";
    $amm_query = @mysql_query($amm_sql);
    $amm_result = @mysql_fetch_array($amm_query);
    //echo $amm_sql;
    //anagrafica è la tabella utenti, rinominata per via del flusso xml
    $user_sql = "SELECT * FROM agente_istone WHERE username='$user' and password='$pass'";
    $user_query = @mysql_query($user_sql);
    $user_result = @mysql_fetch_array($user_query);

    if(@mysql_num_rows($amm_query) > 0) {

    $_SESSION['username'] = $user;

    // L'utente e` un amministratore, quindi assegno come privilegi 1
    $_SESSION['privileges'] = 1;

    $_SESSION['time'] = time();

    $_SESSION['ammid'] = $amm_result['id_amministratore'];

    header("Location: ./content.php");

    } elseif(@mysql_num_rows($user_query) > 0) {

    if($user_result['banned'] == 'Y') {
    header("Location: ./content.php?login=ban");
    } else {

    $_SESSION['username'] = $user;

    // L'utente e` un inquilino, quindi assegno come privilegi 2
    $_SESSION['privileges'] = 2;

    $_SESSION['time'] = time();

    $_SESSION['userid'] = $user_result['id'];

    $_SESSION['username'] = $user_result['username'];
    $_SESSION['codice_agente'] = $user_result['codice_agente'];

    header("Location: ./content.php");
    }

    } else {

    header("Location: ./content.php?login=failed");
    }
    } else {

    header("Location: ./content.php?login=chars");
    }
    }

    ob_end_flush();
    ?>

  5. #5
    grazie adesso non mi da piu errori ma quando provo a fare login mettendo userame e pass tipo dell'amminisratore mi dice che non esiste nessun utente associato al db cosi come nella parte agente, sembra che non riesca a leggere dal db è possibile?

    Ho provato questo piccolo script , per vedere se fosse questione di pass
    Codice PHP:
    <?php
    include(../confi.php);
    $user$_GET['username'];
    $pass md5($_GET['password']);

    $amm_sql "SELECT * FROM amministratore_istone WHERE username='$user' and password='$pass'"
    $amm_query = @mysql_query($amm_sql); 
    $amm_result = @mysql_fetch_array($amm_query);
    echo 
    $amm_sql
    echo 
    $amm_result['username'];
    echo 
    "
    "
    $amm_result['password'];

    ?>
    e funiona

  6. #6
    Si ha ragione perchè nel codice che ti ho corretto ho scordato di cifrare in MD5 il campo password.

    Modifica nel codice:

    $pass = $_POST['password'];

    con

    $pass = md5($_GET['password']);
    Non sono esperto, sono solo curioso.

  7. #7
    vero non me ne ero accorto ti ringrazio funziona perfettamente, che te ne pare dello script? è abbastanza sicuro? °_° l'ho fatto io con le mie manine ^^

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 © 2024 vBulletin Solutions, Inc. All rights reserved.