php-mysql script per convertire valori $_POST

user_francesco

Nuovo Utente
28 Nov 2012
6
0
0
Buongiorno a tutti, da poco sto studiando php-mysql, vorrei realizzare uno script che converta e formatti tutti i valori dei vari $_POST prima di inviarli al db.
Ho trovato i rete uno script molto utile per applicare gli addslashes a tutti i valori contenenti l'apice provenienti da un form tramite i S_POST.
Eccolo
function as_array(&$arr_r)
{
foreach ($arr_r as &$val) is_array($val) ? as_array($val):$val=addslashes($val);
unset($val);
}
as_array($_POST);

messo prima di
$insert = mysql_query ("INSERT INTO anagrafica (nome, data_nascita) VALUES ('$_POST[nome]','$_POST[data_nascita]')");
funziona perfettamente e i dati vengono scritti nei campi di mysql così: es.: D'Aquila

Sto cercando ora di realizzare uno script che permetta di fare più conversioni sui vari $_POST utilizzando un filtro sul nome del campo (ad esempio tutti i nome campi che iniziano con data_ per convertire anche la data d'inserimento nel form in formato mysql), ma riesco a stampare i valori esatti prima di $insert = mysql_query ("INSERT INTO bla bla
da lì in poi tornano ad essere non convertiti, qualcuno sa indicarmi dove sbaglio?
ecco il codice con le verifiche echo prima e dopo INSERT INTO

<?PHP
// memorizzo nell'array campiControllati tutti i campi che sono arrivatati da $_POST
$campiControllati = checkCampo($_POST, "data_");

// Esempio di conversione con un prefisso data_

foreach ($campiControllati as $chiave => $valore)
echo $campiControllati[$chiave] . "<br/>";

function checkCampo($campi, $prefisso) {

foreach ($campi as $key => $value) {
// Converte la data in formato MYSQL
if (substr($key, 0, strlen($prefisso)) == "data_") {
$campi[$key] = date('Y-m-d',strtotime($campi[$key]));
}
// Spazio per inserie altri prefissi da convertire
// .....

// Aggiunge lo SLASH ai campi che contengono l'apice
$campi[$key] = addslashes($campi[$key]);
}

// restituisce l'array con i campi convertiti
return $campi;
}

$insert = mysql_query ("INSERT INTO anagrafica (nome, data_nascita) VALUES ('$_POST[nome]','$_POST[data_nascita]')");
echo $_POST[nome]."<br/>";
echo $_POST[data_nascita];
?>

AL primo echo li stampa formattati correttamente per mysql, es.:
D\'Aquila
1986-02-05
ma quando arrivano a $insert = mysql_query ("INSERT INTO bla bla
tornano ad essere non convertiti (vedi ultimi echo di esempio)
D'Aquila
05-02-1986

Sapete dirmi come far funzionare fino in fondo lo script?
Vi ringrazio molto.
Francesco
 
Tu gli passi $_POST non lo modifichi, dovresti fare cosi semmai

PHP:
$_POST = checkCampo($_POST, "data_");

oppure
PHP:
function checkCampo(&$campi, $prefisso) {
 

Discussioni simili