Grazie Marino sei un tesoro![]()
Grazie Marino sei un tesoro![]()
sqlPDO.zip
questa sera, non mi ama, quindi posto il file
come promesso una serie di esempi con query "mirate" e con query "generiche"
se hai un db di test puoi creare la tabella (commento) che trovi nello script e poi eseguirlo
attento ad inserire le definizioni corrette del pdo per mysql (io uso ms sql)
successivamente puoi estendere la classe con tutte le funzioni che ti "garbano"
ciao
Marino
Grazie 1000
non voglio criticare, sia chiaro, ma voglio fare un appunto per chi viene a leggere questo 3D, al fine di evitare confusione in futuro:
Non sindacando sulla bontà e la funzionalità dello script, quello non è OOP ma è uno "scripting" travestito da classe. Quindi non vedetelo come esempio in tal senso.
@marino51: una prima miglioria, se ti interessa, sarebbe quella di togliere intanto l'uso di global in MyLog e MyError e togliere in quest'ultima il die sostituendolo con il throw di una eccezione.
Ad averci tempo sarebbe carino partire da questo script per far vedere come evolverlo
IP-PBX management: http://www.easypbx.it
Old account: 2126 messages
Oldest account: 3559 messages
infatti non parlo mai di OOP, non ne ho ancora capito la reale validità, a me interessa la funzionalità pur con la non ripetitività del codice ottenuta con le funzioniNon sindacando sulla bontà e la funzionalità dello script, quello non è OOP ma è uno "scripting" travestito da classe. Quindi non vedetelo come esempio in tal senso.
MyErr è una funzione a cui si arriva solo quando, (spero), di riconoscere tentativi di hacker quindi mi interessa ricevere una mail, (vedi include commentata nel post, ma operativa in realtà),@marino51: una prima miglioria, se ti interessa, sarebbe quella di togliere intanto l'uso di global in MyLog e MyError e togliere in quest'ultima il die sostituendolo con il throw di una eccezione.
il die è per me la naturale conseguenza, ovvero MyErr non deve mai essere chiamata.
anche la funzione "handle_sql_errors" non dovrebbe mai essere chiamata nell'ambiente produttivo, se dovesse succedere, di nuovo mi spedisco una mail e interrompo la sessione
"global $swN;" è il nome dello script che viene passato per tutti i messaggi, log compresi
it would be very nice, 100 % of my time ...Ad averci tempo sarebbe carino partire da questo script per far vedere come evolverlo
Ultima modifica di marino51; 16-04-2015 a 14:31
ps,
recentemente ho rafforzato "il concetto" con un logoff che elimina tutte le super globals et similiaCodice PHP:public function MyErr($text)
{
global $swN;
error_log($swN." ".$text, 0);
require_once NS('Imailsoliderr');
logoff();
print "ERRORE INATTESO, contatta l'amministratore del sistema";
die;
}
fatto, la prossima (escludendo per ora il "die") ?sarebbe quella di togliere intanto l'uso di global in MyLog e MyError
Se è di aiuto, in passato ho avuto questo scambio di messaggio con Santino.
Insieme abbiamo implementato il pattern Observer con il relativo listerner e dispatch in maniera molto semplice.
http://forum.html.it/forum/showthrea...9&pagenumber=2
In particolare è utile per la gestione dei log, e puoi aggiungere tutti i metodi che vuoi.
Invio tramite mail, log txt, retun html....
Io l'ho trovato molto utile e anche se molti lo considerano solo didattico io l'ho integrato/modificato con molta soddisfazione.
Ciao
Paolo
Che mestiere difficile.....essere da soli ancora di più
Piccolo appunto.
La funzione MyErr non ci si arriva solo quando ci sono tentativi hacker, oltre al fatto che non ho capito bene cosa intendi come attacchi hacker.
La funzione MyErr viene utilizzata per gli errori PDO (Bhe li serve solo a controllare il numero di parametri).
Per prevenire i possibili attacchi sql injection e Cross-site scripting ci sono le funzioni apposta e metodi
BindParameter di PDO, htmlspecialchars() e htmlentities().
Poi la mia conoscenza in ambito di sicurezza si ferma qui.![]()
Che mestiere difficile.....essere da soli ancora di più
nella classe che ho postato, ci sono 3 funzioni che nella versione "produttiva" sono,
come vedi myLog è di fatto disabilitata, la utilizzo quando devo fare debug degli script che la richiamano,Codice PHP:public function MyLog($text)
{
return;
error_log($this->SWN." ".$text, 0);
}
public function MyErr($text)
{
error_log($this->SWN." ".$text, 0);
require_once NS('Imailsoliderr');
logoff();
print "ERRORE INATTESO, contatta l'amministratore del sistema";
die;
}
private function handle_sql_errors($sql, $e)
{
if ($this->inTransaction) $this->pdo->rollBack();
error_log("SQL cmd : ".$sql, 0);
error_log("error code : ".$e->getCode(), 0);
error_log("error info : ".$e->getMessage(), 0);
require_once NS('Imailsqlerr');
logoff();
print "ERRORE INATTESO, contatta l'amministratore del sistema";
die;
}
ho cercato di proteggere (spero) i vari script con accorgimenti "anti intrusione",quando mi accorgo che qualcosa non va, viene attivata la funzione myErr che invia mail e interrompe, quindi l'aspettativa è che non sia mai richiamata
la terza gestisce le segnalazioni di errore delle query, anche in questo caso l'aspettativa è che non sia mai chiamata perché il debug è stato fatto in fase di sviluppo, quindi se dovesse essere richamata si tratta di un errore "grave", non certo imputabile ad errore di sintassi o simili
il codice non è sicuramente OOP ma è contenuto al minimo (facile e con meno possibilità di errore) e dovrebbe essere scritto in maniera da essere leggibile dai più, non solo dai "guru" cosa importante quando si lavora in un team di persone con livelli di conoscenza diversificati
Ultima modifica di marino51; 17-04-2015 a 13:29