spiegazioni di uno script

minatore

Utente Attivo
25 Set 2007
410
0
0
Ciao ragazzi visto che sto studiando php e lo vorrei fare in maniera
ottimale, vorrei delle spiegazioni in riguardo

ho questo codice funzionante, da me scritto
è una semplice insert che ho visto sul libro e lo adattato a mio piacimento

PHP:
<?php
//richiamo il file di configurazione
require 'Config.php';
//richiamo il file di connessione
require 'Connect.php';

----------------------------------------------------------------
if(isset($_POST['variabile']))
	{
		$variabile = mysql_real_escape_string($_POST['variabile']);
	}
else
	{
		$variabile= "";
	}
----------------------------------------------------------------
		
$categoria=trim($_POST['frm_categoria']);
//verifico che magic_quotes è attivo in caso affermativo rimuovo i backslash inseriti dal PHP
if(get_magic_quotes_gpc())
	{
		$categoria=stripslashes($categoria);
	}
//effettuo il dovuto controllo di carattero potenzialmente pericolosi
$categoria=mysql_real_escape_string($categoria);
//controllo alcuni caratteri speciali che potrebbero andare in conflitto con HTML			
$categoria=str_replace("<", "&lt;", $categoria);
$categoria=str_replace(">", "&gt;", $categoria);
if(!$categoria)
	{
		$messaggio=urlencode("Non hai inserito la Categoria");
		header('location:'.'../app_frm_categoria.php'.'?msg='.$messaggio);
		exit;
	}

$query_di_verifica_stringa="SELECT descrizione FROM categorie WHERE descrizione='".$categoria."'";  
$query_di_verifica = mysql_query($query_di_verifica_stringa);  
$num=mysql_num_rows($query_di_verifica);
if($num > 0)
        { 
        	$messaggio=urlencode("Categoria già presente"); 
            header('location:'.'../app_frm_categoria.php'.'?msg='.$messaggio);
            exit; 
        } 
	 		
//preparo la query di inserimento
$query="INSERT INTO categorie(descrizione)
VALUES('$categoria')";
//invio query
if(!mysql_query($query))
	{
		die("errore nella query;".mysql_error());
	}
		$messaggio=urlencode("E' stata inserita una nuova Categoria");
		header('location:'.'../app_frm_categoria.php'.'?msg='.$messaggio);
		exit;
//chiudo la connessione
mysql_close();
?>

lo script tra i tratteggi mi è stata suggerita
per la verita anche senza quella parte mi funziona lo stesso la insert

vorrei delle spiegazioni in merito
poi mi dovreste dire tra le parentesi quadre posso mettere ciò che voglio,xrchè honotato che posso mettere anche pippo il codice funziona sempre

garzie in anticipo
 
1. Tra le parentesi quadre puoi assegnare qualsiasi nome alla variabile POST, basta che sia lo stesso della pagina che contiene il form.
2. Lo script tra i tratteggi è indispensabile per un corretto funzionamento:
- if(isset($_POST['variabile'])) verifica che sia assegnato un valore alla variabile. In caso contrario la query di inserimento genererebbe un errore. Se ad esempio lasci il campo vuoto nella pagina del form che manda la variabile POST cosa succederebbe: MySql ti darà ERRORE perché stai cercando di inserire una variabile che non è definita. Mentre in questo caso tu la dichiari esplicitamente assegnando o il valore passato o settandola a ‘vuota’.
- mysql_real_escape_string($_POST['variabile']); questa funzione è indispensabile per inserire nel DB esattamente il testo postato così com’è. Ad esempio prova a scrivere nell’<input type=text …> del form il nome ANTONIO D’AMICO. Vedrai che MySql ti darà un altro errore dovuto all’apostrofo. Mentre con mysql_real_escape_string puoi inserire tutti gli apostrofi, virgolette e caratteri che normalmete generererebbero errori e questi saranno correttamente memorizzati nel DB.
 
1. Tra le parentesi quadre puoi assegnare qualsiasi nome alla variabile POST, basta che sia lo stesso della pagina che contiene il form.
2. Lo script tra i tratteggi è indispensabile per un corretto funzionamento:
- if(isset($_POST['variabile'])) verifica che sia assegnato un valore alla variabile. In caso contrario la query di inserimento genererebbe un errore. Se ad esempio lasci il campo vuoto nella pagina del form che manda la variabile POST cosa succederebbe: MySql ti darà ERRORE perché stai cercando di inserire una variabile che non è definita. Mentre in questo caso tu la dichiari esplicitamente assegnando o il valore passato o settandola a ‘vuota’.
- mysql_real_escape_string($_POST['variabile']); questa funzione è indispensabile per inserire nel DB esattamente il testo postato così com’è. Ad esempio prova a scrivere nell’<input type=text …> del form il nome ANTONIO D’AMICO. Vedrai che MySql ti darà un altro errore dovuto all’apostrofo. Mentre con mysql_real_escape_string puoi inserire tutti gli apostrofi, virgolette e caratteri che normalmete generererebbero errori e questi saranno correttamente memorizzati nel DB.

ciao e grazie x la precisazione

ciao
 

Discussioni simili