[PHP] Estrarre solo record dell'utente connesso

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Ciao a tutti
Ho un problemino da risolvere.
Estraggo i dati dalla mia tabella database ma trattasi di tabella usata da diversi utenti,che si loggano e che sono seguiti da SESSION_ .
Con la tabella sottostante ho la possibilita di vedere e modificare/eliminare i record ...ma non solo i miei,di tutti e questo non va bene.
Mi potete aiutare sul codice affinche ogni utente possa lavorare soltanto con i suoi dati??

pagina.php
Codice:
<?php
$db_host = "host";
$db_user = "utente";
$db_password = "";
$db_name = "my_db;

 $db = mysql_connect($db_host, $db_user, $db_password);
  //
mysql_query("SET NAMES utf8");
//
  if ($db == FALSE)
    die ("Errore nella connessione.");

  mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database!");

if($_POST)
{
    $ids = isset($_POST['id']) ? $_POST['id'] : array();
    elimina_record($ids);
}
elseif(isset($_GET['id']))
{
    elimina_record(array($_GET['id']));
}
else
    mostra_lista();

function mostra_lista()
{
    // mostro un eventuale messaggio
    if(isset($_GET['msg']))
        echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

    // preparo la query
    $query = "SELECT id,username,myCheck FROM lista_in_lavorazione";

    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
        die("Errore nella query $query: " . mysql_error());
    }

    echo '
    <form name="form1" method="post" action="">
    <table border="1">
        <tr>
            <th>&nbsp;</th>
            <th>nome</th>
            <th>dati</th>
            
            
            <th>&nbsp;</th>
        </tr>';

    while ($row = mysql_fetch_assoc($result))
    {
        $username = htmlentities($row['username']);
        $myCheck = htmlentities($row['myCheck']);

        // preparo il link per la modifica dei dati del record
        $link = $_SERVER['PHP_SELF'].'?id=' . $row['id'];

        echo "<tr>
                <td><input name=\"id[]\" type=\"checkbox\" value=\"$row[id]\" /></td>
                <td>$username</td>
                <td>$myCheck</td>
                
                
                <td><a href=\"$link\">CANCELLA</a></td>
            </tr>";
    }

    echo '</table>
        <br />
        <input type="submit" name="Submit" value="ELIMINA prodotti SELEZIONATI" />
        </form>';

    // libero la memoria di PHP occupata dai record estratti con la SELECT
    mysql_free_result($result);

    // chiudo la connessione a MySQL
    mysql_close();
}

function elimina_record($ids)
{
    // verifico che almeno un id sia stato selezionato
    if(count($ids) < 1)
    {
        $messaggio = urlencode("NESSUN PRODOTTO SELEZIONATA!");
        header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
        exit;
    }

    // per precauzione converto gli ID in interi
    $ids = array_map('intval',$ids);

    // creo una lista di ID per la query
    $ids = implode(',',$ids);

    // preparo la query
    $query = "DELETE FROM lista_in_lavorazione WHERE id IN ($ids)";

    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
        die("Errore nella query $query: " . mysql_error());
    }

    // conto il numero di record cancellati
    $num_record = mysql_affected_rows();

    // chiudo la connessione a MySQL
    mysql_close();

    $messaggio = urlencode("PRODOTTI ELIMINATI: $num_record");
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
}
?>
 
ciao
1) se l'utente è loggato da qualche parte avrai una o più sessioni contenenti (non so) o la pass o l'usert o l'id dell'utente loggato
2) ci deve essere qualcosa (un campo) che leghi i record all'utente, se non c'è non puoi fare nulla
ipotizzioamo che l'utente si logghi usando un classico form
PHP:
<?php
session_start();
//lettura deri $_POST
//verifica che l'utente sia registrato e estrazione dei suoi dati
if($registrato=="SI"){
    $_SESSION['id_utente']=$riga['id'];
    $_SESSION['user']=$riga['user'];
}
//....
?>
e visualizzi i suoi record da modificare/eliminare
PHP:
<?php
session_start();
if(!isset($_SESSION['id_utente'])){//se non esiste tentativo accesso non autorizzato
    header('location=dove_vuoi.php');//e rimandi dove vuoi
    exit();
}
//se arrivi qui l'utente è correttamente loggato
$suo_id=$_SESSION['id_utente'];
//quindi fai la select dei record che puo modificare/eliminare
$query="SELECT * FROM tabella WEHRE id_utente=$suo_id";
//in questo modo l'utente vede solo i suoi record
//......eccc
?>
guarda che ti ho fatto uno schema semplificato, però se non hai previsto un qualcosa che leghi l'utente ai suoi record (io ho ipotizzato che il seo/suoi record siano a lui legati tramite il suo id) mi sa che devi ripartire da zero riconsiderando le tabelle
 
