Как войти в систему с помощью Bootstrap и PHP?

#php #login

#php #войти

Вопрос:

В настоящее время я создаю небольшое приложение для управления количеством комиксов, которые у меня есть в настоящее время. Я использую MVC в notepad , я бы использовал фреймворк, однако это небольшое приложение, поэтому не видел в нем необходимости. Я использую PHP backend и Twitter Bootstrap в качестве интерфейса, однако у меня возникает проблема при входе в систему с использованием сеансов. Я зарегистрировался с помощью приложения, которое работает без проблем, однако, когда я пытаюсь войти в систему с учетными данными, оно просто продолжает загружаться index.php вместо того , чтобы login.php .

Вид

заголовок.phtml

 <!DOCTYPE html>
<?php
if (!isset($_SESSION)) {
    session_start();
}
?>
<html>
    <head>
        <link href="css/custom.css" rel="stylesheet">
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <link href="css/bootstrap.css" rel="stylesheet">
        <title>My Comics</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body onload="initialize()" style="background-color: #D3D3D3;">
    <!-- If email is does not equal email in database then remain in index page -->
        <?php if (isset($_SESSION['Email']) amp;amp; $_SESSION['Email'] <> ''): ?>
    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
         <?php endif; ?>
        <div class="container">
          <!-- If email does equal the one given in database login to profile -->
          <?php if (isset($_SESSION['Email'])): ?>
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>       
                    <?php endif; ?>
                <a class="navbar-brand" href="index.html">My Comics</a>
            </div>
            <div class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="home.php">Home</a></li>                  
                </ul>                 
                   <!-- Display logout button along with users email -->
                <?php if (isset($_SESSION['Email']) amp;amp; $_SESSION['Email'] <> ''): ?>
                    <div class="navbar-search navbar-brand pull-right">
                        <?php if (isset($_SESSION['Email'])): ?>
                            <form action="logout.php" method="post">
                               <!-- Welcome message for user with logout button -->
                                <?php if ($_SESSION['Email'] != "") echo "Welcome " . $_SESSION['Email']; ?>
                                <input type="submit" value="Logout" name="submit" class="btn-danger"/>
                            </form>
                        <?php endif; ?>
                    </div>
                    </div>
                  <!-- Login Form for users -->
                <?php else: ?>
                <form class="navbar-form navbar-right" action="login.php" method="post">
                    <div class="form-group">
                        <input name="Email" value="Email" id="Email" type="text" class="form-control" placeholder="Enter Username">
                    </div>
                    <div class="form-group">
                        <input name="Password" value="Password" id="Password" type="password" class="form-control" placeholder="Enter Password">
                    </div>
                    <button name="submit" type="submit" name="submit" id="submit" class="btn btn-default">Login</button>
                </form>
                 <?php endif; ?>
            <!--/.nav-collapse -->
        </div>
    </div>
    <div class="container">
 

Модель
LoginData.php

 <?php

class LoginData {

    protected $Name, $Email, $Password;

    public function __construct($dbrow) {
        $this->Name = $dbrow['Name'];
        $this->Email = $dbrow['Email'];
        $this->Password = $dbrow['Password'];
    }

     function getName() {
        return $this->Name;
    }

    function getEmail() {
        return $this->Email;
    }

    function getPassword() {
        return $this->Password;
    }

    function logout() {
        $_SESSION = array();
        session_destroy();
    }

}
 

LoginDataSet.php

 <?php

require_once('Model/Database.php');
require_once('Model/LoginData.php');

class LoginDataSet {

    protected $_dbHandle, $_dbInstance = null;

    public function __construct() {
        $this->_dbInstance = Database::getInstance();
        $this->_dbHandle = $this->_dbInstance->getdbConnection();
    }

    public function fetchLoginDetails($Email, $Password) {

        $Password = crypt($Password, $Email);

        $sqlQuery = "SELECT * FROM users WHERE Email=:u AND Password=:p"; //basic SQL Query

        $statement = $this->_dbHandle->prepare($sqlQuery); //Prepare PDO statement
        //SQL Injection
        $statement->execute(array(
            ':u' => $Email,
            ':p' => $Password
        )); //Executes PDO statement
        $dataSet = [];
        while ($row = $statement->fetch()) { //Fetches the next row matching the query
            $dataSet[] = new LoginData($row);
        }

        return $dataSet;
    }

    public function fetchProfileDetails($Name) {
        $sqlQuery = "SELECT * user WHERE Name='" . $Name . "'";

        $statement = $this->_dbHandle->prepare($sqlQuery); //Prepare PDO statement
        $statement->execute(); //Executes PDO statement

        $dataSet = [];
        while ($row = $statement->fetch()) { //Fetches the next row matching the query
            $dataSet[] = new LoginData($row);
        }

        return $dataSet;
    }

}

?>
 

Контроллер

 <?php

//session start will always be an email
session_start();
$view = new stdClass();
$view->pageTitle = 'LoggedIn';

require_once ('Model/LoginDataSet.php');

//if submit is pressed
if (isset($_POST['submit'])) {
    //check the email and password against the one in the database.
    $LoginDataSet = new LoginDataSet();
    //if email and password matches one in the database
    $view->LoginDataSet = $LoginDataSet->fetchLoginDetails($_POST['Email'], $_POST['Password']);
    //get the variables below using the functions of logindataset
    if (count($view->LoginDataSet) == 1) {
        $_SESSION['Email'] = $_POST['Email'];
        $_SESSION['Name'] = $view->LoginDataSet[0]->getName();

       //continue on to profile page
        header("Location:home.php");
    } else {
        //if incorrect return to index page with error
        $_SESSION['error'] = "logindetails";
        header("Location:index.php");
    }
}

require_once('View/home.phtml');
 

Вот как это выглядит в настоящее время Индекс проблемы

Вот как это должно выглядеть Должно выглядеть так

Я разработал веб-сайт сначала на HTML, а затем динамически на PHP, что я обычно и делаю. Однако это не приведет к login.php контроллер он просто продолжает обновляться index.php , Есть ли что-нибудь конкретное, что кто-нибудь замечает, что могло бы исправить это, чтобы оно вошло в систему, а также не избавилось от имени приложения и кнопки?

Любая помощь будет с благодарностью принята.

Комментарии:

1. Удалите перенаправления в вашем контроллере, у вас есть перенаправление на index.php . Затем начните отладку, и если у вас по-прежнему возникают проблемы, отправьте более краткий вопрос. Прочитайте раздел «Как задать вопрос».

2. Привет, перенаправления включены в инструкцию if / else, я знаю, что информация, которую я ввожу, верна, однако она по-прежнему не регистрирует меня, как мне хотелось бы, что является приветствием [Email protected] и кнопкой выхода из системы, заменяющей форму входа в панель навигации в заголовке.

3. Если вы не собираетесь отлаживать и изолировать свою проблему дальше (мое предложение выше), то вы вряд ли получите помощь здесь.

4. session_start() должен вызываться перед любым выводом. Почему там <!DOCTYPE html> , где это? Скорее всего, это ваша проблема. Включение error_reporting(E_ALL); ini_set('display_errors', '1'); покажет ошибку.

5. Привет, ребята, в нем говорится, что проблема заключается в неопределенном индексе электронной почты и пароля? Как бы я определил их в MVC, поскольку я уже установил переменные или думал, что я сделал в LoginDataSet, используя метод fetchLoginDetails в контроллере входа?