Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    UserID e pw (corrette) non riconosciute dal database

    Salve a tutti. Ho un server su cui gira Windows Server 2003, IIS 6, MySQL Server 5.0, PHP 5. E' stato (sembra correttamente) configurato per quanto concerne le nuove versioni del MySQL e del PHP, tant'è che le pagine in php sembrano interrogare i database MySQL.
    Il problema è questo: un mio cliente ha trasferito anche sul mio server il database MySQL che girava su un server Aruba Windows (credo un NT o 2000)e dove funzionava perfettamente (e funziona ancora) ed anche l'applicazione in PHP che lo deve interrogare. Superate le prime difficoltà (problemi con le nuove versioni, risolti - pare - inserendo nelle giuste cartelle le librerie php_mysql.dll e libmysql.dll), adesso, inserendo nella pagina di login userID e password la risposta è che non corrispondono a quelle del database, pur essendo sicuri di inserire quelle giuste (sono state controllate anche direttamente sul database).
    So che come spiegazione del problema è un po' generica, se dovesse occorrere qualche porzione di codice, comunicatemelo.
    Grazie a tutti quelli che potranno darmi una mano.

  2. #2

    ctrl

    controlla che la variabile del form di login che contiene il valore della password non si chiami proprio 'password'. rischi che ti dia come risultato il valore della password generica del computer su cui gira l'applicazione. a me è successo e da allora la chiamo sempre in un altro modo.

    spero di esserti stato d'aiuto. avvolte le cose più banali ci bloccano.

    klash
    ci sedemmo dalla parte del torto perchè tutti gli altri posti erano già occupati

  3. #3
    Innanzitutto grazie per la risposta. Si, si chiamava proprio "password",così, per seguire il tuo consiglio, ho sostituito tutte le parole "password" in "pass". Purtroppo la risposta è sempre la stessa:

    The username and password does not match with the ones in the database.
    Please go back and login again. Thank you.

    GULP! Sto impazzendo...

  4. #4
    Anzi, ho fatto la stessa cosa con "Username" che si poteva "confondere" con l'Username del database (diversa, ovviamante, da quella della login), ma il risultato, ahimè, non è cambiato!

  5. #5
    Ma, per caso, il fatto che l'Utente (del database, configurato sul server, non quello di login) ed il databse si chiamino allo stesso modo, può ingenerare "confusione"???

  6. #6
    insisti ...
    vedi a quale pagina punta il form di login (action)
    cerca la query che interroga il db per verificare gli accessi che sarà del tipo:
    -----
    select * from users(?) where user_id(?) = $_POST['uder_id(?)'] and password(?) = $_post['pass']
    -----
    dove:
    - users(?) : il nome della tabella del db che contiene i valori per il login
    - user_id(?) : il campo che contiene il valore della userid
    - password(?) : il campo che contiene le password

    subito prima di questa query puoi inserire del codice per visualizzare il contenuto della tabella che contiene di dati x l'accesso. una cosa tipo:

    $sql = "SELECT * from users(?)";
    $rs = mysql_query($sql);
    while ($ln = mysql_fetch_array($rs)) {
    echo $ln['password(?)']."
    ";
    }

    così verifichi se c'è veramente accesso a quella tabella e se i dati rilevati del db corrispondono a quelli da te inseriti

    nb: ovviamente verifica prima se le password vengono criptate sul db con comandi tipo hash1() o md5()

    sai bene che in questi casi non bisogna mollare ma procedere per esclusione

    :master:
    klash
    ci sedemmo dalla parte del torto perchè tutti gli altri posti erano già occupati

  7. #7
    Dunque, il form punta ad autentica.php
    codice:
    <<form name="Sample" method="post" action="autentica.php">
    
    
    </p>
    <div align="center">
    <center>
    <table border="1" cellspacing="1" width="176" height="30">
    <tr>
    <td width="176" height="26" bgcolor=#669999>
    <p align="center"><font face="Tahoma" size="2" color="#FFFFFF">Reserved Area</font></td>
    </tr>
    <tr>
    <td width="176" height="116" bgcolor="#99CCCC" valign="top">
    <p align="center"><font face="Tahoma" size="2">Username/Password:</font>
    	<input type="text" name="username" size="16">
    	<input type="password" name="password" size="16">
    	<input type="submit" value="Sezione Login" ></p>
    Mentre autentica.php ha questo codice (tutto il codice)
    codice:
    <?php
    include "auth.php";
    
    
    $aut = autentica(strtolower($username), strtolower($password));
    	if ($aut == 1) {
    		include "failed.php";
    	}
    	elseif ($aut == 2) {
    		include "Noactive.php";	
    	}
    	else {
    	$Autentica["USERNAME"] = strtolower($username);
    	$Autentica["PASSWORD"] = strtolower($password);
    	$Autentica["TIPO_ADMIN"] = $aut["tipo_admin"];
    	$Autentica["SOCIETA"] =$aut["societa"] ;
    	header("Location: iniziale.htm");
    //	header("Location: menu.php");
    	exit;
    	}
    
    
    ?>
    ed il file di inclusione auth.php ha questo codice
    codice:
    ?php
    	include "authconfig.php";
    
    function autentica($username, $password) {
    	$query = "SELECT * FROM admin WHERE admin_name='$username' AND admin_pass='$password'";
    	$link_id = connetti();
    	$result = mysql_query($query, $link_id);
    	
    	$numrows = mysql_num_rows($result);
    	$row = mysql_fetch_array($result);
    	
    		if ($numrows == 0) {
    			return 1;
    		}
    		elseif ($row["stato_admin"]== "Disattivato") { 
    			return 2;
    		}
    		else {
    			return $row;//["tipo_admin"];
    		}
    }
    
    function page_check($Checkuser, $Checkpass) {
    	$query = "SELECT * FROM admin WHERE admin_name='$Checkuser' AND admin_pass='$Checkpass' AND stato_admin <> 'Disattivato'";
    	$link_id = connetti();
    	$result = mysql_query($query, $link_id);
    	
    	$numrows = mysql_num_rows($result);
    	$row = mysql_fetch_array($result);
    		
    		// CHECK IF THERE ARE RESULTS
    		// Logic: If the number of rows of the resulting recordset is 0, that means that no
    		// match was found. Meaning, wrong username-password combination.
    		if ($numrows == 0) {
    			return false;
    		}
    		else {
    			return $row;
    		}
    } // End: function page_check
    	
    
    ?>
    Forse è un po' tanta roba, ma è per dare un supporto più dettagliato a chi mi può aiutare...

  8. #8
    Ho inserito il codice che mi hai proposto ed il risultato è:

    Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Inetpub\ftproot\partenosped\groupage\auth.php on line 6

    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Inetpub\ftproot\partenosped\groupage\auth.php on line 6

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Inetpub\ftproot\partenosped\groupage\auth.php on line 7

    Quindi, probabilmente, i permessi alla cartella che contiene il database vanno dati anche a all'user ODBC, solo che non riesco a trovarlo tra gli utenti del server...

  9. #9
    per fare la verifica che dicevo e farti visualizzare i valori sul db contestualmente alla verifica prova a modificare la funzione 'autentica' in questo modo:

    function autentica($username, $password) {

    $link_id = connetti();

    $sql = "SELECT * from admin";
    $rs = mysql_query($sql, $link_id);;
    while ($ln = mysql_fetch_array($rs)) {
    echo $ln['admin_pass']."
    ";
    }

    $query = "SELECT * FROM admin WHERE admin_name='$username' AND admin_pass='$password'";
    $result = mysql_query($query, $link_id);

    $numrows = mysql_num_rows($result);
    $row = mysql_fetch_array($result);

    if ($numrows == 0) {
    return 1;
    }
    elseif ($row["stato_admin"]== "Disattivato") {
    return 2;
    }
    else {
    return $row;//["tipo_admin"];
    }
    }
    ci sedemmo dalla parte del torto perchè tutti gli altri posti erano già occupati

  10. #10
    Come risposta, prima del solito messaggio che username e password non corrispondono, mi "snocciola" le quattro password dei quattro utenti caricati nel database. Dunque interroga correttamente il databse. Allora dov'è che non funziona?

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.