Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 36
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    40

    Passare da cookie a session

    Salve a tutti!!
    mi ritrovo a scrivere in questo forum perchè mi sono trovato dinanzi a questo problema:
    ho trovato in internet uno script per l'accesso a area privata (login), questo funziona ma ha il problema che non utilizza le sessioni ma i cookie..
    io non sono molto pratico di php e vorrei sapere se c'era un modo per passare da cookie a sessions visto che i tempi di eliminazione dei cookie sono bassi e comunque non vorrei che chi si logga dopo un pò viene fatto uscire...
    vi posto il codice:

    codice:
    <?php 
    // Connects to your Database 
    mysql_connect("localhost", "", "") or die(mysql_error()); 
    mysql_select_db("") or die(mysql_error()); 
    
    //Checks if there is a login cookie
    if(isset($_COOKIE['ID_my_site']))
    
    //if there is, it logs you in and directes you to the members page
    {
    $username = $_COOKIE['ID_my_site']; 
    $pass = $_COOKIE['Key_my_site'];
    $check = mysql_query("SELECT * FROM tbl_cliente WHERE user = '$username'")or die(mysql_error());
    while($info = mysql_fetch_array( $check )) 
    {
    if ($pass != $info['password']) 
    {
    }else{
    $check = mysql_query("SELECT * from tbl_cliente where id_cliente=".$id_cliente." ")or die(mysql_error());
    mysql_fetch_array($check);
    header ("Location: ordine_lavaggio.php?id_cliente=$id_cliente");
    }
    }
    }
    
    //if the login form is submitted
    if (isset($_POST['submit'])) { // if form has been submitted
    
    // makes sure they filled it in
    if(!$_POST['username'] | !$_POST['pass']) {
    die('Non hai riempito tutti i campi.');
    }
    // checks it against the database
    
    if (!get_magic_quotes_gpc()) {
    $_POST['email'] = addslashes($_POST['email']);
    }
    $check = mysql_query("SELECT * FROM tbl_cliente WHERE user = '".$_POST['username']."'")or die(mysql_error());
    
    //Gives error if user dosen't exist
    $check2 = mysql_num_rows($check);
    if ($check2 == 0) {
    die('Utente non registrato. ');
    }
    while($info = mysql_fetch_array( $check )) 
    {
    $_POST['pass'] = stripslashes($_POST['pass']);
    $info['password'] = stripslashes($info['password']);
    $_POST['pass'] = md5($_POST['pass']);
    
    //gives error if the password is wrong
    if ($_POST['pass'] != $info['password']) {
    die('Password non corretta, riprovare..');
    }
    else 
    { 
    
    // if login is ok then we add a cookie 
    $_POST['username'] = stripslashes($_POST['username']); 
    $hour = time() + 3600; 
    setcookie(ID_my_site, $_POST['username'], $hour); 
    setcookie(Key_my_site, $_POST['pass'], $hour); 
    
    } 
    } 
    } 
    else 
    { 
    
    // if they are not logged in 
    ?> 
    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> 
    <table border="0"> 
    <tr><td colspan=2><h1 align="center">Login</h1></td></tr> 
    <tr><td>Username:</td><td> 
    <input type="text" name="username" maxlength="40"> 
    </td></tr> 
    <tr><td>Password:</td><td> 
    <input type="password" name="pass" maxlength="50"> 
    </td></tr> 
    <tr>
      <td colspan="2" align="right"><input type="submit" name="submit" value="Login" /></td>
    </tr>
    <tr><td colspan="2" align="right">Registati! || Password dimenticata? </td></tr> 
    </table> 
    </form> 
    <?php 
    } 
    
    ?>
    Sono sicuro che ci siano tanti altri errori dello script, ma a me basta sapere come fare per "tramutare" i cookie a session...
    Grazie a tutti in inticipo per il vostro aiuto!

  2. #2
    non si tramutano i cookie con le sessioni...sono cose diverse



    $_SESSION['nome'] = $valore;

    nulla di +


    Non puoi usare un login che utilizza i cookie ... devi farne 1 apposito basato sulle sessioni

    esempio:
    codice:
    $email = $_POST['user'];
    $password = $_POST['password'];
    
    $sql = "SELECT * FROM tabella WHERE email = '$email' AND password = '$password'";
    $result = mysql_query($sql);
    $numrows = mysql_num_rows($result);
    
    if($numrows == '1')
    {
    $_SESSION['login'] = 'dato in sessione';
    header('Location: tuapagina.php');
    }else{
    header('Location: errore.php');
    }

  3. #3
    Ovvio che poi vanno cambiati anche i controlli per questo tipo di login e controlli sulla sessione etc...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    40
    grazie per la tua risposta!
    quindi così come dici dovrebbe funzionare?
    cioè se copio il cofice dovrebbe andare bene??

  5. #5
    Utente di HTML.it L'avatar di polinet
    Registrato dal
    Nov 2000
    Messaggi
    993
    in questo caso $numrows, da come risultato "solo" il primo recordset che trova.
    if($numrows == '1')
    {
    // ?
    }
    ¿Hasta la pasta?

  6. #6
    Originariamente inviato da polinet
    in questo caso $numrows, da come risultato "solo" il primo recordset che trova.
    if($numrows == '1')
    {
    // ?
    }


    Uff....

    ?? polinet ... non ho capito, la tua è una domanda o una affermazione?

    allora
    $numrows è = a quanti record la query ha trovato .... è un contatore... per cui può essere = a 1000 come a 10 etc...

    if($numrows == '1') <--- è un SE ...se mia nonna vola allora io divento ricco...

    codice:
    if($numrows == '1')
    {
    $_SESSION['login'] = 'dato in sessione';
    header('Location: tuapagina.php');
    }else{
    header('Location: errore.php');
    }
    ora traduco quello in italiano

    codice:
    -SE $numrows è uguale a 1- <--- ad uno ..ma non per forza il primo e/o il secondo
    allora valorizza la sessione login 
    e fai il redirec alla tua pagina
    -altrimenti-
    fai il redirect ad una pagina di errore
    FINE SE
    Ripeto POLINET la tua era una domanda o una affermazione? ...credo tu ti sia dimenticato il > ?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    40
    Grazie a tutti peer le risposte...
    il pronlema è che ora la pagina login deve inviare alla pagina ordine lavaggio l'id_cliente della persona che si è loggata...
    come fare per inserire l'id in una variabile passarla alla pagina ordine_lavaggio.php??

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    40
    Raga non mi funziona....ho provato a fare in questo modo:
    codice:
    if (isset($_POST['submit'])) {
    $user = $_POST['username'];
    $password = $_POST['password'];
    
    $sql = "SELECT * FROM tbl_cliente WHERE user = '$user' AND password = '$password'";
    $result = mysql_query($sql);
    $numrows = mysql_num_rows($result);
    if($numrows == '1')
    {
    
    session_start();
    $_SESSION['login'] = $_POST['username'];
    header('Location: tuapagina.php');
    }else{
    header('Location: errore.php');
    }
    }
    ?>
    ma il risultato è che mi manda alla pagina errore.php....secondo voi cosa c'è che non va??

  9. #9
    Se ti manda alla pagina errore vuol dire che l'IF ha il suo senso e nella query non trovi nulla, per cui
    $numrows NON è UGUALE A 1 ...

    posso sapere lo user e la password di test..?

    se proprio aggiungi ai post
    mysql_real_escape_string
    ma non credo che sia quello il prob...
    fai così per cui


    codice:
    $user = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);
    
    $sql = "SELECT * FROM tbl_cliente WHERE user = '$user' AND password = '$password'";
    $result = mysql_query($sql);
    $numrows = mysql_num_rows($result);
    
    echo $sql.'
    '.$numrows;
    
    /*
    if($numrows == '1')
    {
    session_start();
    $_SESSION['login'] = $_POST['username'];
    header('Location: tuapagina.php');
    }else{
    header('Location: errore.php');
    }
    */
    copia e incolla e dimmi cosa stampa...
    altra cosa...
    togli if (isset($_POST['submit'])) {

    fai una validazione JS quando spedisci da form dei campi

  10. #10
    L'ID di chi si è loggato lo metti in sessione e leggi la sessione

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.