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
phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo - Amministratore di phpBB Italia
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.
Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.
Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.
Grazie ancora,
Carlo - Amministratore di phpBB Italia
Script per passare a MYSQL valori $_POST convertiti
-
- Utente
- Messaggi: 1
- Iscritto il: 30/08/2012, 13:19
- Sesso: Maschio
Chi c’è in linea
Visitano il forum: Baidu [Spider] e 45 ospiti