Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problemi Login Logout Firefox

    Ciaoa tutti ho un problema strano.

    Con Firefox e IE se effettuo il login la prima volta mi riconosce . Esco e apparentemente tutto ok.
    Rientro con lo stesso user e password diversa : mi riconosce lo stesso.
    Esco e apparentemente esce.

    Sembrerebbe che non mi distrugga le sessioni o non so aiutatemi. Posto il codice.

    Ho un index.php (ha solo login e password ed un submit) che chiama homepage.php

    Contenuto homepage.php

    <?php
    //Includo i file per la connessione
    //e per la verifica Utente
    require_once('db_conn.php');
    require_once('datediff.php');
    require_once('verify.php');
    ?>

    html....
    <?php
    //testare la sessione
    echo @$login_err;

    //Controllo che l' utente sia loggato
    if(IsSet($_SESSION['logged'])){
    echo "

    Benvenuto utente: ".@$_SESSION['logged'][0];
    echo "
    Ultima Visita: ". date("d-m-Y H:i:s", @$_SESSION['logged'][1]);

    }else{
    echo "

    Attenzione...username o password errati !";
    echo "
    Effettua Login";
    }
    ?>
    ----Fine homepage.php

    Contenuto verify.php
    <?php
    //Avvio o continuo la sessione
    session_start();

    //Controllo che la sessione sia attiva
    if(!IsSet($_SESSION['logged'])){
    //Controllo se l' utente vuole loggarsi
    //Recupero i valori da una Form
    $username = @$_POST['txt_username'];
    $password = @$_POST['txt_password'];

    //Controllo se l' username e la password non sono vuoti
    if((!strlen($username) == 0) and (!strlen($password) == 0)){
    //Effettuo il controllo dei dati
    $strSQL = "SELECT * FROM tbl_users WHERE user_name = '".$username."'";
    $strSQL .= " AND user_pass = MD5('".$password."')";
    $result = mysql_query($strSQL);
    $row = mysql_fetch_row($result);
    //Controllo se l' utente e' stato trovato
    if(!strlen($row[0]) == 0){
    /*Effettuo il Login:
    * Array di sessione
    * Contenente UserID e LastAccess
    */
    $myArray = array($row[0], $row[3]);
    /*Controllo che l' utente non sia già attivo
    * Verifico che siano trascorsi almeno 5 minuti
    * dall' ultima connessione
    */
    if(fDateDiff($myArray[1], time(), 'm') <= 5){
    $login_err = "La sesssione per questo utente è ";
    $login_err .= "già attiva sul sito...
    ";
    $login_err .= "Attendi 5 minuti per ripetere il Login";
    }else{
    //Effettuo il Login
    $_SESSION['logged'] = $myArray;
    }
    }
    //Libero la memoria
    mysql_free_result($result);
    }
    }else{
    //Controllo se aggiornare l' ultima data di accesso
    if(fDateDiff($_SESSION['logged'][1], time(), 'm') > 5){
    $strSQL = "UPDATE tbl_users SET user_lastaccess = ".time();
    $strSQL .= " WHERE user_id = ".$_SESSION['logged'][0];
    //Aggiorno la sessione
    $_SESSION['logged'][1] = time();
    mysql_query($strSQL);
    }
    }

    if(@$_GET['logout'] == 1){ //Effettuo il Logout
    $_SESSION = array(); //Desetto tutte le variabili di sessione
    session_destroy(); //Distruggo le sessioni
    }
    ?>
    ---fine verify.php

    file datediff.php

    <?php
    /**
    * La funzione calcola la differenza tra due date
    * in formato UNIX TimeStamp
    * restituendo in output i giorni, le ore, i minuti e i secondi
    * di differenza (di default, restituisce i giorni)
    */
    function fDateDiff($dateFrom, $dateTo, $unit = 'd')
    {
    $difference = null;

    $date1 = $dateFrom;
    $date2 = $dateTo;

    if( $date1 > $date2 ){
    return null;
    }

    $diff = $date2 - $date1;

    $days = 0;
    $hours = 0;
    $minutes = 0;
    $seconds = 0;

    if ($diff % 86400 <= 0){ // Ci sono 86400 secondi in un giorno
    $days = $diff / 86400;
    }

    if($diff % 86400 > 0){
    $rest = ($diff % 86400);
    $days = ($diff - $rest) / 86400;

    if($rest % 3600 > 0 ){
    $rest1 = ($rest % 3600);
    $hours = ($rest - $rest1) / 3600;

    if( $rest1 % 60 > 0 ){
    $rest2 = ($rest1 % 60);
    $minutes = ($rest1 - $rest2) / 60;
    $seconds = $rest2;
    }else{
    $minutes = $rest1 / 60;
    }
    }else{
    $hours = $rest / 3600;
    }
    }

    //In quel unità restituire
    //la differenza ?
    switch($unit){
    case 'd':
    case 'D':
    $partialDays = 0;
    $partialDays += ($seconds / 86400);
    $partialDays += ($minutes / 1440);
    $partialDays += ($hours / 24);
    $difference = $days + $partialDays;
    break;

    case 'h':
    case 'H':
    $partialHours = 0;
    $partialHours += ($seconds / 3600);
    $partialHours += ($minutes / 60);
    $difference = $hours + ($days * 24) + $partialHours;
    break;

    case 'm':
    case 'M':
    $partialMinutes = 0;
    $partialMinutes += ($seconds / 60);
    $difference = $minutes + ($days * 1440) + ($hours * 60) + $partialMinutes;
    break;

    case 's':
    case 'S':
    $difference = $seconds + ($days * 86400) + ($hours * 3600) + ($minutes * 60);
    break;

    case 'a':
    case 'A':
    $difference = array (
    "days" => $days,
    "hours" => $hours,
    "minutes" => $minutes,
    "seconds" => $seconds
    );
    break;
    }
    //Ritorno la differenza
    return round($difference);
    }
    ?> //fine

    Secondo me c'è un problema nel verify ma non so cosa è?


    Mi aiutate grazie !!!

  2. #2
    prova ad usare session_unset() oltre a $_SESSION = array(); è l'unica cosa che mi viene in mente.

    P.S. se posti del codice utilizza il TAG di BBCode PHP per colorarlo

  3. #3
    ora provo grazie.


    Circa iltag del colore per il codice ???? come devo fare???

  4. #4
    ok ho provato e la prima volta che effettuo il login se sbaglio password non mi fa entrare: OK

    La seconda volta che mi logoo con user e password corrette mi fa entrare.

    La terza volta che mi loggo con lo stesso user ma con password diversa mi fa entrare lo stesso.

    Com'è possibile?


    Aiuto Aiuto

  5. #5
    togli gli underscore da quello che scrivo:

    [_PHP_]

    //Codice PHP
    $var = "Ciao";

    echo $var;

    [_/PHP_]


    Il codice poi viene visualizzato così:

    Codice PHP:

    //Codice PHP
    $var "Ciao";

    echo 
    $var
    E puoi anche metterci l'Indent a sinistra, lasciando lo spazio

  6. #6
    ok grazie.


    Per il codice ti viene in mente nulla?

    E'veramente urgente non so che pesci prendere.

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.