Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885

    dubbio login: 2 while annideati con n condizioni!

    ciao ... ho provato a fare qualche ricerca... ma devo chiedere alla comunità.

    ho un problema che porta ad un dubbio e prima di piantare il server voglio sapere se è cosa giusta e buona procedere in questa maniera.

    io ho una sezione riservata nel mio sito; ciò significa che ho una sezione login con utente e password.
    Io prelevo i dati via post e interrogo il db.
    Dentro il mio WHILE creo degli if dove se l'utenza
    1-è abilitata ed esiste accede
    2-non è abilitata ma esiste
    3-non esiste

    solo il primo caso ha successo e reinderizzo al sito, altrimenti esco dal while e reinderizzo alla login riportando il messaggio.

    ora devo aggiungere un parametro alla ricerca solo se nel le condizioni del caso n 1 sono soddisfatte. ciò comporta un'altra interrogazione al database in una tabella differente.

    il mio dubbio e questo:

    io ho già una connessione e sto già ciclando una tabella. Mi trovo costretto a fare un while dentro un while con 3 condizioni al suo interno.
    Esiste una maniera senza dover affaticare troppo la macchina?
    vi ringrazio per la delucidazione


    ciao

  2. #2
    sembra il festival del giro del fumo....

    se hai un login con user e pwd e' sufficiente controllare che esista e sia abilitato.

    codice:
    select *
    from tabella
    where nome = '$nome'
         and pwd = '$pwd'
         and abilitato = 'si'
    se il risultato ottenuto e' = a un record allora accede altrimenti lo reinvii al login.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    si ... infatti ho una tabella con i 3 dati.

    ma il mio 'problema' e che devo mettere in sessione altri 2 valori che limitano l'accessibilità del sito ad un utente.

    questo dati li devo recuperare da una tabella B che ha solo lo user come parametro!

  4. #4
    Originariamente inviato da tapu
    si ... infatti ho una tabella con i 3 dati.

    ma il mio 'problema' e che devo mettere in sessione altri 2 valori che limitano l'accessibilità del sito ad un utente.

    questo dati li devo recuperare da una tabella B che ha solo lo user come parametro!
    non vedo il problema. Fai una JOIN

    codice:
    select *
    from tab1
    inner join tab2 ON tab1.user = tab2.user
    where user = '$nome'
         and pwd = '$pwd'
         and abilitato = 'si'
    Ma se i dati della seconda tabella sono da considerare non duplicati cioe' esclusivi dello user tanto vale lasciarli tutti insieme. Penso a cio' perche' se utilizzi lo user come campo di riferimento i dati presenti sono attributi dello user stesso e non dati duplicati.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    ciao ... si tu parli di mettere tutto in una tabella ... come avevo già pensato, ma chi mi ha commissionato il tutto non la vede cosi, per varie ragioni a me ignote le vuole separare...

    cmq

    il server su cui lavoro non mi permette di fare joint , subquery e altre cose che dovrebbero funzionare senza grossi problemi.

    non mi chiedere il perchè di ciò! ho chiesto al mio sistemista e non ho ancora ricevuto risposta... in trepida attesa non mi resta che cercare di fare il tutto in maniera funzionale con sistemi (non so come definirli) sicuramente 'obsoleti'.

    dopo lo sfogo

    ho risolto (per ora) cosi:

    Codice PHP:
    //prendo valori da tabella utenti
    $sql "SELECT * FROM utenti WHERE user_name = '$_POST[user]' AND password = '$_POST[pass]'; ";
    $query mysql_db_query ("nome_db" $sql);
    while (
    $row mysql_fetch_assoc($sql)){
     if (
    $_POST['user'] === $row['user_name'] &&  $_POST['password'] == $row['password'] && $_POST['blocco'] == $row['blocco']){

    //qui elaboro tutti i dati , metto in sessione e creo una connessione alla tabella II che prelevo cio che serve... faccio i controlli e reinderizzo tutti dentro questo if
    }



    ciao e grazie

  6. #6
    Originariamente inviato da tapu

    ho risolto (per ora) cosi:

    Codice PHP:
    //prendo valori da tabella utenti
    $sql "SELECT * FROM utenti WHERE user_name = '$_POST[user]' AND password = '$_POST[pass]'; ";
    $query mysql_db_query ("nome_db" $sql);
    while (
    $row mysql_fetch_assoc($sql)){
     if (
    $_POST['user'] === $row['user_name'] &&  $_POST['password'] == $row['password'] && $_POST['blocco'] == $row['blocco']){ 

    ciao e grazie
    bella soluzione non c'e' che dire ....

    WHERE user_name = '$_POST[user]' AND password = '$_POST[pass]';
    if ($_POST['user'] === $row['user_name'] && $_POST['password'] == $row['password']

    questo significa non aver alcuna fiducia nel software ma anche... come puoi sperare che:

    $_POST[pass] sia uguale a $_POST['password'] ????

    $_POST[blocco] controllalo nella query stessa e non usare mysql_db_query gia' da anni definito deprecato.

    Comunque sia una join funziona dal'inizio dei tempi del database. Up to you.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    heheheh è vero ... lo scritto a mano non ho fatto copia incolla!

    per il blocco hai ragione ... per il db_query sarà deprecato ma anche la versinen php che utilizzo dovrebbe esserla (a mio parere) , 4.0.0 aggiornata da poco!

    per le join che ti devo dire ... si rompono!
    e non è un problema umano, in locale e sul server di un mio amico funziona tutto correttamente su questo nisba!!!

    ciao!

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.