Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [PHP] Auto Login

  1. #1
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165

    [PHP] Auto Login

    Salve, mi dite come mai se faccio o meglio se premo il checkbox per far rimanere l'utente connesso ci rimane?

    ed invece senza fare il checkbox non mi fa entrare nell'area riservata?

    Vi posto il codice , Questo lo sto facendo io da zero prendendo spunto su internet:


    questa la mem non mi riesce ad fare che quando non hanno fatto login
    deve venire Accesso non consentito , ma non lo fa.

    Mi potete dire come modificare per far venire il messaggio quando uno non e connesso
    ne con i login normale e ne con l'autologin.

    ecco mem.php (Area riservata)
    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    dirname(__FILE__) . '/check.php');
    if(
    $usern != "" && $userid != "")
    {
    echo 
    "Accesso non consentito";
    }else{
    echo 
    $userid;
    echo 
    $usern;
    echo 
    $_SESSION["username"];
    echo 
    $_SESSION["user_id"];

    }
    ?>
    login.php
    Codice PHP:
    <?php
    require_once(dirname(__FILE__) . '/../inc.php');

        if(isset(
    $_POST['aggiorna']))
        {
            if(
    $_POST['username']!='' && $_POST['password']!='')
            {
                    
    $query mysql_query('SELECT * FROM users WHERE Username = "'.mysql_real_escape_string($_POST['username']).'" AND Password = "'.mysql_real_escape_string(md5($_POST['password'])).'"');
                
                if(
    mysql_num_rows($query) == 1)
                {
                    
    $row mysql_fetch_assoc($query);
                    if(
    $row['Active'] == 1)
                    {
                        
    session_start();
                        
                        
    $_SESSION['user_id'] = $row["ID"];
                        
    $_SESSION['username'] = $row["Username"];
                
                        
                            if(isset(
    $_POST["autolog"]) == 1){
                                
    setcookie('autolog','loggato',time()+864000);
                                
    setcookie('user',$row["Username"],time()+864000);
                                
    setcookie('user_id',$row["ID"],time()+864000);
                            
                                }
                        
                        
                        
    header("Location: mem.php");
                    }
                    else {
                        
    $error 'Your membership was not activated. Please open the email that we sent and click on the activation link';
                    }
                }
                else {        
                    
    $error 'Login failed !';        
                }
            }
            else {
                
    $error 'Please user both your username and password to access your account';
            }
        }
    ?>

    <?php if(isset($error)){ echo $error;}?>
    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
        User<input type="text" id="username" name="username" size="32" value="" />
        Pass<input type="password" id="password" name="password" size="32" value="" />
        Ricordami <input type="checkbox" name="autolog" value="1"/>
        <input type="submit" name="aggiorna" value="Login" />
    </form>
    e il check dove devo far entrare le persone ad esempio sta nel mem.php

    check.php
    Codice PHP:
    <?php
    session_start
    ();
    if (!isset(
    $_SESSION['username']) && !isset($_SESSION['password']) && !isset($_SESSION["user_id"])) {
        
    $loggato 0//NON loggato
     
        
    }else {
            
    $loggato 1;  //LOGGATO!
        
    }
    if(
    $_COOKIE['autolog'] == 1){
        
    $_SESSION['username'] = $_COOKIE['user'];
      
        
    $_SESSION['user_id']  = $_COOKIE["user_id"];
        
    $loggato 1;
        
    //rinfresca cookies
        
    $usern $_SESSION['username'];

        
    $userid $_SESSION['user_id'];
       
        
    setcookie('autolog','loggato',time()+864000);
        
    setcookie('user',$usern,time()+864000);
        
    setcookie('user_id',$userid,time()+864000);
        
                        
        }
    ?>
    In poche parole devo entrare sempre cliccando sul chekbox senza non mi fa entrare.

    Mi date una mano?

  2. #2
    Il problema dovrebbe essere semplicemente in questo
    Codice PHP:
    if(isset($_POST["autolog"]) == 1){ 
    che inveve dovrebbe essere
    Codice PHP:
    if(isset($_POST["autolog"]) and $_POST["autolog"] == 1){ 
    Inoltre nel controllo tu verifichi l'esistenza anche di
    Codice PHP:
    $_SESSION['password'
    che però non viene settata da nessuna parte.
    Oltre questo, non basta dire
    Codice PHP:
    if($_COOKIE['autolog'] == 1){ 
    perchè devi prima recuperarlo, il cookie, nel modo giusto.
    Tu lo crei come
    Codice PHP:
    setcookie('autolog','loggato',time()+864000); 
    ma lo recuperi con
    Codice PHP:
    $_COOKIE['autolog'
    che NON ti ritorna quello che ti aspetti.
    Ricontrolla per bene, sistema le imprecisioni e riprova


  3. #3
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165
    grazie mille, ma era l'area riservata che non funzionava:

    facendo cosi:

    <?php
    session_start();
    require_once(dirname(__FILE__) . '/check.php');

    if(isset($usern)&& isset($userid) || isset($_SESSION["username"]) && isset($_SESSION["user_id"]))
    {
    ?>
    <?php echo $usern;?>
    <?php echo $userid;?>

    <?php
    echo $_SESSION["username"];
    echo $_SESSION["user_id"];

    }else{
    echo "Accesso non consentito";
    }
    >

    funziona.

    al meno spero.

    poi se ho problemi ritorno di nuovo.

    grazie mille.

  4. #4
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165
    scusa, ma come mai il cookie funziona solo nella cartella membri/ del sito e non anche nella cartella
    admin/mem.php ?

    Ho messo il solito codice:
    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    dirname(__FILE__) . '/../membri/check.php');
    if(isset(
    $usern)&& isset($userid) || isset($_SESSION["username"]) && isset($_SESSION["user_id"]))
    {
    ?>
     [b]<?php echo $usern;?>[/b]
     [b]<?php echo $userid;?>[/b]
     
    <?php
    echo $_SESSION["username"];
    echo 
    $_SESSION["user_id"];

    }else{
    echo 
    "Accesso non consentito";
    }
    ?>
    nella cartella admin/ ... mi visualizza solo le sezioni e non i cookie

    e se ritorno nella cartella membri/ mi visualizza sia i cookie e le sezioni?

    Idee?

    come mai?

    grazie.

  5. #5
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165
    nessuno che sa il motivo dei cookie che non vengono letti nella cartella admin/ ?

    Aspetto risposta.

    saluti
    buona giornata.

  6. #6
    probabilmente vengono riscritti o resettati...
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  7. #7
    O probabilmente non vengono settati correttamente. I cookie infatti hanno anche una bellissima proprietà che indica il path in cui sono validi (e una per il dominio). Se NON settata, assume SOLO la directory corrente...

    php.net/manual/en/function.setcookie.php


  8. #8
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165
    Originariamente inviato da Dascos
    O probabilmente non vengono settati correttamente. I cookie infatti hanno anche una bellissima proprietà che indica il path in cui sono validi (e una per il dominio). Se NON settata, assume SOLO la directory corrente...

    php.net/manual/en/function.setcookie.php

    si era il path che non ho messo ed dopo messo quello e ha funzionato ed ora ho anche l'autologin.

    grazie mille,

    ed ho risolto.
    buona serata.

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.