Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Problema LOGIN

  1. #1

    Problema LOGIN

    Ciao a tutti, ho un problemuccio... ho creato una tabella con 3 colonne: id, nick e password. Sono dati che servono per effettuare l'accesso al sito. Il mio problema è che mi collego sempre, qualsiasi siano i dati inseriti, mentre dovrebbero andare solo i dati salvati in tabella. Questo è il codice:
    Codice PHP:
    <?php

        $nick
    =$_POST['nick'];
        
    $password=$_POST['password'];
        
        include(
    "database/db_connessione.php");
        
        
    mysql_query("select nick,password from utenti where nick='$nick' and password='$password'",$db)
        or die(
    "Nick e/o password errati!");
        
        
    mysql_close($db);
        
        echo 
    "Sei collegato!";
        
    ?>
    Mi dite perchè non va?

    Piccolo OT: ma come faccio a collegare le pagine html sul pc usando l'indirizzo delle directory? Ho provato con "file:///C:\ecc..." ma non funziona

  2. #2
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    forse perchè mysql_query anche se non trova una corrispondenza lo stesso ha fatto il suo lavoro, ossia restituisce un indicativo di risorsa che appunto nel tuo caso non contiene dati.
    Solo se la query non viene eseguita correttamente allora restituisce false e quindi viene eseguito "or die".
    Errare humanum est, perseverare ovest

  3. #3
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Infatti credo che la query vada in esecuzione, ma non seleziona niente, quindi semanticamente e sintatticamente è tutto ok...dovresti fare un confronto, del tipo
    Codice PHP:
    if(mysql_num_rows($query) == 1)
       echo 
    'Sei loggato';
    else
       echo 
    'Non sei loggato'

  4. #4
    Originariamente inviato da Gab-81
    Infatti credo che la query vada in esecuzione, ma non seleziona niente, quindi semanticamente e sintatticamente è tutto ok...dovresti fare un confronto, del tipo
    Codice PHP:
    if(mysql_num_rows($query) == 1)
       echo 
    'Sei loggato';
    else
       echo 
    'Non sei loggato'
    Bene così funziona, però mi esce il messaggio:"Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\AllRock\log.php on line 9"

    E' un pò fastidioso, come faccio a levarlo?

    EDIT: ho provato sia a mettere dati corretti e non, ma mi esce sempre quel messaggio di errore e mi dice che non sono collegato o_O

  5. #5
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    @mysql_num_rows($query) == 1
    Aggiungi una chiocciola (@) davanti alla funzione...elimina la stampa dei Warnings...certo non è che sia molto pulito...meglio andare alla riga 9 di log.php e capire cosa succede...

  6. #6
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    aggiungerei che nella query invece di select userei select count, trovo inappropriato sventolare in giro username e password anche quando non serve
    Errare humanum est, perseverare ovest

  7. #7
    Raga non mi fa collegare, la funzione mysql_num_rows viene sempre falsa, anche dopo aver sostituito select con count

  8. #8
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    prova così:
    Codice PHP:
    $result =  mysql_query("
    SELECT COUNT(*) AS totale 
    FROM utenti 
    WHERE nick='"
    .$_POST['nick']."' AND password='".$_POST['password']."' "$db ) ;

    $conteggio mysql_fetch_array($result);

    if( 
    $conteggio['totale'] == 1) echo 'Sei loggato';
    else echo 
    'Non sei loggato'
    Errare humanum est, perseverare ovest

  9. #9
    Originariamente inviato da carlo2002
    prova così:
    Codice PHP:
    $result =  mysql_query("
    SELECT COUNT(*) AS totale 
    FROM utenti 
    WHERE nick='"
    .$_POST['nick']."' AND password='".$_POST['password']."' "$db ) ;

    $conteggio mysql_fetch_array($result);

    if( 
    $conteggio['totale'] == 1) echo 'Sei loggato';
    else echo 
    'Non sei loggato'
    Grazie mille funziona! Ma non ho capito bene cosa fa la parte di codice "as totale" ? Mai usato...

  10. #10
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Originariamente inviato da Dreamer89
    Grazie mille funziona! Ma non ho capito bene cosa fa la parte di codice "as totale" ? Mai usato...
    SELECT COUNT genera un result set che consiste in una riga con una singola colonna contenente il numero di righe complessivo. Si usa AS per fornire un nome di colonna significativo per il result set.
    Errare humanum est, perseverare ovest

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.