Visualizzazione risultati 1 fino 13 di 13

Discussione: Problema PHP

  1. #1
    Guest

    Exclamation Problema PHP

    Io ho iniziato a creare uno script di login.
    Ho usato una porzione di codice utile per farlo:

    while($row = mysql_fetch_array(variabile_risultato_query)
    if ($_POST[password] == $row[password]) $pass=ok

    Con questo pezzo di script tutto mi funziona correttamente, ma quando ho provato ad aggiungere il controllo dell'userid in questo modo:

    while($row = mysql_fetch_array(variabile_risultato_query)
    if ($_POST[userid] == $row[userid]) $user=ok;
    while($row = mysql_fetch_array(variabile_risultato_query)
    if ($_POST[password] == $row[password]) $pass=ok

    o in questo

    while($row = mysql_fetch_array(variabile_risultato_query)
    if ($_POST[password] == $row[password] and $_POST[userid] == $row[userid]) $pass=ok

    la variabile $pass rimaneva vuota, anche essendomi accertato che i dati fossero esatti

    P.S. La variabile $_POST[userid] e quella $_POST[password] vengono da un form nella pagina precedente, mi sono accertato della loro esistenza con echo $_POST... e esistono tutte e due con i dati esatti.
    Ultima modifica di zurfino : 17-10-2004 alle ore 15.58.56

  2. #2
    Guest

    Predefinito

    Ciao, prima di tutto okkio ai forum, sei in quello sbagliato.

    prova con questo:
    Codice PHP:
    $query_dati=mysql_query(SELECT userid FROM tabella WHERE userid='".$_POST['userid']."' AND password='".$_POST['password']."' LIMIT 1");
    if(@mysql_num_rows(
    $query_dati)==1){
    $pass="ok";
    }else{
    $pass="dati errati";
    }
    PS: è inutile creare un array per un risultato solo!


    Ciaoooooo!!!!!!!!!

  3. #3
    Guest

    Predefinito

    Non vorrei fare il sapientone, anzi, ma sbaglio o quel pezzo di codice ha seri problemi di sicurezza?

    $query_dati=mysql_query(SELECT userid FROM tabella WHERE userid='".$_POST['userid']."' AND password='".$_POST['password']."' LIMIT 1");
    SECONDO me se nel campo di inserimento della password ti infilo qualcosa come
    pippo' OR 'a'='a
    e nell'username un username di qualcuno (basta che so un username a caso)la tua query diventa

    $query_dati=mysql_query(SELECT userid FROM tabella WHERE userid='UTENTE' AND password='pippo' OR 'a'='a' LIMIT 1");
    Che guarda caso da sempre vero. In più mi limiti a 1 i risultati, quindi anche il test sul numero di righe viene passato e io mi loggo col nick che voglio.

    Attenzione a queste cose, che gli hacker ci banchettano.

    Se hai domande il mio sito è http://www.supermaestro.org postale nella sezione specialisti, ciao.

  4. #4
    Guest

    Predefinito

    Il problema é dato dal fatto che usi il while.
    Il while continua finché la condizione é sempre vera, pertanto finché esisterà un risultato all'interno di $row eseguirà sempre il controllo dello username.
    Poi ovviamente la condizione sarà false e quindi non eseuirà il controllo sulla password.

    In ogni caso dovresti filtrare gli apici singoli e doppi esattamente come t'ha detto ilmaestro, se no chiunque può craccarti lo script.

    Infine quando usi stringhe per definire un'array la sintassi corretta é array['stringa'] o array["stringa"] ma non array[stringa]. Fai attenzione perché possono sorgere problemi.

  5. #5
    Guest

    Predefinito

    Io ovviamente avevo tralasciato tutto il resto e ho suggerito come impostare il codice solo per recuperare in maniera corretta il log dell'utente! :(


    Ciaooooo!!!!!!

  6. #6
    Guest

    Predefinito

    Grazie, adesso provo a modificare il codice

  7. #7
    Guest

    Predefinito

    Ho provato a inserire questo codice, ma mi da l'errore unexpected T_STRING nella linea 27, quella di $query_dati=...
    Che cosa significa?

  8. #8
    Guest

    Predefinito

    Tu non devi solo copiare e incollare!
    Devi personalizzare il nome della tabella dove query, e poi lì manca tutta la parte della connessione e selezione del db.


    Ciaooooo!!!!!!!

  9. #9
    Guest

    Predefinito

    Ho messo tutto!!!
    Se no come mai sarei già alla riga 27?

  10. #10
    Guest

    Predefinito

    Ho provato a inserire questo codice, ma mi da l'errore unexpected T_STRING nella linea 27

    prova a controllare se c'è il ; alla fine della riga 26...

  11. #11
    Guest

    Exclamation

    Codice PHP:
    <html>
    <head>
    <title>Documento senza titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <?
    $pass
    = "";
    $db_host = "localhost";
    $db_user = "root";
    $db_password = "";
    $db_name = "registrazione";
    $db = mysql_connect($db_host, $db_user, $db_password);
    mysql_select_db($db_name, $db);
    //$query = "SELECT cognome,nome,email,username,password FROM utenti";
    //$result = mysql_query($query, $db);
    //while ($row = mysql_fetch_array($result))
    //if ($row[username] == $_POST[userid]) $pass="a";
    //while ($row2 = mysql_fetch_array($result))
    //if ($row2[password] == $_POST[pwd]) $user="a";
    //$query_dati=mysql_query(SELECT userid FROM tabella WHERE userid='".$_POST['userid']."' AND password='".$_POST['password']."' LIMIT 1");
    $query_dati=mysql_query(SELECT userid FROM tabella WHERE userid='".$_POST[userid]."' AND password='".$_POST[password]."' LIMIT 1);
    if(@
    mysql_num_rows($query_dati)==1){
    $pass="ok";
    }else{
    $pass="errore";
    };
    mysql_close($db);
    if (
    $pass == "ok") echo "Benevnuto nella zona riservata zukka web <a href=enter4337842453447ghsdY.php>Entra</a>";
    if (
    $pass == "errore") echo "Errore password o userid errati";
    ?>
    <p></p>
    </body>
    </html>
    Ho inserito l'intero script, ma cosa significa T_STRING?

  12. #12
    exagonx non è connesso Neofita
    Data registrazione
    10-03-2004
    Messaggi
    21

    Predefinito scusate sono alle prime armi

    Sto studiando da poco la programmazione e andando per logica sembra che alla stringa non venga assegnato un valora e così quando l'ultima richiesta della stringa va a convalidarlo trovando una stringa nulla da l'errore

    in alternativa non ho capito nulla e sarei grato a chiunque me lo facesse notare

  13. #13
    Guest

    Predefinito

    };


    ecco l'errore..

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •