Probeer dit eens:
ini_set('display_errors','on');
Posts by r8934
-
-
Voor de foutafhandeling zijn meerdere dingen mogelijk.
Je kan met exceptions gaan werken.
Je kan een static class schrijven, of een registry class.
Je kan het ook via sessies doen en een getOnce() methode schrijven, die de sessie erna weer unset als de melding is getoond.
Het ligt er maar net aan wat jij fijn vind.
Het registreren is een mening, en geen echte vraag.
Ik plaats zoiets liever in de controller.
Er zijn ook genoeg mensen die er een aparte class voor schrijven, of het in de user class zetten. -
Hallo,
In je query staat:
"SELECT `password` FROM `Users` WHERE `username`= ? LIMIT 1"In deze query vraag je het wachtwoord op waar username gelijk is aan de ingevoerde waarde. Ik mis hier AND 'password' = ?.
Je vraag in de query alleen om een username niet om een wachtwoord.Je kan een propery aan je class meegeven die false wordt als er een fout is opgetreden.
Vervolgens kun je die met een method ophalen in je login script:Code
Toon Meerclass Bla { protected $valid = true; protected $message = 'FOUT!'; public function getError() { if(!$this->valid) { return $this->message; } else { return false; } } } // loginscript : $bla = new Bla(); echo $bla->getError()
De valid property zet je op false bij een foute login.
Edit:
Ik zie inderdaad dat je wel op wachtwoord controleert, aleen op een andere manier dan hoe ik gewend ben.
Ik vraag de user gegevens op als wachtwoord & username kloppen.Op jouw manier zal je dus 2 keer een database moeten aanroepen. 1x voor het wachtwoord en erna om de gevens eruit te halen.
Password_verify is trouwens om hashes te controleren die aangemaakt worden met password_hash(); -
Het eerste wat mij opvalt is alweer je query. Je controleert alleen of de gebruiker bestaat, en vervolgens geef je zelf het wachtwoord. Dit is dus niet inloggen, dit is alleen raad een gebruikersnaam in de database. Je controleert niet op het wachtwoord.
Vraag 1 heb je zelf al opgelost, zo zou ik het ook doen. Het was eerder een authentication class dan een user class.
Voor een userclass staat hier een voorbeeld van hoe victor het bedoelde.
Vraag 2 kan je doen door een extra tabel toe te voegen, en iedere foute poging daarin op te slaan, vervolgens te checken wanneer de laatste foute login was, en daarvanuit verder gaan.
Ik zou wel het account blokkeren en niet het ip adres.Zoals ik al eerder zei, ik zou database in de constructor meegeven. Gewoon een object als input. Dat werkt beter dan met globals werken.
-
Dat kan ook met phonegap.
Je moet alleen een key aanvragen bij google.
En dan kan je vanaf je server een pushbericht laten sturen.Je hebt niet eens een app nodig hiervoor als je echt alleen een notificatie wilt.
http://www.androidhive.info/20…saging-gcm-php-and-mysql/
-
Je kan een hele simpele app maken, die een pushbericht oid naar je telefoon verstuurt.
-
Wat luc zegt.
Zoiezo moeten die echo's eruit. En gebruik de echo's in de pagina's waar nodig. zo leg je je output niet vast, en blijft je class flexibel.
Verder zou ik gebruik maken van de constructor en daar $db als parameter meegeven, zo ben je niet afhankelijk van de globals, en kan je meerdere objecten van de class aanmaken zonder dat die dezelfde $db gebruikt.
EDIT:
Kijk eens naar je query -
Je hoeft niet voor elke functie een try catch te schrijven.
Als je in iedere function een exception eruit gooit als er iets mis gaat, hoef je het maar op 1 punt op te vangen.
EDIT:
Klik voor voorbeeld om exceptions naar een file weg te schrijven -
Np, jij ook bedankt!
-
Pacman was toch echt geen 1 april grap.
Vond het wel een leuk idee -
PHP
$query = "SELECT * FROM user JOIN klant ON klant.klant_id = user.klant_klant_id JOIN email ON email.user_user_id = user.user_id"; if(isset($_SESSION['klantid'])) { $query .= " WHERE klant_klant_id = '".$_SESSION['klantid']."' "; } if(isset($_SESSION['sorted'])) { $query .= " ORDER BY '".$_SESSION['sorted']."' "; }
Je kan ook met ifjes controleren of de sessies gezet zijn, en dan de query aanpassen/verlengen?
-
AngularJS kan dit.
op de inputveld zet je een ng-model="naam"
en waar je wilt dat het verschijnt zet je {{naam}}.Wat er ingevuld wordt in het input veld verschijnt dan automatisch op de plaats waar {{naam}} staat.
Om hier gebruik van te maken hoef je alleen angular.js te includen.
Kan ook vanaf een CDN.