• User Attivo

    Mostrare tabelle php filtrate

    Buongiorno, sto lavorando allo sviluppo di un piccolo cms in php/mysql, il cms permette l'inserimento di articoli in un database e ho una pagina php che estrae i dati e li stampa a video e un'altra pagina per la gestione degli articoli

    il mio problema è che vorrei che ciascun utente possa:

    • vedere soltanto gli articoli creati da lui
    • modificare soltanto gli articoli creati da lui

    è già stato creato un sistema per la gestione utenti

    vi lascio i codici delle pagine interessate:

    Pagina visualizzazione articolo :

    [PHP]<?php/** * articledisplay.php
    */// Get the contact information$items = Contact::getContacts();$accessLevel = Contact::accessLevel();
    $id = (int) $_GET['id'];// Get the existing information for an existing item$item = Article::getArticle($id);if ($item) :?><h1><?php echo htmlspecialchars($item->getTitle()); ?></h1>
    <div> <?php echo strip_tags(nl2br($item->getText()), "<p><br><h2><h3><h4><strong><em><ul><ol><li><a>"); ?>

    </div><?php endif;?>[/PHP]

    Pagina modifica articolo :

    [PHP]<?php/** * articlemaint.php * * Maintain the Articles table
    */$accessLevel = Contact::accessLevel();if ($accessLevel != 'Admin') : echo 'Sorry, no access allowed to this page';else :
    $id = (int) $_GET['id'];// Is this an existing item or a new one?if ($id) { // Get the existing information for an existing item $item = Article::getArticle($id);} else { // Set up for a new item $item = new Article;}?><h1>Article Maintenance</h1>
    <form action="index.php?content=articles" method="post" name="maint" id="maint">
    <fieldset class="maintform"> <legend><?php echo ($id) ? 'ID: '. $id : 'Add an Article' ?></legend> <ul> <li><label for="title" class="required">Title</label><br /> <input type="text" name="title" id="title" class="required" value="<?php echo htmlspecialchars($item->getTitle()); ?>" /></li> <li><label for="text" class="required">Text</label><br /> <textarea rows="30" cols="80" name="text" id="text" class="required"><?php echo strip_tags($item->getText(), "<p><br><h2><h3><h4><strong><em><ul><ol><li><a>"); ?> </textarea></li> </ul>
    <?php // create token $salt = 'SomeSalt'; $token = sha1(mt_rand(1,1000000) . $salt); $_SESSION['token'] = $token; ?> <input type="hidden" name="id" id="id" value="<?php echo $item->getId(); ?>" /> <input type="hidden" name="task" id="task" value="article.maint" /> <input type='hidden' name='token' value='<?php echo $token; ?>'/> <input type="submit" name="save" value="Save" /> <a class="cancel" href="index.php?content=articles">Annulla</a> </fieldset></form><?php endif; [/PHP]

    Pagina visualizzazione lista articoli :

    [PHP]<?php/** * articles.php * * Content for Articles * * @version 1.2 2011-02-03 * @package Smithside Auctions * @copyright Copyright (c) 2011 Smithside Auctions * @license GNU General Public License * @since Since Release 1.0 */$accessLevel = Contact::accessLevel();if ($accessLevel != 'Admin') : echo 'Sorry, no access allowed to this page';else :
    // Get the article information$items = Article::getArticles();if (empty($items)) { $items = array();}?><h1>Articoli <a class="button" href="index.php?content=articlemaint&id=0">Add</a></h1>
    <ul class="ulfancy"> <?php foreach ($items as $i=>$item) : ?> <li class="row<?php echo $i % 2; ?>"> <h2><?php echo htmlspecialchars($item->getTitle()); ?> <a class="button" href="index.php?content=articledelete&id=<?php echo $item->getId(); ?>">Delete</a> <a class="button" href="index.php?content=articlemaint&id=<?php echo $item->getId(); ?>">Edit</a> </h2> </li> <?php endforeach; ?></ul>
    <?php endif; ?>[/PHP]

    Grazie


  • User Attivo

    Devi creare un controllo di corrispondenza sulla tabella autore e il record articolo, +ovvero:

    1. dentro l'articolo inserisci un campo dove c'è l**'ID **dell'autore di quell'articolo
    2. estrapoli da interrogazione db **'ID **dell'utente loggato
    3. prima di lanciare ogni articoli verifichi che l'ID dell'autore di quell'articolo COINCIDA con quello dell'utente loggato
      (e fare in modo che altrimenti non venga visualizzato)

  • User Attivo

    Ciao grazie per la risposta ho risolto così:
    ho creato una variabile all'inizio della pagina che mostra gli articoli:
    $autore_sito = $loggedInUser->displayname;

    poi il codice di estrazione dati dal database l'ho creato in questo modo:

    $rs = mysql_query("SELECT * FROM user_articoli WHERE autore_sito LIKE '$autore_sito' LIMIT $first, $x_pag");

    l'ultima parte del codice è relativa al sistema di paginazione che ho creato.

    il codice funziona correttamente, ci sono problemi in termini di sicurezza?
    Grazie


  • User Attivo

    Sulla sicurezza potremmo parlare per giorni,

    a cominciare dalla scrittura OOP,
    con valori protetti o riservati,

    al fatto di inserire funzioni di controllo dei dati prima diinserirli nel database, (questo molto importante)

    aggiungere firewall sul server, sul sito (ci sono degli script di firewall) per evitare attacchi cross scripting etc XSS

    controllare l'origine degli script,

    se cerchi su google c'è tanta docuemntazione in merito.