Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    309

    script autenticazione utenti

    ciao a tutti

    allora mi trovo in questa situazione:
    sto usando uno script semplice semplice, dove l'utente inserisce username, password e tramite query controllo nel DB se è registrato. Se è ok, lo reindirizzo a una oagina (index.php) altrimenti lo invito a registrarsi. Fin qua tutto ok... il problema è che quando un utente effetua il login, e poi con il pulsante del browser ritorna indietro, compare cmq la pagina del login, nonostante esso sia gia loggato (oddio spero di spiegarmi bene...) vorrei che se ha eseguito correttamente il login, verrà visualizzato un menu speciale SOLO con un oulsante o link ESCI E DISCONNETTI DAL SITO (osimili...) non la form per il login, è davvero BRUTTO. Il sitino è così strutturato:

    prima pagina - index.php
    (effetua il controllo per vedere se l'utente è loggato)

    pagina di login - login.php
    (include un menu contenente la form per il login)

    vi posto le pagine magari è meglio della mia elementarissima spiegazione

    index.php:
    Codice PHP:
    <?php
    require_once('inc/constring.php');
    include(
    'whoyou.php');


    echo 
    "<html>
    ecc... ecc...
    </html>"
    ;
    ?>

    login.php
    Codice PHP:
    <?php
    require_once('inc/constring.php');
    require_once(
    'inc/stile.php');


    if (!
    function_exists("GetSQLValueString")) {
    function 
    GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
    {
      
    $theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

      
    $theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

      switch (
    $theType) {
        case 
    "text":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;    
        case 
    "long":
        case 
    "int":
          
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case 
    "double":
          
    $theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
          break;
        case 
    "date":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;
        case 
    "defined":
          
    $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
          break;
      }
      return 
    $theValue;
    }
    }

    ?>
    <?php

    if (!isset($_SESSION)) {
      
    session_start();
    }

    $loginFormAction $_SERVER['PHP_SELF'];
    if (isset(
    $_GET['accesscheck'])) {
      
    $_SESSION['PrevUrl'] = $_GET['accesscheck'];

    }

    if (isset(
    $_POST['user'])) {
      
    $loginUsername=$_POST['user'];
      
    $password=$_POST['password'];
      
    $MM_fldUserAuthorization "";
      
    $MM_redirectLoginSuccess "index.php";
      
    $MM_redirectLoginFailed "loginerror.php";
      
    $MM_redirecttoReferrer false;
      
    mysql_select_db($database_constring$constring);
      
      
    $LoginRS__query=sprintf("SELECT username, password FROM login WHERE username=%s AND password=%s",
        
    GetSQLValueString($loginUsername"text"), GetSQLValueString($password"text")); 
       
      
    $LoginRS mysql_query($LoginRS__query$constring) or die(mysql_error());
      
    $loginFoundUser mysql_num_rows($LoginRS);
      if (
    $loginFoundUser) {
         
    $loginStrGroup "";
        
        
    $_SESSION['MM_Username'] = $loginUsername;
        
    $_SESSION['MM_UserGroup'] = $loginStrGroup;          

        if (isset(
    $_SESSION['PrevUrl']) && false) {
          
    $MM_redirectLoginSuccess $_SESSION['PrevUrl'];    
        }
        
    header("Location: " $MM_redirectLoginSuccess );

      }
      else {
        
    header("Location: "$MM_redirectLoginFailed );

      }
    }





    echo 
    "<html>

    <head>
    ecc... ecc...
    </html>"
    ;
    ?>
    poi la pagina whoypu.php:
    Codice PHP:
    <?php
    if (!isset($_SESSION)) {
      
    session_start();
    }

    // ** Logout 2 **
    $logoutAction2 $_SERVER['PHP_SELF']."?doLogout2=true";
    if ((isset(
    $_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
      
    $logoutAction2 .="&"htmlentities($_SERVER['QUERY_STRING']);
    }

    if ((isset(
    $_GET['doLogout2'])) &&($_GET['doLogout2']=="true")){
      
    //to fully log out a visitor we need to clear the session varialbles
      
    $_SESSION['MM_Username'] = NULL;
      
    $_SESSION['MM_UserGroup'] = NULL;
      
    $_SESSION['PrevUrl'] = NULL;
      unset(
    $_SESSION['MM_Username']);
      unset(
    $_SESSION['MM_UserGroup']);
      unset(
    $_SESSION['PrevUrl']);
        
      
    $logoutGoTo2 "index.php";
      if (
    $logoutGoTo2) {
        
    header("Location: $logoutGoTo2");
        exit;
      }
    }

    // ** Logout the current user. **
    $logoutAction $_SERVER['PHP_SELF']."?doLogout=true";
    if ((isset(
    $_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
      
    $logoutAction .="&"htmlentities($_SERVER['QUERY_STRING']);
    }

    if ((isset(
    $_GET['doLogout'])) &&($_GET['doLogout']=="true")){
      
    //to fully log out a visitor we need to clear the session varialbles
      
    $_SESSION['MM_Username'] = NULL;
      
    $_SESSION['MM_UserGroup'] = NULL;
      
    $_SESSION['PrevUrl'] = NULL;
      unset(
    $_SESSION['MM_Username']);
      unset(
    $_SESSION['MM_UserGroup']);
      unset(
    $_SESSION['PrevUrl']);
        
      
    $logoutGoTo "index.php";
      if (
    $logoutGoTo) {
        
    header("Location: $logoutGoTo");
        exit;
      }
    }
    ?>
    <?php
    if (!isset($_SESSION)) {
      
    session_start();
    }
    $MM_authorizedUsers "";
    $MM_donotCheckaccess "true";

    // *** Restrict Access To Page: Grant or deny access to this page
    function isAuthorized($strUsers$strGroups$UserName$UserGroup) { 
      
    // For security, start by assuming the visitor is NOT authorized. 
      
    $isValid False

      
    // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
      // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
      
    if (!empty($UserName)) { 
        
    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
        // Parse the strings into arrays. 
        
    $arrUsers Explode(","$strUsers); 
        
    $arrGroups Explode(","$strGroups); 
        if (
    in_array($UserName$arrUsers)) { 
          
    $isValid true
        } 
        
    // Or, you may restrict access to only certain users based on their username. 
        
    if (in_array($UserGroup$arrGroups)) { 
          
    $isValid true
        } 
        if ((
    $strUsers == "") && true) { 
          
    $isValid true
        } 
      } 
      return 
    $isValid
    }

    $MM_restrictGoTo "login.php";
    if (!((isset(
    $_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers$_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
      
    $MM_qsChar "?";
      
    $MM_referrer $_SERVER['PHP_SELF'];
      if (
    strpos($MM_restrictGoTo"?")) $MM_qsChar "&";
      if (isset(
    $QUERY_STRING) && strlen($QUERY_STRING) > 0
      
    $MM_referrer .= "?" $QUERY_STRING;
      
    $MM_restrictGoTo $MM_restrictGoTo$MM_qsChar "accesscheck=" urlencode($MM_referrer);
      
    header("Location: "$MM_restrictGoTo); 
      exit;
    }
    ?>
    spero di essermi spiegata bene, grazie a tutti in anticipo
    Gina

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    e meno male che era semplice

    io di solito utilizzo uan sola pagina per fare entrambe le operazioni
    esempio:

    index.php

    // contiene il form per loggarsi
    // e se inviato effettua un check sempre dentro index.php

    in teoria basterebbe fare un check sempre dentro index.php
    se si è loggati o meno non permettendo la memorizzazione in cache.
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    309
    io non sono molto pratica, tra i tanti che ho trovato in rete questo è l'unico che con riuscita a far funzionare!

    sapresti consigliarmi eventualmente qualcosa di carino e personalizzabile? (e che funzioni sopratutto!)

  4. #4
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    vai nella sezione pillole...

    http://forum.html.it/forum/showthrea...hreadid=412253

    e prendine una
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    309
    bene, ho quasi risolto, mi serve solo un piccolo aiuto:

    ora ho fattocosì; ottengo l'indirizzo ip durante il login e lo inserisco nel DB in un campo che ho chiamato IP. Automaticamente lo memorizzo in una sessione, assieme a username, password. Al logout viene cancellato l'indirizzo ip dal DB, se poi l'utente chiude senza effettuare il logout, la sessione scade in automatico dopo un pò. per verificare se è già loggato, uso questo codice:

    Codice PHP:
    $ip_verifica=$_SERVER['REMOTE_ADDR']; 

    $sql "SELECT ip FROM  login WHERE  (ip='$ip_verifica')";

        
    $risultato mysql_query($sql);

        if (!
    $risultato) {
            echo 
    "Fallimento nell'esecuzione della query ($sql) dal DB: " mysql_error();
            exit;
        }

        while (
    $riga mysql_fetch_assoc($risultato)) {

        
    $ip=$riga["ip"];


    if (
    $ip !='$ip_verifica') {
        echo 
    "NON sei loggato";
    } else {
        echo 
    "sei loggato";
    }

    però c'è qualcosa che nn va perchè negli ultimi echo, non mi visualizza niente, ne sei loggato, ne non sei loggato. come mai??

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    579
    il motivo , perchè non ricevi nessuna risposta e perchè l'if è all'interno del while

    cioè :

    Codice PHP:

       
    while ($riga mysql_fetch_assoc($risultato)) { 

          
    $ip=$riga["ip"]; 


                if (
    $ip !='$ip_verifica') { 
                      echo 
    "NON sei loggato"
                } else { 
                      echo 
    "sei loggato"

                } 
        } 
    mentre dovrebbe essere così

    Codice PHP:

       
    while ($riga mysql_fetch_assoc($risultato)) { 

          
    $ip=$riga["ip"]; 

        }


                if (
    $ip !='$ip_verifica') { 
                      echo 
    "NON sei loggato"
                } else { 
                      echo 
    "sei loggato"

                } 
    comunque per facilitarti il tuo ti consiglio di usare qualche script già fatto:

    http://www.ebug.it/?p=43

    http://www.mrwebmaster.it/php/artico...login_140.html

    ciao
    l'uomo è tutto ciò che non può essere

    http://www.ebug.it Discussioni da web Designer

    http://www.ebug.it/?p=354 e Dart Fener dove lo mettiamo lol

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    309
    grazie per la risposta!

    ora do uno sguardo

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    309
    allora, dal primo link, ho copiato esattamente tutto come riportato e mi da 3 errori...

    Notice: Undefined index: user in D:\wamp\www\2\index.php on line 34

    Notice: Undefined index: pass in D:\wamp\www\2\index.php on line 35

    Notice: Undefined index: login in D:\wamp\www\2\index.php on line 38

    con il secondo, non visualizza niente.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    309
    uff ho premuto invia senza scrivere lo script di index.php del primo link:

    Codice PHP:
    <?php
    //variabili di connessione
    $db_host ='localhost';
    $db_user ='root';
    $db_password ='';
    $db_name ='fdl';

    //connetto il database
    $db mysql_connect($db_host$db_user$db_password) or die ('Errore durante la connessione');
    mysql_select_db($db_name$db) or die ('Errore durante la selezione del db');
    ?>
    <html>
    <head>
    <title>Pagina di Prova Login in Php e Mysql</title>
    </head>
    <body>

    <form action='<? $_SERVER[PHP_SELF]; ?>?login=ok' method='POST'>

    [b]Username[/b]

    <input type='text' name='user'>

    [b]Password[/b]

    <input type='password' name='pass'>


    <input type='submit' value='Effettua il login'>


    </form>

    <?php

    // recupero di valori inviati dal form: user e pass

    $user $_POST['user'];
    $pass $_POST['pass'];

    $risp "ok";
    $login $_GET['login'];

    // questo serve per evitare di ricevere subito un messaggio dallo script

    if ( $login == $risp ) {

    // controllo che entrambi i valori siano stati compilati

    if ( $user && $pass ) {

    // effettuo l'escape per i valori speciali per evitare problemi con le query

    $user mysql_real_escape_string($user);
    $pass mysql_real_escape_string($pass);

    // preparo una query cioè una richiesta al database che vede se esistono i valori appena inseriti nella 

    tabella creata precedentemente

    $sql 
    "SELECT id FROM tabella_login WHERE username = '$user' AND password = MD5('$pass')";
    $res mysql_query($sql) or die (mysql_error());

    // ora se i dati inseriti sono quelli esatti presenti all'interno della tabella possiamo far effettuare il login

    if ( $res == TRUE ) {

    // ora creo una sessione con l'id dell'utente  che lo farà restare connesso tutto il tempo della navigazione 

    alle pagine protette da login


    while($row mysql_fetch_array($res)) {

    session_start();

    $idutente $row['idutente'];

    $nomeutente $row['username'];

    $_SESSION['id_utente'] = $idutente;

    $_SESSION['nome_utente'] = $nomeutente;

    // e infine reindirizzo l'utente nella pagina protetta da login

    header("location: paginasegreta.php");


    }


    }



    echo 
    "Username o Password non corrette";





    } else {

    echo 
    "Non sono stati compilati tutti i dati obbligatori";


    }

    }


    ?>


    </body>
    </html>
    lavoro in locale, non credo che sia questo il problema!

  10. #10
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    La select contiene solo l'id e diconseguenza quando cerchi di accedere ai campi cn l'index ti da errore, minimo devi cambiare id cn *. Ma funziona la query?
    il session_start lo toglierei dal while. Cmq è starno sto while, x me ce qualcosa che nn torna.
    Per gli Spartani e Sparta usa spartan Il mio github

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.