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

    [PHP]Problema strano sessioni

    Ciao a tutti, spero possiate aiutarmi.. Sul mio sito ognmi utente può loggarsi attraverso una pagina di login che manda i dati alal pagina index1.php. Questa pagina salva i dati in delle variabili di sessione. Inoltre in ogni altra parte del sito c'è un controllo della sessione. Ecco il codice:

    index1.php
    Codice PHP:
    session_start(); //..avviamo la sessione...
    //
    //Controlliamo se tutti i campi sono compilati
    //
    $username $HTTP_POST_VARS['username'];
    $password $HTTP_POST_VARS['password'];

    if(
    $username == "" || $password == "" //Se alcuni campi non sono compilati...
    {
    die(
    "Alcuni campi non sono compilati"); //...terminiamo lo script e mandiamo un errore all'utente
    }

    //
    //Recuperiamo i dati dal database e li controlliamo
    //

    $query "SELECT * FROM utenti WHERE username = '$username'"//Impostiamo la query...
    $risultato mysql_query($query//...e la eseguiamo
    or die("Impossibile eseguire query.
    "
    .mysql_error()); //Oppure mandiamo il solito errore
    $riga mysql_fetch_array($risultato); //Fissiamo la riga

    if(mysql_num_rows($risultato) == || $riga['password']!=$password//Se l'username o la password sono sbagliati...
        
    die("Username e/o password errati"); //..mandiamo l'errore e terminiamo lo script
    else //Altrimenti...
    {

    $_SESSION['username'] = $username//...e salviamo i dati in essa
    $_SESSION['password'] = $password;
    }
    /* e poi va avanti.... */ 
    controllo_dati su ogni pagina
    Codice PHP:
    session_start ();
        
    $username $_SESSION['username'];
        
    $password $_SESSION['password'];
        if (
    $username=="")
            die (
    "Non hai i diritti per accedere a questa pagina o la tua sessione è scaduta."); 
    Il problema che non riesco a risolvere, nè a capire, è che questo codice funziona, ma non sempre... Per esempio in Safari non funziona, cioè $_SESSION['username] è vuota... Succede lo stesso a volte in Firefox... Avreste un'idea???

  2. #2
    Nessuno ha qualche illuminazione?? C'è qualcosa di sbagliato nel codice??? HELPPPP

  3. #3
    prova a cambiare:
    Codice PHP:
    $username $HTTP_POST_VARS['username'];
    $password $HTTP_POST_VARS['password']; 
    con

    Codice PHP:
    $username $_POST['username'];
    $password $_POST['password']; 

  4. #4

    Re: [PHP]Problema strano sessioni

    io farei così

    Codice PHP:
    session_start(); //..avviamo la sessione...
    //
    //Controlliamo se tutti i campi sono compilati

    if($_POST['username']== "" || $_POST['password'] == "" 
    //Se alcuni campi non sono compilati...
    {
      die(
    "Alcuni campi non sono compilati"); //...terminiamo lo script e mandiamo un errore all'utente
    }

    //
    //Recuperiamo i dati dal database e li controlliamo
    //
    //controllo che non siano stati usati dei caratteri speciali
    //FONDAMENTALE PER EVITARE PROBLEMI CON QUALCHE FURBETTO!!
    $username=mysql_escape_string($_POST['username']);
    $password=mysql_escape_string($_POST['password']);

    //Impostiamo la query...
    $query "SELECT COUNT(*) n  FROM utenti WHERE username = '$username' AND password='$password' "
    $risultato mysql_query($query//...e la eseguiamo
    or die("Impossibile eseguire query.
    "
    .mysql_error()); //Oppure mandiamo il solito errore
    $find mysql_fetch_assoc($risultato); //Fissiamo la riga

    //se non c'è un utente con quei dati quindi login errata:
    if ($find['n']==0)
    {
      die(
    "Username e/o password errati"); //..mandiamo l'errore e terminiamo lo script
    }
    else 
    //Altrimenti...
    {
      
    $_SESSION['username'] = $username//...e salviamo i dati in essa  
      
    $_SESSION['password'] = $password;
    }
    /* e poi va avanti.... */ 
    mi raccomando il controllo su quello che viene inserito nel form di login per evitare attacchi sql injection !!!

    prova a vedere cosa succede così...
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  5. #5
    stefano, white.. Inanzittutto grazie... Purtroppo però il problema resta.... Cioè i parametri vengono passati tranquillamente (anche perchè altrimenti non riuscirebbe neanche a fare correttamente la query...) solo che non riesco a salvare le due variabili in sessione.. Non capisco davvero cosa ci sia di sbagliato.. Che poi su firefox, ie e opera (tutti provati in windows) funziona tutto, appena mi muovo su safari sul mac non va.. Arriva alla pagina index1 e poi appena si cambia pagina mi viene il messaggio d'errore...... aaaarggggggggghhhhhhhh

  6. #6
    cmq white, hai ragione sulla prevenzione degli attacchi sql injection, ma tanto è una community di amici miei e l'indirizzo non è pubblico... Uno ci entra soltanto se gli dò l'autorizzazione io...

  7. #7
    Ma i Cookie in safari sono abilitati?

    Hai provato a farlo testare ad altri che hanno safari?

  8. #8
    si si, i cookie sono abilitati... E tra l'altro lo faccio testare proprio agli altri visto che non ho il mac per testarlo io.. Su 4-5 persone che ce l'hanno, tutte hanno sto problema qua..

  9. #9

  10. #10
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da Nick083
    Arriva alla pagina index1 e poi appena si cambia pagina mi viene il messaggio d'errore......
    Come gliela cambi la pagina?

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.