我是PHP和MVC的新手。我不想使用任何框架,如CodeIgniter或Laravel。我想从头开始学习这个。我正在尝试创建一个登录页面。所以这是我的代码:
HTML code:
<html>
<body>
<h2></h2>
<form action="" method="post">
<input type="text" name="username">
<input type="text" name="password">
<input type="submit" value="Login">
</form>
</body>
</html>
Text.class.php代码:
<?php
class Text {
function __construct()
{
}
private function sanitize($text) {
$sanitizedText = htmlspecialchars($text, ENT_QUOTES);
return $sanitizedText;
}
}
?>
数据库连接代码(connection.php):
<?php
class Connection {
public function dbc() {
$host = 'localhost';
$db = 'database1';
$user = 'root';
$pass = 'password123';
$charset = 'utf8';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
return new PDO($dsn, $user, $pass, $opt);
}
}
?>
控制器代码(LoginController.php):
<?php
include_once('Text.class.php');
class LoginController {
private $model;
public function __construct() {
$this->model = new LoginModel();
}
public function login($usernameOrEmail, $password) {
$usernameOrEmail = sanitize($usernameOrEmail);
$password = sanitize($password);
if(!empty($usernameOrEmail) && !empty($password)) {
if(isset($_POST['usernameOrEmail']) && isset($_POST['password'])) {
$usernameOrEmail = $_POST['usernameOrEmail'];
$password = $_POST['password'];
$this->model->loginUser($usernameOrEmail, $password);
} else {
return "Please enter a username or password.";
die();
}
} else {
return "Please enter a username or password.";
die();
}
}
}
?>
型号代码(LoginModel.php):
<?php
include_once('connection.php');
class LoginModel() {
private $dbc;
private function loginUser($usernameOrEmail, $password) {
$stmt = $this->dbc->prepare("SELECT username, password FROM users WHERE username = :usernameOrEmail OR email = :usernameOrEmail AND password = :password");
$stmt->bindParam(':usernameOrEmail', $usernameOrEmail, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if($row) {
return "Login successful!"
} else {
return "Wrong username or password.";
die();
}
}
?>
我也有点困惑,我有3个问题:
如果可以,请告诉我回答我的问题并告诉我我做错了什么(如果我做错了什么)。
谢谢大家!