Al enkele weken lees ik regelmatig wat hier op het forum verschijnt van vragen en antwoorden. Opvallend is dat regelmatig korte antwoorden gegeven worden waar beginners zoals ik weinig of niets mee aan kunnen.
"Pas op voor SQL injection!!", of "or die is niet goed!"
Nu heb ik hier een boek van 59 euro (PHP5 en MySQL) waar men bv niets anders gebruikt dan "Or die"
Kan er eens iemand ruim en duidelijk uitleggen waarom dat dan wel niet goed is, en wat er dan in de plaats kan (moet?) gebruikt worden?
Verder véél lof voor dit forum, m'n project is volledig draaiende en dat is voor een stuk te danken aan antwoorden die ik hier aantrof! :-)
or die() is een veel gebruikte maar foute manier van foutafhandeling. Het kapt je script af en geeft daarmee een onvoorspelbaar gedrag van je script. Het is dus beter te checken of je query is gelukt en daar de vervolgstappen op te baseren.
Dus bijv.
if(query gelukt) {
//mail bijv. het verzonden+opgeslagen formulier
}else echo 'verdorie een fout';
Je zegt met or die tegen een script: Voer dit uit en mocht je iets fout gaan of mocht je iets niet lukken dan moet je dood gaan.
Dat gebeurd ook niet met jou als je een fout maakt.
Daarom dat je beter goede foutafhandeling kunt gebruiken. Je hebt dan de volledige controle over wat er met je fout gebeurd, waar het naartoe gaat, wie het kan zien, enz. Met or die heb je dat niet.
De vergelijking met mensen is nogal simplistisch. Met or die beperk je de mogelijkheid om de foutafhandeling later te veranderen, maar niet-flexibel scripten is hier vrij normaal. Het enige geldige argument om het niet te gebruiken is volgens mij omdat het simpelweg je layout verpest, omdat je de onderkant of ook de bovenkant van je html mist.
En eventuele andere acties die normaal daarna in je script zouden plaatsvinden. Denk aan parsetime-tellertjes, statistieken tellers of weet ik nog meer.