Skip to content

Latest commit

 

History

History
826 lines (470 loc) · 19.7 KB

File metadata and controls

826 lines (470 loc) · 19.7 KB

Criando um site administrável com PHP

https://www.schoolofnet.com/projeto-pratico/php/php-7/criando-um-site-administravel-com-php/

Neste projeto prático vamos criar um site administrável com PHP com base em um template pré-existente, de forma que possamos incluir novas páginas e gerenciar as existentes de forma prática e eficiente, sem a necessidade de alterar qualquer arquivo, tudo direto no navegador e protegido com usuário e senha.


Voltar ao Índice


  • 08-Criando-um-site-administravel-com-PHP/public/index.php
<?php

require __DIR__.'/../bootstrap.php';
  • 08-Criando-um-site-administravel-com-PHP/bootstrap.php
<?php

echo "Olá Mundo!";
> php -S localhost:8080 -t public/

PHP 7.2.1 Development Server started at Tue Jan  8 00:23:44 2019
Listening on http://localhost:8080
Document root is C:\Users\josemalcher\Documents\01-SERVs\xampp_php7.2.1\htdocs\schoolOfNet-Iniciante-em-PHP\08-Criando-um-site-administrave
l-com-PHP\public
Press Ctrl-C to quit.

Voltar ao Índice


<?php
//!empty($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';
$path = $_SERVER['PATH_INFO'] ?? '/';

if ($path == '/'){
    require __DIR__.'/site/routes.php';
}else{
    echo 'Página não encontrada';
}

Voltar ao Índice


<?php
//!empty($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';
$path = $_SERVER['PATH_INFO'] ?? '/';

if ($path == '/'){
    require __DIR__.'/site/routes.php';
}elseif ($path == '/admin'){
    require __DIR__.'/admin/routes.php';
}
else{
    echo 'Página não encontrada';
}

Voltar ao Índice


  • 08-Criando-um-site-administravel-com-PHP/bootstrap.php
<?php
//!empty($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';

function resolve($route){
    $path = $_SERVER['PATH_INFO'] ?? '/';
    $route = '/^' . str_replace('/','\/', $route) . '$/';

    if(preg_match($route, $path, $params)){
        return $params;
    }
    return false;
}

if (resolve('/admin/?(.*)')){
    require __DIR__.'/admin/routes.php';
}elseif (resolve('/(.*)')){
    require __DIR__.'/site/routes.php';
}
  • 08-Criando-um-site-administravel-com-PHP/admin/routes.php
<?php
/**
 * Created by PhpStorm.
 * User: josemalcher
 * Date: 16/01/2019
 * Time: 20:32
 */
if(resolve('/admin')){
    echo 'Administração';
}elseif (resolve('/admin/pages')){
    echo 'Página Admin';
}else{
    echo 'Página não encontrada';
}

Voltar ao Índice


  • 08-Criando-um-site-administravel-com-PHP/templates/admin/home.tpl.php
  • 08-Criando-um-site-administravel-com-PHP/templates/site/home.tpl.php

Voltar ao Índice


  • 08-Criando-um-site-administravel-com-PHP/src/resolve-route.php
  • 08-Criando-um-site-administravel-com-PHP/src/render.php
  • 08-Criando-um-site-administravel-com-PHP/src/connection.php

Voltar ao Índice


  • 08-Criando-um-site-administravel-com-PHP/src/error_handle.php

Voltar ao Índice


  • 08-Criando-um-site-administravel-com-PHP/condig.php

Voltar ao Índice


    http_response_code(500);
    
    http_response_code(404);
    

Voltar ao Índice


  • 08-Criando-um-site-administravel-com-PHP/templates/admin.tpl.php

Voltar ao Índice


<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

    <title>Painel Administrativo</title>
</head>
<body>

<div id="header">
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
        <a href="" class="navbar-brand">JoseMalcher.net</a>
        <span class="navbar-text">
            Painel Administrativo
        </span>
    </nav>
</div>
<div id="main">
    <div class="row">
        <div class="col">
            <ul class="nav flex-column nav-pills bg-secondary text-white p-2">
                <li class="nav-item">
                    <span class="nav-link text-white-50"><small>MENU</small></span>
                </li>
                <li class="nav-item">
                    <a href="" class="nav-link active">Páginas</a>
                </li>
                <li class="nav-item">
                    <a href="" class="nav-link">Usuário</a>
                </li>
            </ul>
        </div>
        <div class="col-10">
            <?php include $content ?>
        </div>
    </div>
</div>
<div id="footer"></div>





<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
</body>
</html>

Voltar ao Índice


  • 08-Criando-um-site-administravel-com-PHP/public/css/style.css

