Dankje voor je reactie! Nu kom ik wat verder. Is het dan ook zo te maken dat het gekoppeld kan worden aan een user?quote:Op woensdag 9 december 2009 00:07 schreef GlowMouse het volgende:
Front-end gaat dit mbv xmlHTTP. Dit kun je vrij makkelijk met een toolkit als jQuery. Je moet wel met JavaScript en PHP kunnen werken.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class user { public $db; private $salt = 'abc1234'; private $cookieName = 'abc12345667890'; private $domain = 'http://www.domain.com'; public function __construct($db) { $this->db = $db; } public function user($db) { $this->__construct($db); } public static function login($username = '', $password = '', $stayloggedin = false, $sha = false) { print($this->db); } } ?> |
$this is alleen van toepassing als je het hebt over geinstantiëerde classes / objecten. De static 'modifier' wil zeggen dat je de functie (eigenlijk is het een method / member als je zo'n functie in een class hebt) kunt aanroepen zonder de class / het object dat de class voorstelt te instantiëren.quote:Op vrijdag 11 december 2009 17:35 schreef Chandler het volgende:
Ik zit met een punt.
Ik laad een database class naar $db en laad daarna een nieuwe class (user) en wil deze als parameter de $db class meegeven
[ code verwijderd ]
nu krijg ik echter de volgende error
Fatal error: Using $this when not in object context in D:\****\system\classes\class.user.php on line 23
Wat doe ik nou weer fout?
eerst chdir?quote:Op zondag 13 december 2009 17:32 schreef ursel het volgende:
Weet iemand hoe ik er ook alweer voor kan zorgen dat ik de service php, pear en phpunit kan benaderen vanuit een andere folder dan de std folders?
ahh.. w8 ff ik mis wat essentiele info in mijn post..quote:
Op zich niet, tenzij je net zoals bij fok het aanpassen van accounts etc laat bevestigen dmv een wachtwoord (zelfde als inloggen) en natuurlijk kun je middels een tekst de gebruiker er van op de hoogte brengen dat het risico is dat men op de pc (indien deze gebruikt wordt door meerdere mensen) het niet aan te bevelen is om ingelogd te blijven! ):quote:Op maandag 14 december 2009 19:03 schreef xaban06 het volgende:
Ah dus ik doe niks foutquote:Op maandag 14 december 2009 20:40 schreef Chandler het volgende:
[..]
Op zich niet, tenzij je net zoals bij fok het aanpassen van accounts etc laat bevestigen dmv een wachtwoord (zelfde als inloggen) en natuurlijk kun je middels een tekst de gebruiker er van op de hoogte brengen dat het risico is dat men op de pc (indien deze gebruikt wordt door meerdere mensen) het niet aan te bevelen is om ingelogd te blijven! ):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class secure{ public $data; public function __construct($data){ foreach($data as $key=>$val){ if($val !== ""){ $val = trim($val); $val = stripslashes($val); $val = htmlentities($val, ENT_QUOTES); $data = array($key=>$val); $this->data = $data; return $data; } } } } ?> |
Omdat je binnen je foreach returnedquote:Op dinsdag 15 december 2009 08:55 schreef Sitethief het volgende:
[ code verwijderd ]
De $data die ik mee geef aan de function komt uit een $_POST . De class geeft mij alleen de laatste value uit de array terug en negeert de rest. Weet iemand hoe dat komt?
Hmm, het maakt niet uit waar ik hem return in de function, ik krijg alleen de laatste waarde uit de array terug. Ik snap wel ongeveer wat er mis gaat, maar niet hoe ik het kan fixen....quote:Op dinsdag 15 december 2009 09:35 schreef ursel het volgende:
[..]
Omdat je binnen je foreach returned
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class secure{ public $data; public function __construct($data){ $mstring = Array(); foreach($data as $key=>$val){ if($val !== ""){ $val = trim($val); $val = stripslashes($val); $val = htmlentities($val, ENT_QUOTES); $mstring[$key] = $val; $this->data = $mstring; } } return $data; } } ?> |
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 | class Secure { public function stripSearch(&$inputStripSearch) { foreach($inputStripSearch as $key=>&$val) { if($val !== "") { $val = trim($val); $val = stripslashes($val); $val = htmlentities($val, ENT_QUOTES); } } return; } public function validateEmail(&$inputValidateEmail) { if (preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$inputValidateEmail['email'])) return true; else return false; } } ?> |
1 2 3 | filter_var('bob@example.com', FILTER_VALIDATE_EMAIL); ?> |
Kun je ze dan even laten melden hoe dat dan kan (in hun ogen?)quote:Op maandag 14 december 2009 20:52 schreef xaban06 het volgende:
[..]
Ah dus ik doe niks foutThanks.
Op werk namelijk een discussie gehad dat ik fout bezig ben en dat het veel veiliger en makkelijker kan.
mjah.. zijn expression om te checken is ook nog aan de wat simpele kant.quote:Op donderdag 17 december 2009 14:55 schreef Chandler het volgende:
@hamkaastosti; wil alleen even melden dat die filter ook niet 100% werkt, zelfs niet 50%
http://www.google.nl/search?hl=nl&q=php+FILTER_VALIDATE_EMAIL+bugs&meta=&aq=f&oq=
Het is al weer maanden geleden dat hij zoiets gescript heeft, dus hij kon er niet opkomen. Dat was zijn verdediging.quote:Op donderdag 17 december 2009 14:57 schreef Chandler het volgende:
[..]
Kun je ze dan even laten melden hoe dat dan kan (in hun ogen?)
1 2 3 4 5 6 7 8 9 | $query = $this->db->select() ->from('news', '*') ->join('users', '*', 'news.author_id = users.id') ->order('news.date ASC') ->limit(0, $limit); $result = $this->db->fetchAll($query); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | private $select; private $from; private $join; private $limit; //enz public function limit($startrow, $numrows) { $this->limit = ' LIMIT ' . $startrow . ', ' . $numrows; return $this; } public function fetchall($query) { $doquery = $this->query($query); $result = $doquery->fetchAll(PDO::FETCH_ASSOC); return $result; } ?> |
const char regexp[] = "/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([A-Za-z0-9_][A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\=\\?\\^\\`\\|\\{\\}]*(\\.[A-Za-z0-9_\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\=\\?\\^\\`\\|\\{\\}]quote:Op donderdag 17 december 2009 16:50 schreef hamkaastosti het volgende:
[..]
mjah.. zijn expression om te checken is ook nog aan de wat simpele kant.
Ik zou gewoon filter_var gebruiken.
kijk maar eens op regel 475 welke regex php zelf gebruikt
http://svn.php.net/viewvc/php/php-src/trunk/ext/filter/logical_filters.c?revision=290791&view=markup
Waarom dan niet gewoon 2 losse queries? je wil toch niet alles aan elkaar koppelen?quote:Op zaterdag 19 december 2009 11:25 schreef hamkaastosti het volgende:
ik ben me aan het verdiepen in method chaining.
Nu wil ik mijn database op de volgende manier aanroepen:
[ code verwijderd ]
in de database class werkt het zoiets:
[ code verwijderd ]
Nu werkt dit prima zolang ik maar 1 query heb. Wil ik een tweede query in dezelfde request doen zonder bijvoorbeeld een join terwijl de eerste dat wel had dan wil hij mijn tweede query ook joinen omdat $this->join niet leeg is.
hoe los ik dat netjes op?
In zend gebruiken ze ook zoiets maar daar zit vast een handigheidje achter
2 queries:quote:Op zaterdag 19 december 2009 15:01 schreef Chandler het volgende:
[..]
Waarom dan niet gewoon 2 losse queries? je wil toch niet alles aan elkaar koppelen?en heb je bv een voorbeeld van 2 queries?
1 2 3 | $this->db->insert('table', $array); ?> |
1 2 3 | ->where('field = ?', $array); ?> |
1 2 3 | $this->db->select()->from('table', 'id,title,text')->join('users, 'table.id = users.id)->where(title = ?, 1)->limit(0,10); ?> |
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | /* * @author Michel Everts */ class Secure{ /* * Strip function for arrays * @param array with text * @return array */ public function stripArray(&$inputStripArray){ foreach($inputStripArray as $key=>&$val){ if($val !== ""){ $val = trim($val); $val = stripslashes($val); $val = htmlentities($val, ENT_QUOTES); } } return; } /* * Strip function for strings * @param string with text * @return string */ public function stripSingle(&$inputStripSingle){ if($inputStripSingle !== ""){ $inputStripSingle = trim($inputStripSingle); $inputStripSingle = stripslashes($inputStripSingle); $inputStripSingle = htmlentities($inputStripSingle, ENT_QUOTES); } return; } /* * E-mail validate function * @param string with text * @return string or die */ public function validateEmail(&$inputValidateEmail){ if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$inputValidateEmail)){ die ("".$inputValidateEmail." <br> Is ongeldig. Gebruik het juiste e-mailadres formaat"); } else{ return; } } /* * URL validate function * @param string with text * @return string or die */ public function validateURL(&$inputValidateURL){ if (!preg_match("/(https?:\/\/+[\w\-]+\.[\w\-]+)/i",$inputValidateURL)){ die ("".$inputValidateURL." <br> is ongeldig. Gebruik het juiste URL formaat"); } else{ return; } } /* * Name validate function * @param string with text * @return string or die */ public function validateName(&$inputValidateName){ $this->stripSingle($inputValidateName); if (preg_match("/[^a-zA-Z]( )'/",$inputValidateName)){ die ("".$inputValidateName." <br>bevat illegale karaters. Alleen alfabetisch karaters zijn toegestaan"); } else{ return; } } /* * Telephone number validate function * @param string with text * @return string or die */ public function validateTel(&$inputValidateTel){ $this->stripSingle($inputValidateTel); if (preg_match("/[^0-9\-]/",$inputValidateTel)){ die ("".$inputValidateTel." <br>bevat illegale karaters. Alleen cijfers en '-' zijn toegestaan "); } else{ return; } } /* * PostCode validate function * @param string with text * @return string or die */ public function validatePostCode(&$inputValidatePostCode){ $this->stripSingle($inputValidatePostCode); if (!preg_match("/^[0-9]{4}( )?[A-Za-z]{2}$/",$inputValidatePostCode)){ die ("".$inputValidatePostCode." <br> is ongeldig. Een postcode bevat alleen alfanumerieke karakters."); } else{ return; } } } ?> |
Je hebt gelijk, ik zou niet zomaar moeten stoppen bij zoiets triviaals als een verkeerd ingevoerd e-mail adres.quote:Op dinsdag 22 december 2009 09:47 schreef hamkaastosti het volgende:
ik snap die die(); elke keer als een field niet klopt niet zo goed. Het lijkt me handiger om gewoon een array met errors bij te houden en een array met gecheckte velden. Die errors gebruik je om je form opnieuw weer te geven met de fout onder elk veld en de array met gecheckte velden gebruik je om je database te vullen.
Verder is het handig om trim te gebruiken om per ongeluk ingevulde spaties te verwijderen.
Mijn validator gebruikt trouwens op meer plekken filter_var en heeft private functions al required() en length()
Zelfs dan, je hebt van die tijdelijke e-mailadressen. Maar goed, dit gaat vooral om klantbestanden e.d. dus dit wordt intern gebruikt.quote:Op dinsdag 22 december 2009 15:40 schreef hamkaastosti het volgende:
het probleem met het valideren van email is dat je 's werelds beste filter nog om de tuin kunt leiden door gewoon een valide mailadres in te vullen terwijl het adres misschien niet eens werkt. Wil je echt iemands mail aan iets koppelen dan zul je hem een mailtje moeten sturen met een link erin die de gebruiker moet volgen
Ja daar zitten ze wel in, maar hoe weet je welke de geselecteerde waarde is in de dropdown?quote:Op woensdag 23 december 2009 09:16 schreef hamkaastosti het volgende:
als het goed is zitten alle waarden van je form in de $_POST array
http://www.w3schools.com/php/php_forms.asp
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |