Ciao a tutti. Stò costruendo per passione una struttura e-commerce in modo tale da affrantare quasi tutte le problematiche del web ... Allora ho questo problema:
Premessa:
- stò lavorando sulla parte amministrativa del sito;
- l'interfaccia è strutturata su tre colonne: menu pricipale, sezione, azioni
- non utilizzo frame ma solo table e div
Problema:
il contenuto centrale (sezioni) viene aggiornato inviando alla pagina index del lato amministrativo il paramentro page:
Codice PHP:
<?
$p="categorie"; //pagina di default per i contenuti centrali
if(isset($_GET['page']))
{ //pagina passata via parametro
$p=$_GET['page'];
if($p!=basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/",$p) || $p=="index" || !file_exists("pages/$p.php"))
$p="errore"; //pagina di errore
}
include("pages/$p.php");
?>
a sua volta le azioni vendono passate sempre all'index con il parametro subpage:
Codice PHP:
<?
$p="clear"; //pagina di default per i contenuti centrali
if(isset($_GET['subpage']))
{ //pagina passata via parametro
$p=$_GET['subpage'];
if($p!=basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/",$p) || $p=="index" || !file_exists("pages/subpages/$p.php"))
$p="errore"; //pagina di errore
}
include("pages/subpages/$p.php");
?>
fino a qui funziona tutto bene ma ho problemi a lavorare con i form. Ho creato una subpage "categoria-add.php" ed ho inserito il codice:
Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Aggiungi categoria</title>
<link href="../../template.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
if($_POST) {
inserisci_record();
}
else {
mostra_form();
}
function inserisci_record()
{
// richiamo il file di configurazione
require '../../includes/connect_configure.php';
// richiamo lo script responsabile della connessione a MySQL
require '../../includes/connect_db.php';
// recupero i campi di tipo "stringa"
$titolo = trim($_POST['titolo']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc())
{
$titolo = stripslashes($titolo);
}
$titolo = mysql_real_escape_string($titolo);
// recupero gli altri campi del form
$ordine = isset($_POST['ordine']) ? intval($_POST['ordine']) : 0;
// verifico la presenza dei campi obbligatori
if(!$titolo)
{
$messaggio = urlencode("Non hai inserito il titolo");
header('location: '.$_SERVER['PHP_SELF'].'?subpage=categoria-add&msg='.$messaggio);
exit;
}
// preparo la query
$query = "INSERT INTO categoria (cat_titolo, cat_ordine)
VALUES ('$titolo',$ordine)";
// invio la query
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
// recupero l'id autoincrement generato da MySQL per il nuovorecord inserito
$id_inserito = mysql_insert_id();
// chiudo la connessione a MySQL
mysql_close();
$messaggio = urlencode("Inserimento effettuato con successo (ID=$id_inserito)");
header('location: '.$_SERVER['PHP_SELF'].'?subpage=categoria-add&msg='.$messaggio);
}
function mostra_form()
{
// mostro un eventuale messaggio
if(isset($_GET['msg']))
echo '[b]'.htmlentities($_GET['msg']).'[/b]
';
?>
<link href="../../template.css" rel="stylesheet" type="text/css">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="actions">
<tr>
<td scope="col"><h1>Nuova categoria</h1></td>
</tr>
<tr>
<td><form id="form1" name="form1" method="post" action="pages/subpages/categoria-add.php">
<label>
Titolo
<input type="text" name="titolo" id="titolo" />
</label>
<label>
Ordine di visualizzazione
<input type="text" name="ordine" id="ordine" />
<input type="submit" name="submit" id="submit" value="Conferma" />
</label>
<?php } ?>
</form> </td>
</tr>
</table>
<?php echo $_SERVER['PHP_SELF'].'?subpage=categoria-add&msg=' ?>
</body>
</html>
Quando eseguo lo script mi restituisce l'errore header
Codice PHP:
Warning: Cannot modify header information - headers already sent by...
però la query viene eseguita.
Qualche consiglio?