login class mvc
ik ben bezig met een mvc project(bootstrap)
hij werkt al (mvc.kennysinkeler.nl)
alleen nu wil ik een login script er bij enzo
ik krijg hem nu niet werkend
dit is me user.php(controller)
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
29
30
31
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
<?php
class user extends Controller
{
/**
* PAGE: index
* This method handles what happens when you move to http://yourproject/ (which is the default page btw)
*/
public function index()
{
// load views
require APP . 'views/_templates/header.php';
require APP . 'views/login/index.php';
require APP . 'views/_templates/footer.php';
}
public function login()
{
$password = password_hash($_POST['password'], CRYPT_BLOWFISH);
$login = $this->model->login($_POST['email'], $password);
if ($fetched) {
if (password_verify($password, $fetched['password'])) {
$_SESSION['loggedin'] = true;
$_SESSION['user'] = $name;
header("location: index.php");
exit;
} else {
echo 'username/wachtwoord combinatie incorrect';
}
}
}
}
?>
class user extends Controller
{
/**
* PAGE: index
* This method handles what happens when you move to http://yourproject/ (which is the default page btw)
*/
public function index()
{
// load views
require APP . 'views/_templates/header.php';
require APP . 'views/login/index.php';
require APP . 'views/_templates/footer.php';
}
public function login()
{
$password = password_hash($_POST['password'], CRYPT_BLOWFISH);
$login = $this->model->login($_POST['email'], $password);
if ($fetched) {
if (password_verify($password, $fetched['password'])) {
$_SESSION['loggedin'] = true;
$_SESSION['user'] = $name;
header("location: index.php");
exit;
} else {
echo 'username/wachtwoord combinatie incorrect';
}
}
}
}
?>
dit is me model(deel)
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
public function login($name)
{
$sql = "SELECT * FROM user WHERE emial='$name'";
$query = $this->db->prepare($sql);
$query->execute();
$fetched = $query->fetch();
return $fetched;
}
{
$sql = "SELECT * FROM user WHERE emial='$name'";
$query = $this->db->prepare($sql);
$query->execute();
$fetched = $query->fetch();
return $fetched;
}
met vriendelijke groet kenny
emial moet email zijn ?
maar hij zegt dat me $fetched niet bestaat
je hebt de login variable toegewezen aan de model/ niet fetched
{
$sql = "SELECT * FROM user WHERE emial='$name'";
$query = $this->db->prepare($sql);
$query->execute();
$fetched = $query->fetch();
return $fetched;
}
hier in :) dacht da dat ook kon
Gewijzigd op 26/11/2014 17:06:35 door kenny iets
Jij roept je model aan met $login, dus zul je ook $login moeten nakijken of die wel bestaat en of alles wel wordt terug gestuurd.
Wel kun je in een class value's van je variable overzetten die je weer "global" in de class kunt gebruiken waar deze is gezet.
bijv. :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php // Dit is om de kleur aan te roepen op phphulp.
// Om het gemakkelijk te maken simuleer ik hier eloquent omdat het makkelijk te gebruiken is.
class login extends eloquent {
private $_user = 0;
public function getUser($id) {
if(is_int($id)) {
$user = login::where('id', '=', $id)->first();
} elseif(is_string) {
$user = login::where('email', '=', $id)->first();
}
// Nu geven we de "global _user" alle data van $user.
$this->_user = $user;
// Nu kunnen we dit doen
echo $this->_user->email;
}
}
?>
// Om het gemakkelijk te maken simuleer ik hier eloquent omdat het makkelijk te gebruiken is.
class login extends eloquent {
private $_user = 0;
public function getUser($id) {
if(is_int($id)) {
$user = login::where('id', '=', $id)->first();
} elseif(is_string) {
$user = login::where('email', '=', $id)->first();
}
// Nu geven we de "global _user" alle data van $user.
$this->_user = $user;
// Nu kunnen we dit doen
echo $this->_user->email;
}
}
?>
Let op zoiets kan ook met PDO.
Moetje wel even zoeke,
dus als ik get zo begrijp moet je de login dingen via me model verlaten lopen en de error returnen naar login.php?
Dan zou je ozzie, wouter j en als ik het goed heb ward even moeten vragen.
Maar zelf probeer ik altijd mijn controllers zo net mogelijk te houden.
Dus geen set sessions of iets dergelijks.
mijn login voorbeeld :
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
29
30
31
32
33
34
35
36
37
38
39
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
<?php if (!defined('DMZ_MVC') or !constant('DMZ_MVC')) die('Direct access not allowed!');
/**
* @filesource application/controllers/login.controller.php
* @namespace none
* @author Wouter van Marrum
* @package Dmz Framework
* @copyright 2014 (c) All Rights Reserved.
* @version v0.1
* @category Login controller
* @created 12-11-14
*/
/**
* Main controller class
*/
class Login extends DmzController {
public function __construct() {
parent::__construct();
}
public function index() {
$this->blade->make("dashboard.login");
}
public function doLogin() {
if(isset($_POST)) {
$login = $this->loadModel('login', 'DmzLogin');
$message = $login->doCheck($_POST);
}
$this->blade->make('dashboard.login', array("message"=>$message));
}
}
?>
/**
* @filesource application/controllers/login.controller.php
* @namespace none
* @author Wouter van Marrum
* @package Dmz Framework
* @copyright 2014 (c) All Rights Reserved.
* @version v0.1
* @category Login controller
* @created 12-11-14
*/
/**
* Main controller class
*/
class Login extends DmzController {
public function __construct() {
parent::__construct();
}
public function index() {
$this->blade->make("dashboard.login");
}
public function doLogin() {
if(isset($_POST)) {
$login = $this->loadModel('login', 'DmzLogin');
$message = $login->doCheck($_POST);
}
$this->blade->make('dashboard.login', array("message"=>$message));
}
}
?>
Hopelijk heeft het iets geholpen :)
ja dankje
iemand nog?
Kenny iets op 26/11/2014 17:49:36:
dus als ik get zo begrijp moet je de login dingen via me model verlaten lopen en de error returnen naar login.php?
Ik vraag me af of je het dan wel goed begrijpt :-)
Een Model is een term die gebruikt wordt in een MVC ontwerp.
Ik neem aan dat je het hier over hebt.
Deze 'Model' is de laag tussen de database class (zoals PDO en mysqli) en je Controller. Het is de plek waar je je queries schrijft, de database class aanroept en het resultaat terugstuurt naar de controller.
Er zijn niet alleen MVC ontwerpen maar ook nog een aantal anderen waarin het soms net weer iets anders gaat of het beestje net weer een andere naam heeft.
Om het beter te gaan begrijpen zou je eens een keertje naar bijvoorbeeld CodeIgniter kunnen kijken. Het is een lichtgewicht Framework in het MVC model.
Toevoeging op 30/11/2014 14:06:20:
video tut: https://www.youtube.com/watch?v=PqLG9Ed0o_0&list=PLUpnKy5Si8zDouvZiUMHwSSyVrowJmH22
Gewijzigd op 30/11/2014 14:05:28 door Frank Nietbelangrijk