is deze php code nog anno 2013
ik lees tegenwoordig veel over PDO, etc.. en vroeg me af of mijn code die ik toepas op al men applicaties nog goed is voor deze tijd of moet ik overstappen op andere programmeer wijze in php.
een voorbeeld van een functie die ik gebruik om een user te registreren.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
function setUser($name, $username, $email, $password) {
$q1 = query("SELECT email FROM users WHERE email = '".escape($email)."'");
if(numrows($q1)) {
print "e-mail allready registered ";
}
$q2 = query("SELECT username FROM users WHERE username = '".escape($username)."'");
if(numrows($q2)) {
print "username allready registered";
}
$q = query("INSERT INTO users (name, username, email ,password)
VALUES ('".escape($name)."',
'".escape($username)."',
'".escape($email)."',
'".escape(md5($password))."')");
if($q) {
header('location:login.php');
} else {
//sqlError(); // can be deleted
}
}
?>
function setUser($name, $username, $email, $password) {
$q1 = query("SELECT email FROM users WHERE email = '".escape($email)."'");
if(numrows($q1)) {
print "e-mail allready registered ";
}
$q2 = query("SELECT username FROM users WHERE username = '".escape($username)."'");
if(numrows($q2)) {
print "username allready registered";
}
$q = query("INSERT INTO users (name, username, email ,password)
VALUES ('".escape($name)."',
'".escape($username)."',
'".escape($email)."',
'".escape(md5($password))."')");
if($q) {
header('location:login.php');
} else {
//sqlError(); // can be deleted
}
}
?>
Waar komen de functies query, en escape vandaan?
Waarom 3 query's als je gewoon een INSERT kan doen en dan de eventuele error afvangen en daar op reageren. Moet je wel de velden username en email even UNIQUE maken.
@santhe: klopt maar het moet voor de gebruiker wat visueel in orde zijn die foutmelding.
de vraag is of ik deze werkwijze in de toekomst kan verder kan gebruiken of moet ik overschakellen op PDO en andere technieken binnen php
Anthony de meulemeester op 03/06/2013 08:03:27:
Maar een foutmelding zoals "e-mail allready registered" is een privacylek: anderen kunnen enkel en alleen door e-mailadressen in te voeren nagaan wie er geregistreerd zijn.@santhe: klopt maar het moet voor de gebruiker wat visueel in orde zijn die foutmelding.
Anthony de meulemeester op 03/06/2013 08:03:27:
Ja, waarom niet? Je hebt al redelijk abstracte "custom" functies zoals escape(), query() en numrows(), en die zijn later gemakkelijk te herschrijven. Of je ze nu onderbrengt in een objectgeoriënteerde databaseklasse of een procedurele functiebibliotheek, is van ondergeschikt belang.de vraag is of ik deze werkwijze in de toekomst kan verder kan gebruiken of moet ik overschakelen op PDO en andere technieken binnen php
Gewijzigd op 03/06/2013 08:22:51 door Ward van der Put
Ward van der Put op 03/06/2013 08:22:23:
Anthony de meulemeester op 03/06/2013 08:03:27:
Maar een foutmelding zoals "e-mail allready registered" is een privacylek: anderen kunnen enkel en alleen door e-mailadressen in te voeren nagaan wie er geregistreerd zijn.@santhe: klopt maar het moet voor de gebruiker wat visueel in orde zijn die foutmelding.
@Ward: Ik heb zelf ook zoiets ingebouwd bij een 'houd me op de hoogte' blok.
Gebruikers moeten dan hun email invullen en krijgen dan periodiek een email. Als een gebruiker zijn eigen email twee keer invoert krijgt hij deze melding. Moet ik de melding anders omschrijven of bedoel je iets anders? Is hier een captcha noodzakelijk? Sorry voor het kapen van deze thread maar was even benieuwd...
Gewijzigd op 03/06/2013 09:41:34 door N K
N K op 03/06/2013 09:41:11:
@Ward: Ik heb zelf ook zoiets ingebouwd bij een 'houd me op de hoogte' blok.
Gebruikers moeten dan hun email invullen en krijgen dan periodiek een email. Als een gebruiker zijn eigen email twee keer invoert krijgt hij deze melding. Moet ik de melding anders omschrijven of bedoel je iets anders? Is hier een captcha noodzakelijk? Sorry voor het kapen van deze thread maar was even benieuwd...
Ward van der Put op 03/06/2013 08:22:23:
Anthony de meulemeester op 03/06/2013 08:03:27:
Maar een foutmelding zoals "e-mail allready registered" is een privacylek: anderen kunnen enkel en alleen door e-mailadressen in te voeren nagaan wie er geregistreerd zijn.@santhe: klopt maar het moet voor de gebruiker wat visueel in orde zijn die foutmelding.
@Ward: Ik heb zelf ook zoiets ingebouwd bij een 'houd me op de hoogte' blok.
Gebruikers moeten dan hun email invullen en krijgen dan periodiek een email. Als een gebruiker zijn eigen email twee keer invoert krijgt hij deze melding. Moet ik de melding anders omschrijven of bedoel je iets anders? Is hier een captcha noodzakelijk? Sorry voor het kapen van deze thread maar was even benieuwd...
Je moet die algemene vraag eigenlijk bij elke melding stellen: geeft de melding niet méér prijs dan de bedoeling is?
Bij een aanmelding voor een nieuwsbrief is het gegeven dat een e-mailadres al is opgenomen niet relevant. Behandel nieuwe en bestaande e-mailadressen in de melding hetzelfde, maar doe onzichtbaar achter de schermen iets anders. Meld gewoon dat het e-mailadres is toegevoegd. Punt uit, meer hoeft een gebruiker niet te weten.
Gewijzigd op 03/06/2013 10:00:52 door Ward van der Put
oke thanks!
Anthony de meulemeester op 03/06/2013 08:03:27:
query en escape zijn functies om alles korter te maken.
Waarom zou je het korter willen maken? met een goede editor heb je zulke overhead niet nodig, je kan prima met 'autocomplete' aan grote functies die je in je project hebt voor een deel al uittypen, waar een paar klikken op je cursortoetsen en een enter al voldoende is.
Tevens ligt het er echt aan wat die functies doen, om te kunnen beoordelen of je script wel correct zal werken in PHP 5.4 en/of PHP 5.5.
Gewijzigd op 03/06/2013 11:02:47 door - Ariën -