Voltar ao Índice


  • 08-Criando-um-site-administravel-com-PHP/admin/routes.php
<?php

if(resolve('/admin')){
    render('admin/home', 'admin');

}elseif (resolve('/admin/pages')){
    render('admin/pages/index', 'admin');

}elseif (resolve('/admin/pages/create')){
    render('admin/pages/create', 'admin');

}elseif (resolve('/admin/pages/(\d)+')){
    render('admin/pages/view', 'admin');

}elseif (resolve('/admin/pages/(\d)+/edit')){
    render('admin/pages/edit', 'admin');

}elseif (resolve('/admin/pages/(\d)+/delete')){
    header('location: /admin/pages');

}else{
    http_response_code(404);
    echo 'Página não encontrada';
}

Voltar ao Índice


  • templates\admin\pages\index.tpl.php
<h3 class="mb-5">Página Adminitração</h3>

<table class="table table-hover">
    <thead>
        <tr>
            <th>#</th>
            <th>Título</th>
            <th>Ações</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td><a href="/admin/pages/1">Página Inícial</a></td>
            <td class="text-right"><a href="/admin/pages/1" class="btn btn-primary btn-sm">Ver</a></td>
        </tr>
    </tbody>
</table>

<a href="/admin/pages/create" class="btn btn-secondary">NOVO</a>



Voltar ao Índice


  • templates\admin\pages\create.tpl.php
<h3 class="mb-5">Página Adminitração</h3>

<form action="" method="post">

    <div class="form-group">
        <label for="pagesTitle">Título</label>
        <input type="text" name="title" id="pagesTitle" class="form-control" placeholder="Título da Página...">
    </div>
    <div class="form-group">
        <label for="pagesUrl">URL</label>
        <div class="input-group">
            <div class="input-group-prepend">
                <span class="input-group-text">/</span>
            </div>
            <input type="text" name="url" id="pagesUrl" class="form-control" placeholder="URL Amigável...">
        </div>
    </div>
    <div class="form-group">
        // editor de texto
    </div>
    <button type="submit" class="btn btn-primary">Salvar</button>
</form>
<hr>
<a href="/admin/pages" class="btn btn-secondary">Voltar</a>

Voltar ao Índice


Voltar ao Índice


  • templates\admin\pages\view.tpl.php
<h3 class="mb-5">Página Adminitração</h3>

<div class="row">
    <div class="col-3">
        <dl class="row">
            <dt class="col-sm-4">Título</dt>
            <dd class="col-sm-8">Página inicial</dd>

            <dt class="col-sm-4">URL</dt>
            <dd class="col-sm-8">/ - <a href="/" target="blank">abrir</a></dd>

            <dt class="col-sm-4">Criado em</dt>
            <dd class="col-sm-8">2018-02-06 22:30</dd>

            <dt class="col-sm-4">Atualizado em</dt>
            <dd class="col-sm-8">2018-02-06 23:30</dd>
        </dl>
    </div>
    <div class="col bg-light">
        <h3>Página inicial</h3>
        <p>Está é a página inicilal do site</p>
    </div>
</div>
<p>
    <a href="/admin/pages/1/edit" class="btn btn-primary">Editar</a>
    <a href="/admin/pages/1/delete" class="btn btn-danger">Remover</a>
</p>


<a href="/admin/pages" class="btn btn-secondary">Admin Páginas</a>

Voltar ao Índice


  • templates\admin\pages\edit.tpl.php
<h3 class="mb-5">Edição da Página</h3>

<form action="" method="post">

    <div class="form-group">
        <label for="pagesTitle">Título</label>
        <input type="text" name="title" id="pagesTitle" class="form-control" placeholder="Título da Página..." required value="Página inicial"> 
    </div>
    <div class="form-group">
        <label for="pagesUrl">URL</label>
        <div class="input-group">
            <div class="input-group-prepend">
                <span class="input-group-text">/</span>
            </div>
            <input type="text" name="url" id="pagesUrl" class="form-control" placeholder="URL Amigável..." required>
        </div>
    </div>
    <div class="form-group">
    <input type="hidden" name="body" id="pagesBody" value=" <h3>Página inicial</h3>
        <p>Está é a página inicilal do site</p>">
        <trix-editor input="pagesBody"></trix-editor>
    </div>
    <button type="submit" class="btn btn-primary">Salvar</button>
</form>
<hr>
<a href="/admin/pages/1" class="btn btn-secondary">Voltar</a>

Voltar ao Índice


  • admin\pages\db.php
  • admin\pages\routes.php

Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice


Voltar ao Índice