Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: LogIn sito e IE

  1. #1

    LogIn sito e IE

    Ciao a tutti,

    per il login del mio sito ho utilizzato questo script

    http://it.wikihow.com/Creare-uno-Scr...do-PHP-e-MySQL

    e funziona perfettamente..

    Tranne che non le versioni vecchie di Internet Explorer.

    c'è un motivo ?

  2. #2
    Quote Originariamente inviata da marste881 Visualizza il messaggio
    Ciao a tutti,

    per il login del mio sito ho utilizzato questo script

    http://it.wikihow.com/Creare-uno-Scr...do-PHP-e-MySQL

    e funziona perfettamente..

    Tranne che non le versioni vecchie di Internet Explorer.

    c'è un motivo ?
    posta il "tuo" codice, no quello dove l'hai preso

  3. #3
    Pagina di Login

    codice:
    <b>Modulo Log In</b><br /><br />
    
    
    <?php
    if(isset($_GET['error'])) { 
       echo 'Error Logging In!';
    }
    $p= "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    echo("<form action=\"".$p."&login=do method=\"get\" name=\"login_form\">");
    ?>
    	<table>
    	<input type="hidden" name="page" value="do" />
       <tr><td align="right">UserName</td><td> <input class="css-input" type="text" name="user" /></td></tr>
       <tr><td align="right">Password</td><td><input class="css-input" type="password" name="p" id="password"/></td></tr>
       
      <tr><td></td><td align="right"> <input type="button" class="submit" value="Login" onclick="formhash(this.form, this.form.password);" /></td></tr>
    </table></form>
    FUNCTION
    codice:
        function sec_session_start() {
            $session_name = 'sec_session_id'; // Imposta un nome di sessione
            $secure = false; // Imposta il parametro a true se vuoi usare il protocollo 'https'.
            $httponly = true; // Questo impedirà ad un javascript di essere in grado di accedere all'id di sessione.
            ini_set('session.use_only_cookies', 1); // Forza la sessione ad utilizzare solo i cookie.
            $cookieParams = session_get_cookie_params(); // Legge i parametri correnti relativi ai cookie.
            session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); 
            session_name($session_name); // Imposta il nome di sessione con quello prescelto all'inizio della funzione.
            session_start(); // Avvia la sessione php.
            session_regenerate_id(); // Rigenera la sessione e cancella quella creata in precedenza.
    }
    
    
    function login($email, $password, $mysqli) {
       // Usando statement sql 'prepared' non sarà possibile attuare un attacco di tipo SQL injection.
       if ($stmt = $mysqli->prepare("SELECT id, password, salt FROM members WHERE email = ? LIMIT 1")) { 
          $stmt->bind_param('s', $email); // esegue il bind del parametro '$email'.
          $stmt->execute(); // esegue la query appena creata.
          $stmt->store_result();
          $stmt->bind_result($user_id, $db_password, $salt); // recupera il risultato della query e lo memorizza nelle relative variabili.
          $stmt->fetch();
          $password = hash('sha512', $password.$salt); // codifica la password usando una chiave univoca.
          if($stmt->num_rows == 1) { // se l'utente esiste
             // verifichiamo che non sia disabilitato in seguito all'esecuzione di troppi tentativi di accesso errati.
             if(checkbrute($user_id, $mysqli) == true) { 
                // Account disabilitato
                // Invia un e-mail all'utente avvisandolo che il suo account è stato disabilitato.
                return false;
             } else {
             if($db_password == $password) { // Verifica che la password memorizzata nel database corrisponda alla password fornita dall'utente.
                // Password corretta!            
                   $user_browser = $_SERVER['HTTP_USER_AGENT']; // Recupero il parametro 'user-agent' relativo all'utente corrente.
     
                   $user_id = preg_replace("/[^0-9]+/", "", $user_id); // ci proteggiamo da un attacco XSS
                   $_SESSION['user_id'] = $user_id; 
                   $_SESSION['name'] = $email;
                   $_SESSION['login_string'] = hash('sha512', $password.$user_browser);
                   // Login eseguito con successo.
                   return true;    
             } else {
                // Password incorretta.
                // Registriamo il tentativo fallito nel database.
                $now = time();
                $mysqli->query("INSERT INTO login_attempts (user_id, time) VALUES ('$user_id', '$now')");
                return false;
             }
          }
          } else {
             // L'utente inserito non esiste.
             return false;
          }
       }
    }
    
    
    function checkbrute($user_id, $mysqli) {
       // Recupero il timestamp
       $now = time();
       // Vengono analizzati tutti i tentativi di login a partire dalle ultime due ore.
       $valid_attempts = $now - (2 * 60 * 60); 
       if ($stmt = $mysqli->prepare("SELECT time FROM login_attempts WHERE user_id = ? AND time > '$valid_attempts'")) { 
          $stmt->bind_param('i', $user_id); 
          // Eseguo la query creata.
          $stmt->execute();
          $stmt->store_result();
          // Verifico l'esistenza di più di 5 tentativi di login falliti.
          if($stmt->num_rows > 5) {
             return true;
          } else {
             return false;
          }
       }
    }
    function login_check($mysqli) {
       // Verifica che tutte le variabili di sessione siano impostate correttamente
       if(isset($_SESSION['user_id'],$_SESSION['login_string'])) {
         $user_id = $_SESSION['user_id'];
         $login_string = $_SESSION['login_string'];
           
         $user_browser = $_SERVER['HTTP_USER_AGENT']; // reperisce la stringa 'user-agent' dell'utente.
         if ($stmt = $mysqli->prepare("SELECT password FROM members WHERE id = ? LIMIT 1")) { 
            $stmt->bind_param('i', $user_id); // esegue il bind del parametro '$user_id'.
            $stmt->execute(); // Esegue la query creata.
            $stmt->store_result();
     
            if($stmt->num_rows == 1) { // se l'utente esiste
               $stmt->bind_result($password); // recupera le variabili dal risultato ottenuto.
               $stmt->fetch();
               $login_check = hash('sha512', $password.$user_browser);
               if($login_check == $login_string) {
                  // Login eseguito!!!!
                  return true;
               } else {
                  //  Login non eseguito
                  return false;
               }
            } else {
                // Login non eseguito
                return false;
            }
         } else {
            // Login non eseguito
            return false;
         }
       } else {
         // Login non eseguito
         return false;
       }
    }
    function user_check($mysqli) {
       // Verifica che tutte le variabili di sessione siano impostate correttamente
       if(isset($_SESSION['user_id'],$_SESSION['login_string'])) {
         $user_id = $_SESSION['user_id'];
         $login_string = $_SESSION['login_string'];
           
         $user_browser = $_SERVER['HTTP_USER_AGENT']; // reperisce la stringa 'user-agent' dell'utente.
         if ($stmt = $mysqli->prepare("SELECT password,admin FROM members WHERE id = ? LIMIT 1")) { 
            $stmt->bind_param('i', $user_id); // esegue il bind del parametro '$user_id'.
            $stmt->execute(); // Esegue la query creata.
            $stmt->store_result();
     
            if($stmt->num_rows == 1) { // se l'utente esiste
               $stmt->bind_result($password,$admin); // recupera le variabili dal risultato ottenuto.
               $stmt->fetch();
    
    
               $login_check = hash('sha512', $password.$user_browser);
               if($login_check == $login_string) {
                  // Login eseguito!!!!
                  return $admin;//ritorna tipo di utente
               } else {
                  //  Login non eseguito
                  return false;
               }
            } else {
                // Login non eseguito
                return false;
            }
         } else {
            // Login non eseguito
            return false;
         }
       } else {
         // Login non eseguito
         return false;
       }
    }

  4. #4
    Quando clicco sul pulsante di Submit dove inserisco user e pass, invece che invocare la giusta funzione crea sotto una casella di testo (solo IE Vecchio)

  5. #5
    noto già un errore nella pagina di login, ti posto il codice modificato, vedi se funziona, altrimenti vedi se da qualche errore

    codice:
    <b>Modulo Log In</b><br /><br />
    
    <?php
    if(isset($_GET['error'])) { 
       echo 'Error Logging In!';
    }
    $p= "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    echo '<form action='.$p.'?login=do" method="get" name="login_form">'; // QUI
    ?>
        <table>
        <input type="hidden" name="page" value="do" />
       <tr><td align="right">UserName</td><td> <input class="css-input" type="text" name="user" /></td></tr>
       <tr><td align="right">Password</td><td><input class="css-input" type="password" name="p" id="password"/></td></tr>
       
      <tr><td></td><td align="right"> <input type="button" class="submit" value="Login" onclick="formhash(this.form, this.form.password);" /></td></tr>
    </table>
    
    
    </form>
    Ultima modifica di phpneo; 02-09-2015 a 16:06

  6. #6
    Quote Originariamente inviata da phpneo Visualizza il messaggio
    noto già un errore nella pagina di login, ti posto il codice modificato, vedi se funziona, altrimenti vedi se da qualche errore

    codice:
    <b>Modulo Log In</b><br /><br />
    
    <?php
    if(isset($_GET['error'])) { 
       echo 'Error Logging In!';
    }
    $p= "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    echo '<form action='.$p.'?login=do" method="get" name="login_form">'; // QUI
    ?>
        <table>
        <input type="hidden" name="page" value="do" />
       <tr><td align="right">UserName</td><td> <input class="css-input" type="text" name="user" /></td></tr>
       <tr><td align="right">Password</td><td><input class="css-input" type="password" name="p" id="password"/></td></tr>
       
      <tr><td></td><td align="right"> <input type="button" class="submit" value="Login" onclick="formhash(this.form, this.form.password);" /></td></tr>
    </table>
    
    
    </form>

    hai sostituito gli apici?

    Comunque niente da fare.!

  7. #7
    ho aggiunto anche "?" al posto della "&" perchè altrimenti non ha senso

  8. #8
    Quote Originariamente inviata da phpneo Visualizza il messaggio
    ho aggiunto anche "?" al posto della "&" perchè altrimenti non ha senso
    Hai ragione.!!

    No continua a fare sempre lo stesso errore.. Crea proprio una textbox

  9. #9
    siamo sicuri che non sia il javascript usato il problema?

    io avrei fatto diversamente la procedura di login, e avrebbe funzionato anche con IE6

  10. #10
    Sinceramente non so programmare purtroppo in javascript, quindi ho cercato una "guida" che mi portasse al risultato scelto.

    Il javascript funziona ovunque tranne che in IE Vecchio (versione 6/8).

    Se hai consigli su come farlo in altro modo sono ben contento di ascoltarti.

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.