dopo aver seguito uno dei tutorial di Maurizio, ho deciso di fare di testa mia e di trasformarlo da codice procedurale, a codice OOP (per esercitarmi con essa).
Ora, riguardo il metodo ShowList(), stampa una tabella con i dati e in più stampa due link per modificare e cancellare il record, passando con GET le variabili "action" e "id", solo che così facendo basta modificare la query string a mano per "fare danni".
L'unica soluzione che mi viene in mente è di dare nomi meno mnemonici alle variabili della query string, ma non mi sembra una soluzione definitiva.
Esiste un modo migliore per aumentarne la sicurezza?
La pagina showall.php:
- //Includo i file necessari
- include "./include/page.php";
- include "./include/contactlist.class.php";
- HtmlHeader();
- Nav_Tab();
- echo '<h1 class="cb">Rubrica completa';
- $contact->CheckAction();
- $contact->ShowList();
- HtmlFooter();
il file contactlist.class.php:
- include_once 'Parameters.php';
- class ContactList
- {
- private $conn;
- //costruttore
- function __construct()
- {
- $this->DBConnect();
- }
- private function DBConnect()
- {
- $this->conn = mysql_connect(HOST,DB_USER,DB_PASSWORD) or die ("<p>Impossibile connettersi al server MySQL</p>");
- mysql_select_db(DB,$this->conn);
- }
- public function ShowList()
- {
- $sql = "SELECT id,nome,cognome,numero FROM rubrica_telefonica";
- $res = mysql_query($sql,$this->conn);
- echo '<table border="1">
- <tr>
- <td>Nome</td>
- <td>Cognome</td>
- <td>Numero</td>
- <td></td>
- <td></td>
- </tr>';
- while($row = mysql_fetch_object($res))
- {
- echo '<tr>
- <td>'.$row->nome.'</td>
- <td>'.$row->cognome.'</td>
- <td>'.$row->numero.'</td>
- <td><a href="'.$this->EditContact($row->id).'" title="Modifica informazioni su "'.$row->nome.' '.$row->cognome.'">[modifica]</a></td>
- <td><a href="'.$_SERVER['PHPSELF'].'?id='.$row->id.'&action=delete" title="Elimina informazioni su "'.$row->nome.' '.$row->cognome.'">[cancella]</a></td>
- </tr>';
- }
- }
- public function CheckAction()
- {
- if(isset($_GET['action']))
- {
- $action = $_GET['action'];
- $got_id = $_GET['id'];
- switch($action)
- {
- case delete:
- $this->DeleteContact($got_id);
- break;
- case edit:
- $this->EditContact($got_id);
- break;
- }
- }
- }
- private function DeleteContact($id)
- {
- $sql = "DELETE FROM rubrica_telefonica WHERE id='$id'";
- mysql_query($sql, $this->conn);
- }
- private function EditContact($id)
- {
- //Implementare metodo
- }
- }
- $contact = new ContactList();