ho provato a riconsiderare il mio file in base ai tuoi suggerimenti ma non riesco ad inserire i parametri si SESSIONE ...mi da errore..

pagina.php
Codice:
<?php
session_start();
if(!isset($_SESSION['utente'])){
    //una o entrambe le sessioni non esistono
    if(isset($_SESSION))session_destroy();
    header('location:http://MIOSITO.org');// o altrove
    exit();
}else{

?>
<?php
include('../../../struttura/header.php');

?>


<html>
<head>
<link href="stile.css" rel="stylesheet" type="text/css">
<link href="testata.css" rel="stylesheet" type="text/css">
<link href="stilefoglio.css" rel="stylesheet" type="text/css">
<title>PRODOTTI SALVATI</title>

</head>

<body>
<center>
<h1>MODIFICA LISTA</h1>

<?php
$db_host = "localhost";
$db_user = "UTENTE";
$db_password = "";
$db_name = "my_DB";

 $db = mysql_connect($db_host, $db_user, $db_password);
  //
mysql_query("SET NAMES utf8");
//
  if ($db == FALSE)
    die ("Errore nella connessione.");

  mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database!");

if($_POST)
{
    $ids = isset($_POST['id']) ? $_POST['id'] : array();
    elimina_record($ids);
}
elseif(isset($_GET['id']))
{
    elimina_record(array($_GET['id']));
}
else
    mostra_lista();

function mostra_lista()
{
    // mostro un eventuale messaggio
    if(isset($_GET['msg']))
        echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

    // preparo la query
    $query = "SELECT id,username,myCheck FROM lista_in_lavorazione";

    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
        die("Errore nella query $query: " . mysql_error());
    }

    echo '
    <form name="form1" method="post" action="">
    <table border="1">
        <tr>
            <th>&nbsp;</th>
            <th>ID</th>
            <th>NOME</th>
            <th>PRODOTTI</th>
           
           
            <th>&nbsp;</th>
        </tr>';

    while ($row = mysql_fetch_assoc($result))
    {
        $id = htmlentities($row['id']);
        $username = htmlentities($row['username']);
        $myCheck = htmlentities($row['myCheck']);

        // preparo il link per la modifica dei dati del record
        $link = $_SERVER['PHP_SELF'].'?id=' . $row['id'];

        echo "<tr>
                <td><input name=\"id[]\" type=\"checkbox\" value=\"$row[id]\" /></td>
                <td>$id</td>
                <td>$username</td>
                <td>$myCheck</td>
               
               
                <td><a href=\"$link\">CANCELLA</a></td>
            </tr>";
    }

    echo '</table>
        <br />
        <input type="submit" name="Submit" value="ELIMINA PRODOTTI SELEZIONATI" />
        </form>';

    // libero la memoria di PHP occupata dai record estratti con la SELECT
    mysql_free_result($result);

    // chiudo la connessione a MySQL
    mysql_close();
}

function elimina_record($ids)
{
    // verifico che almeno un id sia stato selezionato
    if(count($ids) < 1)
    {
        $messaggio = urlencode("NESSUNA PRODOTTO SELEZIONATO!");
        header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
        exit;
    }

    // per precauzione converto gli ID in interi
    $ids = array_map('intval',$ids);

    // creo una lista di ID per la query
    $ids = implode(',',$ids);

    // preparo la query
    $query = "DELETE FROM lista_in_lavorazione WHERE id IN ($ids)";

    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
        die("Errore nella query $query: " . mysql_error());
    }

    // conto il numero di record cancellati
    $num_record = mysql_affected_rows();

    // chiudo la connessione a MySQL
    mysql_close();

    $messaggio = urlencode("PRODOTTO ELIMINATO: $num_record");
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
}
?>
<br><br>
<a href="../formcerca.php"> <img src="../images/INDIETRO.png" ></a><br><br>
</center><br><br><br><br>
<center><h3><a href="../../index_ok.php"><img src="http://MIOSITO/registrazione_utenti/images/TORNA_ALLA_HOME.png"></a></h3></center>


