Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    85

    [Login] In locale funziona, sul server no..

    Ciao a tutti.
    Sto uscendo pazzo nel tentativo di capire perchè diavolo il login non deve funzionare sul server mentre in locale va che è una meraviglia....

    Il link dove potete guardarlo è questo: Link . Metto il link ad un sito mio e non ancora in funzione, lo dico perchè se non ricordo male non posso mettere link sul forum.
    Potete provarlo con user: admin e pass: 123

    Il login funziona cosi:
    ci sono diversi session_registerer a seconda di chi fa il login, questo per avere le varie autorizzazioni nelle varie pagine. Un po macchinoso ma non mi dovrebbe dare problemi, infatti in locale funziona egregiamente.
    Quando, sul server, vado a fare il login, non mi da niente! Mi rimanda alla stessa pagina come se avessi semplicemente fatto un refresh!... Se sbaglio utente o password mi dice che i dati non sono corretti, se non li metto mi dice di metterli, questo a dimostrazione che funziona. Ma se metto nome e utente corretti, non mi da niente. Morto.
    Che cosa può essere?

    Vi lascio il codice della pagina di login, è tutto in uno.

    codice:
    if(session_is_registered('logged_user')){ 
    echo'
    
    Bentornato <b style="color: #7fff00">' . $_SESSION['username'] . '[/b] | <span>Profilo | Logout</span></p>'; 
    }elseif(session_is_registered('logged_admin')){ 
    echo'
    
    Ciao <b style="color: #ff8c00">' . $_SESSION['username'] . '[/b] | <span>Nuovo Post | Profilo | Logout</span></p>'; 
    }elseif(session_is_registered('logged_mdc')){ 
    echo'
    
    Bentornato Sig. <b style="color: #ffd700">' . $_SESSION['username'] . '[/b] | <span>Profilo | Logout</span></p>'; 
    }elseif(session_is_registered('logged_generali')){ 
    echo'
    
    Bentornato, Capitano <b style="color: #9932cc">' . $_SESSION['username'] . '[/b] | <span>Profilo | Logout</span></p>'; 
    }elseif(session_is_registered('logged_member')){ 
    echo'
    
    Bentornato <b style="color: red">' . $_SESSION['username'] . '[/b] | <span>Profilo | Logout</span></p>'; 
    }elseif(!isset($_POST['login_cds'])){ 
    echo '<form name="form_cds" action="#" method="post"> 
    User <input type="text" name="user_cds" id="username" size="10" /> 
    Pass <input type="password" name="pass_cds" id="password" size="10" />
    <input class="button" type="submit" value="Login" name="login_cds" /> 
    Registrati | Password Dimenticata? 
    </form> 
    '; 
    }else{
     if(!$_POST['user_cds']) die("Errore: Devi inserire il tuo username."); 
    if(!$_POST['pass_cds']) die("Errore: Devi inserire la tua password."); 
    
    $user = strtolower(mysql_real_escape_string($_POST['user_cds'])); 
    $pass = strtolower(mysql_real_escape_string($_POST['pass_cds'])); 
    
    $query = "SELECT * FROM utenti WHERE username_utente = '$user' AND password_utente = '$pass'"; 
    $result = mysql_query($query,$conn) or die("Problema nella query" . mysql_error()); 
    $num_rows = mysql_num_rows($result); 
    if ($num_rows == '1') { 
    $_SESSION['username'] = strtolower(mysql_real_escape_string($_POST['user_cds'])); 
    
    while($row = mysql_fetch_array($result)){ 
    if($row['categoria_utente'] == '0'){ 
    session_register("logged_user"); 
    }elseif($row['categoria_utente'] == '1'){ 
    session_register("logged_admin"); 
    }elseif($row['categoria_utente'] == '2'){ 
    session_register("logged_mdc"); 
    }elseif($row['categoria_utente'] == '3'){ 
    session_register("logged_generali"); 
    }elseif($row['categoria_utente'] == '4'){ 
    session_register("logged_member"); 
    } 
    } 
    
    header("location: index.php?".$_SERVER['QUERY_STRING']); 
    
    }else { 
    echo '
    
    Dati non validi. Ritenta | Registrati</p>'; } }
    Sul topstyle sono un po più ordinati, qui ho dovuto ordinarli a mano, quindi scusate il disordine.

    Aiutatemi per favore! :'(

  2. #2
    se come dici tu "in locale va che è una meraviglia...."
    mi pare che grossi problemi nel codice non ce ne dovrebbero essere!

    quello che mi viene in mente è:
    1)hai provato a stampare
    phpversion();
    sia in locale che sul server?
    magari se sono due versioni molto differenti possono avere comportamenti differenti
    (ad esempio la funzione session_is_registered() che tu usi è DEPRECATED a partire da PHP 5.3.0. )
    In ogni caso io proverei sen'altro asostituire le varie
    Codice PHP:
     if (session_is_registered('logged_admin')) ... 
    con
    Codice PHP:
     if (isset($_SESSION['logged_admin']))... 
    2) hai provato a far girare in locale settando error_reporting(E_ALL);?
    magari qulche "notice" puoi farti intuire cosa da problemi sul server

    insomma il concetto è di vedere prima le differenze tra ambiente di test (locale) e ambiente di produzione (server) e poi capire cosa fai in test che produzione non supporta

    bytez
    p.h.

  3. #3
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    85
    Ciao philbert, grazie della risposta.

    La cosa che mi lascia perplesso è un'altra... Che non credo ci siano problemi di versioni, perchè prima di fare questo sito ho fatto svariate prove per imparare ad usare le sessioni, ed avevo fatto QUESTO piccolo "sito" , fatto ESATTAMENTE come quello con cui ho il problema, stesse stringhe di codice. Quello della prova sessione funziona benissimo, anche sul server!... Per cui non credo che sia un problema di compatibilità.

    Non so che fare... sul serio...

  4. #4
    MMM...Secondo me session_register() che è una funzione deprecata se non sbaglio sulle versioni odierne non funge su le rev.recenti (se nn erro), prova a sostituirlo con $_SESSION, vedi che fa...

  5. #5
    Allora ragioniamo per esclusione:
    1. il problema non è nel codice
    2. il problema non è nelle versione del server
    quindi...
    ...il problema deve essere nel database!

    sei sicuro che quando fai
    Codice PHP:
    $num_rows mysql_num_rows($result); 
    if (
    $num_rows == '1') { 
    .... 
    $num_rows sia sempre 1?
    non è che 'admin', '123' compare più volte in tabella?

    fatti fare un
    echo $num_rows;
    per vedere se effettivamente è 1....

  6. #6
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    85
    Originariamente inviato da SkyBlue
    MMM...Secondo me session_register() che è una funzione deprecata se non sbaglio sulle versioni odierne non funge su le rev.recenti (se nn erro), prova a sostituirlo con $_SESSION, vedi che fa...
    Pomeriggio lo provo e vediamo che cosa fa... Anche se mi pare un comportamento troppo strano... mah...

    Originariamente inviato da philbert
    sei sicuro che quando fai

    codice PHP:

    $num_rows = mysql_num_rows($result);
    if ($num_rows == '1') {
    ....

    $num_rows sia sempre 1?
    non è che 'admin', '123' compare più volte in tabella?
    Sicuro al cento per cento. Anche perchè ho inserito altri username, ma in tutto saranno 5 o 6 username diversi, e non funziona neanche con gli altri username. E ti dico che il database l'ho esportato dal locale e importato sul server, con le stesse identiche tabelle e gli stessi record (che sono pochissimi perchè ancora sono in test). E ti dico anche che nella tabella "utenti" il campo username è stato impostato come UNIQUE, quindi è praticamente impossibile un username ripetuto.

    Sto per piangere... :'(

  7. #7
    Catturando gli header, al submit succede questo
    codice:
    HTTP/1.1 302 Moved Temporarily
    Prova a cambiare il form e l'action, anzichè "#", lasciala vuota

    codice:
    <form name="form_cds" action="" method="post">


  8. #8
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    85
    Ciao a tutti.
    Scusate se rispondo ora dopo un po ma ho avuto qualche problema.

    Ho scoperto qual'è il problema ma non riesco a trovare un modo per farlo funzionare, e vista la mia ignoranza, spero che qualcuno di voi mi aiuti a trovarlo.

    Il problema è questo:

    header("location: index.php?".$_SERVER['QUERY_STRING']);

    Ho provato in qualsiasi modo, sia index normale, sia #, ma non va. Se lo tolgo totalmente, come attualmente è stato fatto, funziona benissimo come deve funzionare, soltanto che dopo aver fatto il login, nella barra non compare nulla e devo aggiornare la pagina affinche funzioni.

    Vi rimando sempre: LINK
    Username: user
    Password: 123

    Vi dico anche come l'ho scoperto.
    Ho creato una pagina con SOLO la barra del login, e funzionava ALLA PERFEZIONE. E il punto è che funzionava anche con l'header:location, funzionava benissimo. Ma sul sito non funziona e per farlo andare devo togliere l'header.
    Quindi credo che il problema non sia nemmeno quello. Ma quale può essere? Aiuto!

  9. #9
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    85
    Ho risolto così:

    header( "refresh:1;url=index.php?".$_SERVER['QUERY_STRING']);

    Così funziona, non ho idea del perchè. Mah...

    Comunque grazie a tutti per l'aiuto.

  10. #10
    Originariamente inviato da Drummelo
    Ho risolto così:

    header( "refresh:1;url=index.php?".$_SERVER['QUERY_STRING']);

    Così funziona, non ho idea del perchè. Mah...

    Comunque grazie a tutti per l'aiuto.
    Perchè è la sintassi più corretta per header

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.