Visualizzazione dei risultati da 1 a 7 su 7

Discussione: area privata

  1. #1

    area privata

    Salve a tutti....

    come da titolo, ho problemi con la mia area privata.... premetto che nn sono un programmatore e mi diletto un po' con il php........ e il problema fondamentale è riprendere lavori vecchi e riadattarli...
    tempo fa ho trovato un script per il login e relativa area privata e funziona benissimo, solo che adesso devo aggiungere pagine e mi da sempre errore.....

    il form dove inserisco usr e psw mi rimanda alla pagina

    autentica.php
    Codice PHP:
    <?php
    session_start
    (); //..avviamo la sessione...
    require_once('Connections/miaConnessione.php');

    $username_post=mysql_escape_string($_POST['user']);
    $password_post=mysql_escape_string($_POST['psw']);

    //Controlliamo se tutti i campi sono compilati

    if($_POST['user']== "" || $_POST['psw'] == "" )
    //Se alcuni campi non sono compilati...
    {
      die(
    "Alcuni campi non sono compilati.

    <a href=\"javascript:history.back(1)\">Torna indietro</a>"
    ); //...terminiamo lo script e mandiamo un errore all'utente
    }

    //Impostiamo la query...
    mysql_select_db($database_miaConnessione$miaConnessione);
    $query "SELECT * FROM clienti WHERE user = '$username_post' AND psw = '$password_post' ";
    $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

    $_SESSION['user'] = $username_post;
    $_SESSION['psw'] = $password_post;

    //se non c'è un utente con quei dati quindi login errata:
    if ($find == 0)
    {
        
    header ("Location: error.php");
        exit;
    }
    else {
        
    header ("Location: area_riservata.php?utente=$find[id]");
        exit;
    }
    ?>
    area_riservata.php
    Codice PHP:
    <?php 
        session_start 
    ();
        
        
    $username $_SESSION['user'];

        if (
    $_SESSION['user']=="")
            
    header ("Location: error.php");
            
    ?>
    <?php 
    require_once('Connections/miaConnessione.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function 
    GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
    {
      if (
    PHP_VERSION 6) {
        
    $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;
    }
    }

    $colname_entra "-1";
    if (isset(
    $_GET['utente'])) {
      
    $colname_entra $_GET['utente'];
    }
    mysql_select_db($database_miaConnessione$miaConnessione);
    $query_entra sprintf("SELECT * FROM clienti WHERE id = %s"GetSQLValueString($colname_entra"int"));
    $entra mysql_query($query_entra$ConnFilab) or die(mysql_error());
    $row_entra mysql_fetch_assoc($entra);
    $totalRows_entra mysql_num_rows($entra);        
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    tutto il codice html
    </html>

    <?php
    mysql_free_result
    ($entra);
    // Svuoto l'array $_SESSION
    $_SESSION = array();

    // distruggo la sessione
    session_destroy();

    ?>
    fin qui nn avevo nessun problema..... adesso devo fare un link alla pagina ordini.php e mi dice che l'utente nn è loggato.... dove sbaglio?!? Ho fatto un sacco di tentativi...... ma invani.... posto il codice

    ordini.php

    Codice PHP:
    <?php 
        session_start 
    ();
        
        
    $username $_SESSION['user'];
        
        if (
    $_SESSION['user']=="")
            
    header ("Location: error.php");
            
    ?>
    <?php 
    require_once('Connections/miaConnessione.php'); ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    tutto il codice html
    </html>
    <?php
    // Svuoto l'array $_SESSION
    $_SESSION = array();

    // distruggo la sessione
    session_destroy();
    ?>
    dove sbaglio ?!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    La pagina area_riservata.php alla fine ti resetta l'array $_SESSION, quindi quando vai alla pagina ordini.php ti risulta che $_SESSION['user'] è vuota e quindi ti dice che l'utente non è loggato.
    Rimuovi i
    $_SESSION = array() e
    session_destroy()
    alla fine dei file, nello script che avevi trovato ce li avevano messi perché... boh...

  3. #3
    Ciao,
    nn rimango loggata, avevo già provato... sia togliendo solo $_SESSION = array(); , solo session_destroy(); ed entrambi
    ma se tolgo entrambi nn ho più la protezione

    mi era venuto anche un dubbio... quando linko la pagina.... basta mettere
    codice:
    ordini
    oppure
    Codice PHP:
    [url="ordini.php?utente=<?php echo $row_entra['id'?>"]ordini[/url]

  4. #4
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    il consiglio di Alhazred è corretto,

    codice:
    $_SESSION = array();
    session_destroy();
    nel codice della pagina 'area_riservata.php' resettano i dati inseriti nella sessione dallo script 'autentica.php' ( ovvero le chiavi user e pass ).
    Queste 2 righe di codice non dovrebbero stare in ogni pagina, ma solo in una pagina di logout,
    analoga a autentica.php, ma che fa il lavoro inverso:

    logout.php
    codice:
    session_start();
    $_SESSION = array();
    session_destroy();
    Non capisco alla perdita di quale protezione tu ti stia riferendo, la verifica in cima alle pagine riservate non fa accedere se nella sessione non sono presenti determinati dati.

    E parlando di dati nella sessione, non salvare la password, non ti serve a nulla, piuttosto salva tutti i dati utente che ti servono, es.

    codice:
    $datiUtente = new StdClass();
    $datiUtente->id = 1;
    $datiUtente->username = 'pippo';
    
    $_SESSION['auth'] = $datiUtente;
    Note del codice di sopra: $datiUtente può benissimo essere un array.

    Avendo i dati utente nella sessione, potrai agevolmente recuperare vari dati relazionati ad esso usando l'id, o anche solo visualizzare il suo nome e cognome ( o username ) fin quando questo rimane connesso ( valori che puoi prendere dalla sessione ).

    Detto questo, appendere variabili GET alle url non è necessario.

    Altri dubbi?

    Ciao

  5. #5
    Ciao,
    per protezione intendo che se tolgo

    Codice PHP:
    $_SESSION = array();
    session_destroy(); 
    se provo a digitare l'indirizzo della pag. protetta senza il login entro ugualmente, non vedo il nome utente, certo, però le info si...... xò forse la notte porta consiglio...... metto tutto dentro un div e faccio un bel if?! Potrebbe funzionare?!
    Purtroppo questa mattina nn posso fare le prove, ma oggi pomeriggio provo subito e poi faccio sapere......

    grazie per ora....

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Certo, ti fa entrare se metti direttamente il link, ma solo perché prima hai fatto un login e il link diretto lo usi dopo.
    Prova a non fare il login ed a mettere il link diretto, vedrai che non entri.

  7. #7
    uff... a distanza di un mese ho riaperto i file......... accidenti agli imprevisti....

    Cmq.... il mio problema è che nn riesco a navigare tra le pagine..... perdo i dati e ogni volta mi tocca reinserirli.... tutte le pagine che mi interessano hanno questo codice
    Codice PHP:
    <?php
        session_start 
    ();
        
    $username $_SESSION['user'];
        if (
    $_SESSION['user']=="")
        
    header ("Location: error.php");
    ?>
    <?php 
    require_once('Connections/miaConnessione.php'); ?>
    ma niente.... nn mi mantiene i dati.... uffa.....

    grazie della pazienza....

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.