</body>
</html>
<?php
}
?>
 
ciao
scusa ma non capisco bene, cosa intendi per
ma non riesco ad inserire i parametri si SESSIONE
?
da quello che capisco da qualche parte l'utente per poter operare deve loggarsi, giusto? è in quel punto che devi prelevare le sessioni se il log è a buon fine
 
ciao
scusa ma non capisco bene, cosa intendi per ?
da quello che capisco da qualche parte l'utente per poter operare deve loggarsi, giusto? è in quel punto che devi prelevare le sessioni se il log è a buon fine
Ciao Borgo... ti giuro che non capisco...
questa e' la mia pagina di login

login.php
Codice:
<?php

    include '.././struttura/header.php';

?>

    <div id="wrapper">
   
        <?php
       
            $p = $_GET['azione'];
           
            // login.php?azione=login
            if($p == "login"){
           
                if(!isset($_POST['invia'])){ ?>
                   
                    <form method="post" action="#" id="formlogin">
                   
                        <label for="username"><font color='white'>USERNAME</font></label><br>
                        <input type="text" name="username" id="username" /><br><br><br>
                        <label for="password"><font color='white'>PASSWORD</font></label><br>
                        <input type="password" name="password" id="password" /><br><br><br><br>
                        <input type="submit" name="invia" id="login" value="ACCEDI" />
                   
                    </form><br><br><br>
                <a href="password_dimenticata.php"><font color='white'><strong>PASSWORD DIMENTICATA?</stong></font></a>  
<?php             } else {

                    $username = mysql_real_escape_string($_POST['username']);
                    $password = mysql_real_escape_string($_POST['password']);
                   
                    if($username == "" || $password == ""){
                   
                        echo "<h1><font color='white'>ATTENZIONE , DEVI COMPILARE TUTTI I CAMPI !</font></h1>";
                              header("Refresh: 4; URL= http://MIOSITOWEB/registrazione_utenti/login.php?azione=login");
                    } else {
                   
                        $password_cript = md5($password);
                       
                        $recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'");
                       
                        $verificadati = mysql_num_rows($recuperadati);
                       
                        if($verificadati == 1){
                       
                            $sessione = mysql_fetch_array($recuperadati);
                            $_SESSION['utente'] = $sessione['username'];
                            echo "<h1><font color='white'>LOGIN EFFETTUATO CON SUCCESSO!</font></h1>";
                            header("Refresh: 2; URL= ../registrazione_utenti/index_ok.php");
                       
                        } else {
                       
                            echo "<h1><font color='white'>DATI ERRATI , RIPROVA !</font></h1>";
                                header("Refresh: 4; URL= MIOSITOWEB/registrazione_utenti/login.php?azione=login");

                        }
                   
                    }
               
                }
           
           
            // login.php?azione=logout
            } elseif ($p == "logout"){
           
                session_destroy();
                echo "<font color='white'><h1>LOGOUT EFFETTUATO CON SUCCESSO!</h1></font>";
                header("Refresh: 3; URL=http://MIOSITOWEB.org/index.php ");
           
            }
       
       
       
        ?>
   
<?php session_start(); ?>  
   
    </div>
<body bgcolor="000000">  
<style type="text/css">
<!--
A{text-decoration:none}
-->
</style>
</body>
</html>

le ho provate tutte..ma niente..

In pratica il primo codice che ho postato mi stampa a video la mia tabella db...il fatto e' che ,se io mi chiamo PIPPO e mi sono LOGGATO come tale,mi deve estrarre solo i dati riferiti a PIPPO enon anche quelli di PLUTOe GELSOMINO......sclero
 

Discussioni simili