Login

  • Creatore Discussione Creatore Discussione Gae58
  • Data di inizio Data di inizio

Gae58

Utente Attivo
26 Mar 2012
84
0
0
salve,

dopo aver sviluppato delle pagine web, ho iniziato a cimentarmi sul login.

Ho creato la pagina per il login e la ricerca dell'Utente nel dataBase.
La cosa strana è che localmente con PHPMyadmin (Windows) funziona tutto bene, mentre sul sito PHP, MySql (Linux) non trova l'Utente.

Ho controllato e la tabella ed i dati sono perfettamente uguali.

Il codice PHP è questo:
PHP:
$Conn = Connetti( true );
  $cUte = htmlspecialchars( $_POST['Uten'] );
  $cPas = htmlspecialchars( $_POST['Pass'] );
  $cSql = "SELECT *, Uf.Codice AS cUfCod   FROM Utenti
        LEFT OUTER JOIN Uffici AS Uf  ON Utenti.Ufficio = Uf.Progressivo  
                 WHERE Utente='$cUte'  and  PassWord='$cPas' ";
  $aPara = array();
  $cQry = cQuery( $Conn, $cSql, $aPara );
    if( $cQry->rowCount() == 1 ) {
        $Campo = $cQry->fetch();
        $Ana = $Campo['Anagrafica'];
        $Ute = $Campo['Codice'];
            $_SESSION['Utente']  = $Ana;
          $_SESSION['Ufficio'] = $Ute;
            header('location:AssegnazioniTipo.php');
    } else {
        session_destroy();
    echo "Utente non Trovato, CONTATTARE l'AMMINISTRATORE PER LA REGISTRAZIONE";
                        }
Disconnetti( true, $Conn );

Le funzioni indicate non fanno altro che richiamare il relativo codice

Ho fatto varie prove, ma senza successo.
Però penso che il problema sia sul web in quanto lo spazio web è Linux e sicuramente sbaglio qualcosa

Qualcuno mi sadire dove sbaglio?

grazie Gaetano
 
no siccome è la prima volta che provo questa pocedura l'hpfatto nella manera + semplice.
 
ciao
metti un var_dump per verificare se la querry è scritta come dovrebbe

PHP:
//........... 
 $cSql = "SELECT *, Uf.Codice AS cUfCod   FROM Utenti
        LEFT OUTER JOIN Uffici AS Uf  ON Utenti.Ufficio = Uf.Progressivo  
                 WHERE Utente='$cUte'  and  PassWord='$cPas' ";
var_dump($cSql);
//.........
dimenticavo: ed evntualmente posta quanto risulta
 
Questo è il risultatao:
PHP:
string(163) "SELECT *, Uf.Codice AS cUfCod FROM Utenti LEFT OUTER JOIN Uffici AS Uf ON Utenti.Ufficio = Uf.Progressivo WHERE Utente='Gae' and PassWord='Gae' "

Però ti devo aggiornare su una situazione. Ho fatto varie prove ed ho notato che lavorando solo sul web, se esegue la query sul pannello di controllo dello spazio web mi trova l'utente, se eseguo la query da Login.php non lo trova.
Però ho approfondito la questione ed ho noatato che se levo il controllo:
PHP:
if( $cQry->rowCount() == 1 ) {

Mi ritorna i dati dell'utente, ma il comando che ho levato serve proprio a dire quante rgihe ha trovato.

Tieni presente che lo spazio web è sotto Linux
 
Ciao, prova con questo,
PHP:
if(mysql_num_rows($cQry) == 1)
male che vada è solo una prova
Ciao
 
ciao
la query sembrerebbe giusta, continua con i var dump

PHP:
//...
var_dump($cQry->rowCount());
   if( $cQry->rowCount() == 1 ) {
        $Campo = $cQry->fetch();
//....
 
ciao
dimenticavo: prova, prima di qunto ho postato, anche
var_dump($cQry);

se la connessione ecc... è giusta dovrebbe darti RESOURCE..., altrimenti FALSE.
 
Questa è il risultatao della qry, se ci hai fatto caso ho cambiato il tutto con il punto interrogativo, per poter usare i parametri
PHP:
object(PDOStatement)#2 (1) { ["queryString"]=> string(148) "SELECT *, Uf.Codice AS cUfCod FROM Utenti LEFT OUTER JOIN Uffici AS Uf ON Utenti.Ufficio = Uf.Progressivo WHERE Utente=? and PassWord=?" }

E questo è il rislutato dei parametri con l'input dell'utente e della password.
PHP:
array(2) { [0]=> string(10) "Alessandra" [1]=> string(1) "a" }

Mi sto esaurendo perchè se vedi i dati sono uguali a quelli dell'Utente nel dataBase.

Penso che il mio sia una errore talmente stupido che quando sarà trovato, farà molto innervosire.

Se non faccio il controllo sul numero di righe restituite, si posiziona esattamente sull'Utente.
 
Forse la LEFT OUTER JOIN ti restituisce piu di una riga (potresti incollarla nel SQL per vedere cosa restituisce)

prova semmai con LEFT JOIN oppure con

PHP:
if( $cQry->rowCount() >= 1 ) {
 
Provato anche questo e mi restiuisce sempre zero, per nessuna linea trovata.

Ho Provato anche senza la join.
 
ciao
prova questo script, se funzia l'errore probabilmente è dentro la classe

PHP:
<?php
//connessione al db
$cUte = htmlspecialchars( $_POST['Uten'] ); 
$cPas = htmlspecialchars( $_POST['Pass'] );
$cSql = "SELECT *, Uf.Codice AS cUfCod   FROM Utenti
        LEFT OUTER JOIN Uffici AS Uf  ON Utenti.Ufficio = Uf.Progressivo  
                 WHERE Utente='$cUte'  and  PassWord='$cPas' "; 
$cQry=mysql_query($cSql);

if(mysql_num_rows($cQry) == 1){
	echo "trovato utente $cUte con pass $cPas";
}else{
	echo "nessu utente $cUte con pass $cPas";
}
?>
 
Ma sei sicuro di questa riga?
PHP:
$cQry = cQuery( $Conn, $cSql, $aPara );

non dovrebbe essere cosi?
PHP:
$cQry = new cQuery( $Conn, $cSql, $aPara );

sempre che cQuery sia una classe
 
Ma sei sicuro di questa riga?
PHP:
$cQry = cQuery( $Conn, $cSql, $aPara );

non dovrebbe essere cosi?
PHP:
$cQry = new cQuery( $Conn, $cSql, $aPara );

sempre che cQuery sia una classe


Si uso il PDO e cQuery è una funzione che uso anche all'interno delle altre pagine
 
mi da l'idea che la query non venga eseguita per qualche motivo di conseguenza non ti da risultati

qualcosa pero non mi torna

$cQry dovrebbe essere un istanza della classe PDO visto che poi ne richiami i metodi $cQry->rowCount() , $cQry->fetch()

pero scrivendo cosi

PHP:
$cQry = cQuery( $Conn, $cSql, $aPara );

gli assegni il risultato di una funzione annullando l'istanza

Forse sono piu confuso io di te :D
 
Ultima modifica:

Discussioni simili