https://www.udemy.com/curso-php-7-online/
- 01 Introdução ao PHP
- 02 Entendendo Controle de versão
- 03 Conhecendo a Linguagem PHP
- 04 Estruturas de Controle e Laços de repetição
- 05 Arrays em PHP
- 06 Sessão no PHP 7
- 07 Trabalhando com Funções em PHP
- 08 Trabalhando com Data e Hora no PHP
- 09 Programação Orientada a Objetos - Introdução
- 10 Banco de Dados - Preparando o Ambiente
- 11 Banco de Dados - MySQLi
- 12 Banco de Dados - PDO
- 13 Banco de Dados - Data Access Object e PDO
- 14 Manipulando Arquivos
- 15 Tratando Erros com Try Catch
- 16 Trabalhando com Imagens e o PHP usando a Biblioteca GD
- 17 Gerando Boletos com o BoletoPHP
- 18 Gerenciando dependências com Composer
- 19 Trabalhando com E-mails usando a classe PHPMailer
- 20 Criando Templates com RainTPL
- 21 Criando Diretórios Virtuais com o Apache
- 22 Slim Framework
- 23 Segurança no PHP 7
- 24 Projeto E-Commerce Admin
-
História: https://pt.wikipedia.org/wiki/PHP
-
mundo das funções PHP: http://micmap.org/php-by-example/pt
Curso de controle de versão com Git - http://dev.rbtech.info/curso-controle-versao-git-aula-1/
<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var"; // exibe "Bob, Joe"
$4site = 'not yet'; // inválido; começa com um número
$_4site = 'not yet'; // válido; começa com um sublinhado
$täyte = 'mansikka'; // válido; 'ä' é um caracter ASCII (extendido) 228
?>
Superglobais — Superglobais são variáveis nativas que estão sempre disponíveis em todos escopos
$GLOBALS — Referencia todas variáveis disponíveis no escopo global
$_SERVER — Informação do servidor e ambiente de execução
$_GET — HTTP GET variáveis
$_POST — HTTP POST variables
$_FILES — HTTP File Upload variáveis
$_REQUEST — Variáveis de requisição HTTP
$_SESSION — Variáveis de sessão
$_ENV — Environment variables
$_COOKIE — HTTP Cookies
$php_errormsg — A mensagem de erro anterior
$HTTP_RAW_POST_DATA — Informação não-tratada do POST
$http_response_header — Cabeçalhos de resposta HTTP
$argc — O número de argumentos passados para o script
$argv — Array de argumentos passados para o script
<?php
$a = 1; /* escopo global */
function Teste()
{
echo $a; /* referencia uma variável do escopo local (não definida) */
}
Teste();
?>
printf — Mostra uma string formatada
str_split — Converte uma string para um array strlen — Retorna o tamanho de uma string strpos — Encontra a posição da primeira ocorrência de uma string strrchr — Encontra a ultima ocorrência de um caractere em uma string substr_count — Conta o número de ocorrências de uma substring substr_replace — Substitui o texto dentro de uma parte de uma string substr — Retorna uma parte de uma string trim — Retira espaço no ínicio e final de uma string
http://php.net/manual/pt_BR/function.include.php
- http://php.net/manual/pt_BR/control-structures.if.php
- https://secure.php.net/manual/pt_BR/control-structures.elseif.php
<?php
/* Incorrect Method: */
if($a > $b):
echo $a." is greater than ".$b;
else if($a == $b): // Will not compile.
echo "The above line causes a parse error.";
endif;
/* Correct Method: */
if($a > $b):
echo $a." is greater than ".$b;
elseif($a == $b): // Note the combination of the words.
echo $a." equals ".$b;
else:
echo $a." is neither greater than or equal to ".$b;
endif;
?>
<?php
switch ($i):
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
default:
echo "i is not equal to 0, 1 or 2";
endswitch;
?>
<?php
/* exemplo 1 */
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
/* exemplo 2 2 */
for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}
/* exemplo 3 */
$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}
/* exemplo 4 */
for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
foreach (array_expression as $key => $value)
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
<?php
/* example 1 */
$i = 1;
while ($i <= 10) {
echo $i++; /* the printed value would be
$i before the increment
(post-increment) */
}
/* example 2 */
$i = 1;
while ($i <= 10):
echo $i;
$i++;
endwhile;
?>
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
<?php
$array = array("foo", "bar", "hello", "world");
var_dump($array);
?>
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
// {"a":1,"b":2,"c":3,"d":4,"e":5}
<?php
// Nomes de constantes válidos
define("FOO", "alguma coisa");
define("FOO2", "alguma outra coisa");
define("FOO_BAR", "alguma coisa mais");
// Nomes de constantes inválidas
define("2FOO", "alguma coisa");
// Isto é válido, mas deve ser evitado:
// O PHP pode vir a fornercer uma constante mágica
// que danificará seu script
define("__FOO__", "alguma coisa");
?>
<?php
// Funciona a partir do PHP 5.3.0
const CONSTANT = 'Hello World';
echo CONSTANT;
// Funciona a partir do PHP 5.6.0
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo ANOTHER_CONST;
const ANIMALS = array('dog', 'cat', 'bird');
echo ANIMALS[1]; // imprime "cat"
// A partir do PHP 7
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // imprime "cat"
?>
<?php
session_start();
$_SESSION['nome'] = 'Hcode'; // cria uma variável
<?php
require_once("config.php"); //exemplo
session_start();
//session_unset($_SESSION['name']); //
session_destroy(); // limpa e remove
echo $_SESSION['nome'];
//<?php
require_once ("config.php");
echo session_id();
// qul7ol54iioorahbbdn800mrl0
<?php
require_once ("config.php");
session_regenerate_id(); //gera id a cada refresh
echo session_id();
<?php
session_start();
if (empty($_SESSION['count'])) {
$_SESSION['count'] = 1;
} else {
$_SESSION['count']++;
}
?>
<p>
Olá visitante, você acessou esta página <?php echo $_SESSION['count']; ?> vezes.
</p>
<p>
Para continuar, <a href="nextpage.php?<?php echo htmlspecialchars(SID); ?>">clique
aqui</a>.
</p>
<?php
require_once ("config.php");
echo session_save_path();
echo "<br>";
switch (session_status()){
case PHP_SESSION_DISABLED:
echo " as sessões estiverem desabilitadas.";
break;
case PHP_SESSION_NONE :
echo "as sessões estiverem habilitadas, mas nenhuma existir.";
break;
case PHP_SESSION_ACTIVE:
echo "as sessões estiverem habilitadas, e uma existir.";
break;
}
<?php
function ola(){
return "Olá mundo<br>";
}
echo ola();
$frase = ola();
echo strlen($frase);
<?php
function salario(){
return 2008.90;
}
echo "Recebi R$ " . (salario());
<?php
function ola($nome = "Mundo", $periodo = "Bom dia"){
return "Olá $nome, $periodo <br>";
}
echo ola();
echo ola("");
echo ola("José");
echo ola("Silva", "Boa noite");
<?php
function ola(){
$argumentos = func_get_args();
return $argumentos;
}
var_dump(ola("Bom dia", 10));
<?php
$a = 10;
function trocaValor(&$a){ //Passagem de parâmetro por referência (&$a)
//function trocaValor($a){
$a += 50;
return $a;
}
echo trocaValor($a); // 60
echo "<br>";
echo $a; // 10 ($a)
echo $a; // 60 (&$a)
<?php
$pessoa = array('nome' =>'José', 'idade' => 20);
foreach ($pessoa as &$value){
if(gettype($value) === 'integer') $value += 10;
echo $value . '<br>';
}
print_r($pessoa);
<?php
function soma(int ...$valores){
return array_sum($valores);
}
echo soma(2,2);
echo '<br>';
echo soma(25,25);
echo '<br>';
echo soma(2.2,2.5);
echo '<br>';
<?php
function soma(float ...$valores):string {
return array_sum($valores);
}
echo var_dump(soma(2,2));
echo '<br>';
echo soma(25,25);
echo '<br>';
echo soma(2.2,2.5);
echo '<br>';
<?php
$hierarquia = array(
array(
'nome_cargo'=>'CEO',
'subordinados'=>array(
array(
'nome_cargo'=>'Direto Comercial',
'subordinados', array(
array(
'nome_cargo'=>'Gerente de vendas'
)
)
),
array(
'nome_cargo'=>'Diretor Financeiro',
'subordinados' => array(
array('nome_cargo'=>'supervisode de Pagamentos'
)
)
),
array(
'nome_cargo'=>'gerente de compras',
'subordinados' => array(
array(
'nome_cargo'=> 'Supervisor de suprimentos'
)
)
)
)
)
);
function exibe($cargos){
$html = '<ul>';
foreach ($cargos as $cargo){
$html .= "<li>";
$html .= $cargo['nome_cargo'];
if(isset($cargo['subordinados']) && count($cargo['subordinados'])> 0){
$html .= exibe($cargo['subordinados']);
}
$html .= "</li>";
}
$html .= '</ul>';
return $html;
}
echo exibe($hierarquia);
<?php
function teste($callabck){
//processo lento...
$callabck();
}
teste(function(){
echo "TERMINOU!!";
});
<?php
$fn = function ($a){
var_dump($a);
};
$fn("OLá");
//string(4) "OLá"
<?php
echo date("d/m/Y H:i:s");
echo "<br>";
echo time();
<?php
$ts = strtotime('1984-08-12');
//$ts = strtotime("now");
//$ts = strtotime("+1 day");
//$ts = strtotime("+1 week");
echo $ts;
echo "<br>";
echo date("1, d/m/Y", $ts);
- https://secure.php.net/manual/pt_BR/function.strftime.php
- https://pt.stackoverflow.com/questions/8317/como-fazer-a-fun%C3%A7%C3%A3o-date-formatar-uma-data-em-portugu%C3%AAs
<?php
setlocale(LC_TIME, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese');
echo strftime('%A, %d de %B de %Y', strtotime('today'));
<?php
$dt = new DateTime();
echo $dt->format("d/m/Y H:i:s");
echo "<br>";
$periodo = new DateInterval("P15D"); // + 15 DIAs
$dt->add($periodo);
echo $dt->format("d/m/Y H:i:s");
-
040 Conceitos de Programaçãoo Orientada a Objetos
-
https://code.tutsplus.com/pt/tutorials/object-oriented-php-for-beginners--net-12762
-
041 Criando uma Classe
<?php
class Pessoa {
public $nome;
function falar() {
return "O meunome é ".$this->nome;
}
}
$jose = new Pessoa();
$jose->nome = "Jose Malcher Jr.";
echo $jose->falar();
- 042 Atributos e Métodos
<?php
class Carro{
private $modelo;
private $motor;
private $ano;
public function getModelo(){
return $this->modelo;
}
public function setModelo($modelo){
$this->modelo = $modelo;
}
public function getMotor(): float{
return $this->motor;
}
public function setMotor($motor){
$this->motor = $motor;
}
public function getAno():int{
return $this->ano;
}
public function setAno($ano){
$this->ano = $ano;
}
public function exibir(){
return array(
"modelo" => $this->getModelo(),
"motor" => $this->getMotor(),
"ano" => $this->getAno()
);
}
}
$gol = new Carro();
$gol->setModelo("Gol GT");
$gol->setMotor("1.6");
$gol->setAno("1999");
var_dump($gol->exibir());
- 043 Métodos Estáticos
<?php
class Documento
{
private $numero;
public function getNumero()
{
return $this->numero;
}
public function setNumero($numero)
{
$resultado = Documento::validarCPF(); // acessando o método statico
if ($resultado == false) :
throw new Exception("CPF informado é invalido", 1);
endif;
$this->nuemro = $numero;
}
public static function validarCPF($cpf):bool
{
if (empty($cpf)) {
return false;
}
$cpf = preg_match('/[0-9]/', $cpf) ? $cpf : 0;
$cpf = str_pad($cpf, 11, '0', STR_PAD_LEFT);
if (strlen($cpf) != 11) {
echo "length";
return false;
} else if ($cpf == '00000000000' ||
$cpf == '11111111111' ||
$cpf == '22222222222' ||
$cpf == '33333333333' ||
$cpf == '44444444444' ||
$cpf == '55555555555' ||
$cpf == '66666666666' ||
$cpf == '77777777777' ||
$cpf == '88888888888' ||
$cpf == '99999999999') {
return false;
} else {
for ($t = 9; $t < 11; $t++) {
for ($d = 0, $c = 0; $c < $t; $c++) {
$d += $cpf {
$c} * (($t + 1) - $c);
}
$d = ((10 * $d) % 11) % 10;
if ($cpf {
$c} != $d) {
return false;
}
}
return true;
}
}// FIM validarCPF
}
// $cpf = new Documento();
// $cpf->setNumero("78991633234");
// var_dump($cpf->getNumero());
var_dump(Documento::validarCPF("123456798"));
- 044 Métodos Mágicos
<?php
class Endereco{
private $rua;
private $numero;
private $cidade;
public function __construct($a,$b,$c)
{
$this->rua = $a;
$this->numero = $b;
$this->cidade = $c;
}
public function __destruct()
{
//var_dump("DESTRUIR");
}
public function __toString()
{
return $this->rua.", " . $this->numero. ", ". $this->cidade;
}
}
$meuendereco = new Endereco("Rua tal tal tal", 609, "Belém");
echo $meuendereco;
?>
- 045 Encapsulamento
<?php
class Pessoa{
public $nome = "José";
protected $idade = 33;
private $senha = "123456";
public function verDados(){
echo $this->nome . "<br/>";
echo $this->idade . "<br/>";
echo $this->senha . "<br >";
}
}
class Programador extends Pessoa{
public function verDados(){
echo "Classe: " . get_class($this) . "<br>";
echo $this->nome . "<br/>";
echo $this->idade . "<br/>";
//echo $this->senha . "<br >";
}
}
$objeto = new Programador();
//echo $objeto->senha;
$objeto->verDados();
- 046 Herança
<?php
class Documento{
private $numero;
public function getNumero()
{
return $this->numero;
}
public function setNumero($numero): void
{
$this->numero = $numero;
}
}
class CPF extends Documento{
public function validar(): bool{
$numeroCPF = $this->getNumero();
//VALIDAÇÃO DO CPF
return true;
}
}
$doc = new CPF();
$doc->setNumero("12312312312");
var_dump($doc->validar());
echo "<br>";
echo $doc->getNumero();
- 047 Interface
<?php
interface Veiculo{
public function acelerar($velocidade);
public function frenar($velocidade);
public function trocarMarcha($marcha);
}
class Civic implements Veiculo{
public function acelerar($velocidade)
{
echo "O veículo acelerou até " . $velocidade . " km/h";
}
public function frenar($velocidade)
{
echo "O veiculo frenou até " . $velocidade . " KM/h";
}
public function trocarMarcha($marcha)
{
echo "O veículo engatou a marcha " . $marcha;
}
}
$carro = new Civic();
$carro->trocarMarcha(1);
- 048 Classe Abstrata
<?php
interface Veiculo{
public function acelerar($velocidade);
public function frenar($velocidade);
public function trocarMarcha($marcha);
}
abstract class Automovel implements Veiculo{
public function acelerar($velocidade)
{
echo "O veículo acelerou até " . $velocidade . " km/h";
}
public function frenar($velocidade)
{
echo "O veiculo frenou até " . $velocidade . " KM/h";
}
public function trocarMarcha($marcha)
{
echo "O veículo engatou a marcha " . $marcha;
}
}
class DelRey extends Automovel{
public function empurrar(){
}
}
//$carro = new Automovel(); // não rola!
$carro = new DelRey();
$carro->acelerar(50);
$carro->empurrar();
- 049 Polimorfismo
<?php
abstract class Animal{
public function falar(){
return "Som";
}
public function mover(){
return "Anda";
}
}
class Cachorro extends Animal{
public function falar(){
return "Late";
}
}
class Gato extends Animal{
public function falar(){
return "Mia";
}
}
class Passaro extends Animal{
public function falar(){
return "Canta";
}
public function mover()
{
return "Voa e " . parent::mover();
}
}
$pluto = new Cachorro();
echo $pluto->falar() . "<br>";
echo $pluto->mover() . "<br>";
echo "----------------- <br>";
$garfield = new Gato();
echo $garfield->falar() . "<br>";
echo $garfield->mover() . "<br>";
echo "----------------- <br>";
$bird = new Passaro();
echo $bird->falar() . "<br>";
echo $bird->mover() . "<br>";
- 050 Incluindo classes com Autoload
<?php
/*function __autoload($nomedaClasse){
require_once ("$nomedaClasse.php");
}*/
function incluirClasses($nomeClasse){
if(file_exists($nomeClasse.".php")===true){
require_once ($nomeClasse.".php");
}
}
spl_autoload_register("incluirClasses");
spl_autoload_register(function ($nomeClasse){
if(file_exists("NomePastaDaClasses".DIRECTORY_SEPARATOR.$nomeClasse.".php")===true){
require_once ("NomePastaDaClasses".DIRECTORY_SEPARATOR.$nomeClasse.".php");
}
});
$carro = new DelRey();
echo $carro->acelerar(200);
-
051 Usando Namespace
<?php
namespace Cliente;
class Cadastro extends \Cadastro {
public function registraVenda(){
echo "foi registrada uma venda para o cliente " . $this->getNome();
}
}
<?php
require_once ("config.php");
use Cliente\Cadastro;
$cad = new Cadastro();
$cad->setNome("Jose");
$cad->setEmail("[email protected]");
$cad->setSenha("123456");
echo $cad->registraVenda();
- 054 Classe MySQLi e o PHP 7
<?php
$conn = new mysqli("localhost", "root", "","cursophp7");
if($conn->connect_error){
echo "Erro: " . $conn->connect_error;
}
$stmt = $conn->prepare("INSERT INTO tb_usuarios (login, senha) VALUES (?,?)");
$stmt->bind_param("ss", $login, $senha); // String String (ss)
$login="jose2";
$senha="1234567";
$stmt->execute();
$login="jose3";
$senha="1234568";
$stmt->execute();
<?php
$conn = new mysqli("localhost", "root", "","cursophp7");
if($conn->connect_error){
echo "Erro: " . $conn->connect_error;
}
$result = $conn->query("SELECT * FROM tb_usuarios ORDER BY login");
$data = array();
//while($row = $result->fetch_array()){
while($row = $result->fetch_assoc()){
array_push($data,$row);
//var_dump($row);
}
echo json_encode($data);
- 055 Conectando o PHP 7 com MySQL usando PDO
<?php
$conn = new PDO("mysql:dbname=cursophp7;host=localhost", "root", "");
$stmt = $conn->prepare("SELECT * FROM tb_usuarios ORDER BY login");
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
//var_dump($result);
foreach ($result as $row) {
foreach ($row as $key => $value){
echo "<strong>".$key."</strong>". $value . "<br/>";
}
echo "=================================================<br/>";
}
- 058 PDO Inserindo dados no banco
<?php
$conn = new PDO("mysql:dbname=cursophp7;host=localhost", "root", "");
$stmt = $conn->prepare("INSERT INTO tb_usuarios(login, senha, cadastro) VALUES (:LOGIN, :SENHA, CURRENT_DATE )");
$login = "josemalcher";
$senha = "123456";
$stmt->bindParam(":LOGIN", $login);
$stmt->bindParam(":SENHA", $senha);
$stmt->execute();
echo "Inserido ok";
- 059 PDO - Alterando dados no banco
<?php
$conn = new PDO("mysql:dbname=cursophp7;host=localhost", "root", "");
$stmt = $conn->prepare("UPDATE tb_usuarios SET login = :LOGIN, senha = :SENHA, cadastro = CURRENT_DATE WHERE id_usuario = :ID");
$login = "JOSEMALCHER ALTERADO";
$senha = "987654321";
$id = 1;
$stmt->bindParam(":LOGIN", $login);
$stmt->bindParam(":SENHA", $senha);
$stmt->bindParam(":ID", $id);
$stmt->execute();
echo "Alterado ok!";
- 060 PDO Apagando dados no banco
<?php
$conn = new PDO("mysql:dbname=cursophp7;host=localhost", "root", "");
$stmt = $conn->prepare("DELETE FROM tb_usuarios WHERE id_usuario = :ID");
$id = 1;
$stmt->bindParam(":ID", $id);
$stmt->execute();
echo "DELETE ok!";
- 061 PDO Usando transações
<?php
$conn = new PDO("mysql:dbname=cursophp7;host=localhost", "root", "");
$stmt = $conn->prepare("DELETE FROM tb_usuarios WHERE id_usuario = ?");
$conn->beginTransaction();
$id = 2;
$stmt->execute(array($id));
//$conn->rollBack(); //cancela
$conn->commit();
echo "DELETE ok!";
- 062 PDO - DAO
- 13-Data-Access-Object-PDO/config.php
<?php
spl_autoload_register(function ($class_name){
$filename = $class_name.".php";
if(file_exists(($filename))){
require_once ($filename);
}
});
- 13-Data-Access-Object-PDO/Sql.php
<?php
class Sql extends PDO
{
private $conn;
public function __construct()
{
$this->conn = new PDO("mysql:dbname=cursophp7;host=localhost", "root", "");
}
private function setParams($statment, $parameters = array())
{
foreach ($parameters as $key => $value) {
$this->setParam($key, $value);
}
}
private function setParam($statement, $key, $value)
{
$statement->bindParam($key, $value);
}
public function query($rawQuery, $params = array())
{
$stmt = $this->conn->prepare($rawQuery);
$this->setParams($stmt, $params);
$stmt->execute();
return $stmt;
}
public function select($rawQuery, $params = array()):array
{
$stmt = $this->query($rawQuery, $params);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
- 13-Data-Access-Object-PDO/index.php
<?php
require_once "config.php";
$sql = new Sql();
$usuarios = $sql->select("SELECT * FROM tb_usuarios");
echo json_encode($usuarios);
- 13-Data-Access-Object-PDO/class/Usuario.php
<?php
class Usuario
{
private $idusuario;
private $deslogin;
private $dessenha;
private $dtcadastro;
public function getIdusuario()
{
return $this->idusuario;
}
public function setIdusuario($idusuario): void
{
$this->idusuario = $idusuario;
}
public function getDeslogin()
{
return $this->deslogin;
}
public function setDeslogin($deslogin): void
{
$this->deslogin = $deslogin;
}
public function getDessenha()
{
return $this->dessenha;
}
public function setDessenha($dessenha): void
{
$this->dessenha = $dessenha;
}
public function getDtcadastro()
{
return $this->dtcadastro;
}
public function setDtcadastro($dtcadastro): void
{
$this->dtcadastro = $dtcadastro;
}
/* --- Métodos ---- */
public function loadById($id)
{
$sql = new Sql();
$results = $sql->select("SELECT * FROM tb_usuarios WHERE id_usuario = :ID", array(":ID" => $id));
//if(isset($result[0]) > 0){
if(count($results)> 0){
$row = $results[0];
$this->setIdusuario($row['id_usuario']);
$this->setDeslogin($row['login']);
$this->setDessenha($row['senha']);
$this->setDtcadastro(new DateTime($row['cadastro']));
}
}
public function __toString()
{
return json_encode(array(
"id_usuario" =>$this->getIdusuario(),
"login" =>$this->getDeslogin(),
"senha" =>$this->getDessenha(),
"cadastro" =>$this->getDtcadastro()->format('d/m/Y'),
));
}
}
- 13-Data-Access-Object-PDO/index.php
<?php
require_once "config.php";
/*
$sql = new Sql();
$usuarios = $sql->select("SELECT * FROM tb_usuarios");
echo json_encode($usuario);
*/
$jose = new Usuario();
$jose->loadById(2);
echo $jose; //carrega tostring
- 13-Data-Access-Object-PDO/class/Usuario.php
<?php
class Usuario
{
private $idusuario;
private $deslogin;
private $dessenha;
private $dtcadastro;
public function getIdusuario()
{
return $this->idusuario;
}
public function setIdusuario($idusuario): void
{
$this->idusuario = $idusuario;
}
public function getDeslogin()
{
return $this->deslogin;
}
public function setDeslogin($deslogin): void
{
$this->deslogin = $deslogin;
}
public function getDessenha()
{
return $this->dessenha;
}
public function setDessenha($dessenha): void
{
$this->dessenha = $dessenha;
}
public function getDtcadastro()
{
return $this->dtcadastro;
}
public function setDtcadastro($dtcadastro): void
{
$this->dtcadastro = $dtcadastro;
}
/* --- Métodos ---- */
public function loadById($id)
{
$sql = new Sql();
$results = $sql->select("SELECT * FROM tb_usuarios WHERE id_usuario = :ID", array(":ID" => $id));
//if(isset($result[0]) > 0){
if (count($results) > 0) {
$row = $results[0];
$this->setIdusuario($row['id_usuario']);
$this->setDeslogin($row['login']);
$this->setDessenha($row['senha']);
$this->setDtcadastro(new DateTime($row['cadastro']));
}
}
public static function getList()
{
$sql = new SQL();
return $sql->select("SELECT * FROM tb_usuarios ORDER BY login");
}
public static function search($login)
{
$sql = new SQL();
return $sql->select("SELECT * FROM tb_usuarios WHERE login LIKE :SEARCH ORDER BY login", array(':SEARCH' => "%" . $login . "%"));
}
public function login($login, $senha)
{
$sql = new SQL();
$result = $sql->select("SELECT * FROM tb_usuarios WHERE login = :LOGIN AND senha = :SENHA", array(
":LOGIN" => $login,
":SENHA" => $senha
));
if(count($result) > 0){
$row = $result[0];
$this->setIdusuario($row['id_usuario']);
$this->setDeslogin($row['login']);
$this->setDessenha($row['senha']);
$this->setDtcadastro(new DateTime($row['cadastro']));
}else{
throw new Exception("Login e/ou senha inválidos");
}
}
public function __toString()
{
return json_encode(array(
"id_usuario" => $this->getIdusuario(),
"login" => $this->getDeslogin(),
"senha" => $this->getDessenha(),
"cadastro" => $this->getDtcadastro()->format('d/m/Y'),
));
}
}
- 13-Data-Access-Object-PDO/index.php
<?php
require_once "config.php";
/*
$sql = new Sql();
$usuarios = $sql->select("SELECT * FROM tb_usuarios");
echo json_encode($usuario);
*/
/* Carrega um usuário
$jose = new Usuario();
$jose->loadById(2);
echo $jose;
*/
/*
//Carrega [[]]uma lista de usuparios
$lista = Usuario::getList();
echo json_encode($lista);
*/
/*
//Carrega uma lista de usuários buscando pelo login
$busca = Usuario::search("mari");
echo json_encode($busca);
*/
//Carrega um usuario com login e senha
$usuario = new Usuario();
$usuario->login("jose","123457");
echo $usuario;
- cursophp7.sp_usuario_insert
CREATE PROCEDURE sp_usuario_insert(IN plogin VARCHAR(64), IN psenha VARCHAR(255))
BEGIN
INSERT tb_usuarios(login, senha) VALUES (plogin, psenha);
SELECT * FROM tb_usuarios WHERE id_usuario = LAST_INSERT_ID();
END;
- 13-Data-Access-Object-PDO/class/Usuario.php
public function setData($data)
{
$this->setIdusuario($data['id_usuario']);
$this->setDeslogin($data['login']);
$this->setDessenha($data['senha']);
$this->setDtcadastro(new DateTime($data['cadastro']));
}
public function insert()
{
$sql = new Sql();
$result = $sql->select("CALL sp_usuario_insert(:LOGIN, :PASSWORD)", array(
':LOGIN' => $this->getDeslogin(),
':PASSWORD' => $this->getDessenha()
));
if(count($result) > 0){
$this->setData($result[0]);
}
}
public function __construct($login = '',$password='')
{
$this->setDeslogin($login);
$this->setDessenha($password);
}
- 13-Data-Access-Object-PDO/index.php
// insert usuários
$usuario = new Usuario("josemalcherLogin","987654");
//$usuario->setDeslogin("JoseLotin");
//$usuario->setDessenha("123456789");
$usuario->insert();
echo $usuario;
- 13-Data-Access-Object-PDO/class/Usuario.php
public function update($login, $password){
$this->setDeslogin($login);
$this->setDessenha($password);
$sql = new Sql();
$sql->query("UPDATE tb_usuarios SET login = :LOGIN, senha = :PASSWORD WHERE id_usuario = :ID", array(
':ID' => $this->getIdusuario(),
':PASSWORD' => $this->getDessenha(),
':LOGIN'=> $this->getDeslogin()
));
}
- 13-Data-Access-Object-PDO/index.php
// Update
$usuario = new Usuario();
$usuario->loadById(6);
$usuario->update('luciana barbosa','789');
echo $usuario;
- 13-Data-Access-Object-PDO/class/Usuario.php
public function delete()
{
$sql = new Sql();
$sql->query("DELETE FROM tb_usuarios WHERE id_usuario = :ID", array(
':ID'=> $this->getIdusuario()
));
$this->setIdusuario(0);
$this->setDeslogin('');
$this->setDessenha('');
$this->setDtcadastro(new DateTime());
}
- 13-Data-Access-Object-PDO/index.php
// DELETE
$usuario = new Usuario();
$usuario->loadById(11);
$usuario->delete();
echo $usuario;
- 14-ManipulandoArquivos/ex068-lendo-mani-arquivos.php
<?php
$name = "img2";
if(!is_dir($name)){
mkdir($name);
echo "Diretório criado com sucesso";
}else{
//rmdir($name); // remover diretorio
echo "Ja existe o diretorio $name";
}
- 14-ManipulandoArquivos/ex068-scandir.php
<?php
$imgs = scandir("img");
//var_dump($img);
$data = array();
foreach ($imgs as $img){
if(!in_array($img,array(".",".."))){
$filename = "img".DIRECTORY_SEPARATOR.$img;
$info = pathinfo($filename);
$info['size'] = filesize($filename);
$info['modified'] = date("d/m/Y H:i:s", filemtime($filename));
$info['url'] = "http://localhost/workspace-Udemy-Curso-Completo-de-php-7/14-ManipulandoArquivos/".str_replace("\\","/",$filename);
//var_dump($info);
array_push($data, $info);
}
}
echo json_encode($data);
- 14-ManipulandoArquivos/ex069-fopen.php
<?php
$file = fopen("log.txt", "a+"); //w+
fwrite($file, date("Y-m-d H:i:s")."\r\n");
fclose($file);
echo "Arquivo Criado com sucesso";
- 14-ManipulandoArquivos/ex069-csv.php
<?php
require_once("config.php");
$sql = new Sql();
$usuarios = $sql->select("SELECT * FROM tb_usuarios ORDER BY login");
//print_r($usuario);
$headers = array();
foreach ($usuarios[0] as $key => $value) {
array_push($headers, ucfirst($key));
}
$file = fopen("usuario.csv", "w+");
fwrite($file, implode(",", $headers) . "\r\n");
//dados
foreach ($usuarios as $row) {
$data = array();
foreach ($row as $key => $value) {
array_push($data, $value);
}
fwrite($file, implode(",", $data) . "\r\n");
}
fclose($file);
//print_r($headers);
//echo implode(",", $headers);
- 14-ManipulandoArquivos/ex70-excluindo-arquivos.php
<?php
$file = fopen("teste.txt", "w+");
fclose($file);
//remove
unlink("teste.txt");
echo "arquivo removido com sucesso";
- 14-ManipulandoArquivos/ex70-excluindo-pasta.php
<?php
if (!is_dir("ex70")) {
mkdir("ex70");
}
foreach (scandir("ex70") as $item) {
if (!in_array($item, array(".", ".."))){
unlink("ex70/" . $item);
}
}
echo "Arquivos Apagados";
- 14-ManipulandoArquivos/ex071-lendo-arquivos.php
<?php
$filename = "usuario.csv";
if (file_exists($filename)) {
$file = fopen($filename, "r");
$headers = explode(",", fgets($file));
$data = array();
while ($row = fgets($file)) {
$rowData = explode(",",$row);
$linha = array();
for ($i = 0; $i < count($headers); $i++) {
$linha[$headers[$i]] = $rowData[$i];
}
array_push($data, $linha);
}
fclose($file);
echo json_encode($data);
}
- 14-ManipulandoArquivos/ex071-lendo-arquivos-tipo.php
<?php
$filename = "img/gato-alien.jpg";
$base64 = base64_encode(file_get_contents($filename));
$fileinfo = new finfo(FILEINFO_MIME_TYPE);
$mimetype = $fileinfo->file($filename);
$base64encode = "data:". $mimetype . ";base64,".$base64;
?>
<a href="<?=$base64encode?>">Link para imagem</a>
<img src="<?=$base64encode?>" alt="">
- 14-ManipulandoArquivos/ex072-Upload.php
<form method="POST" enctype="multipart/form-data">
<input type="file" name="fileUpload">
<button type="submit">ENVIAR</button>
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$file = $_FILES["fileUpload"];
if ($file["error"]) {
throw new Exception("ERROR " . $file["error"]);
}
$dirUpload = "upload";
if (!is_dir($dirUpload)) {
mkdir($dirUpload);
}
if (move_uploaded_file($file["tmp_name"], $dirUpload . DIRECTORY_SEPARATOR . $file["name"])) {
echo "Upload realizado com sucesso";
} else {
throw new Exception("Não foi possível realizar o ulpload");
}
}
?>
- 14-ManipulandoArquivos/ex073-Download-de-arquivos.php
<?php
$link = "https://www.google.com.br/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png";
$content = file_get_contents($link);
$parse = parse_url($link);
$basename = basename($parse["path"]);
$file = fopen($basename, "w+");
fwrite($file, $content);
fclose($file);
?>
<img src="<?=$basename?>" alt="">
- 14-ManipulandoArquivos/ex074-Movendo-um-arquivo.php
<?php
$dir1 = "ex74-1";
$dir2 = "ex74-2";
if (!is_dir($dir1)) mkdir($dir1);
if (!is_dir($dir2))mkdir($dir2);
$filename = "README.txt";
if (!file_exists($dir1 . DIRECTORY_SEPARATOR . $filename)) {
$file = fopen($dir1 . DIRECTORY_SEPARATOR . $filename, "w+");
fwrite($file, date("Y-m-d H:i:s"));
fclose($file);
}
rename($dir1 . DIRECTORY_SEPARATOR . $filename , $dir2 . DIRECTORY_SEPARATOR . $filename);
echo "Arquivo Movido!";
- 14-ManipulandoArquivos/ex075-Usando-cURL.php
<?php
$cep = "66020000";
$link = "https://viacep.com.br/ws/$cep/json";
$ch = curl_init($link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
- 14-ManipulandoArquivos/ex076-Usando-Cookies.php
<?php
$data = array("empresa" => "JoseMalcher.net" );
setcookie("Nome_DO_COOKIE", json_encode($data), time() + 3600);
echo "Criado!";
- 14-ManipulandoArquivos/ex076-Usando-Cookies-Existe.php
<?php
if(isset($_COOKIE["Nome_DO_COOKIE"])){
$obj = json_decode($_COOKIE["Nome_DO_COOKIE"]);
echo $obj->empresa;
}
- 15-Tratando-Erros-com-Try-Catch/ex077-Try-e-Catch.php
<?php
try {
throw new Exception("Houve um erro!! ", 400);
} catch (Exception $e) {
echo json_encode(array(
"message" => $e->getMessage(),
"line" => $e->getLine(),
"file" => $e->getCode(),
"code" => $e->getCode()
));
}
- 15-Tratando-Erros-com-Try-Catch/ex077-Try-e-Catch_emExecucao.php
<?php
function trataNome($name)
{
if (!$name) {
throw new Exception("Nenhum nome foi informado! ", 1);
}
echo ucwords($name)."<br>";
}
try {
trataNome("josé malcher junior");
trataNome("");
} catch (Exception $e) {
echo $e->getMessage();
}finally{
echo "Executou o Finaly";
}
- 15-Tratando-Erros-com-Try-Catch/ex078-Tratando-erros.php
<?php
function error_handler($code, $message, $file, $line)
{
echo json_encode(array(
'code' => $code,
'message' => $message,
'line' => $line,
'file'=> $file
));
}
set_error_handler("error_handler");
echo $total = 100/0;
- 15-Tratando-Erros-com-Try-Catch/ex078-Tratando-erros-notice.php
<?php
error_reporting(E_ALL & ~E_NOTICE);
$nome = $_GET["nome"];
echo $nome;
- 16-Trabalhando-com-Imagens-e-o-PHP-usando-a-Biblioteca-GD/ex079-Processamento-de-Imagem-GD.php
<?php
header("Content-Type: image/png");
$image = imagecreate(256, 256);
$black = imagecolorallocate($image, 0, 0, 0);
$red = imagecolorallocate($image, 255, 0, 0);
imagestring($image, 5, 60, 120, "Curso de PHP 7", $red);
imagepng($image);
imagedestroy($image);
- 16-Trabalhando-com-Imagens-e-o-PHP-usando-a-Biblioteca-GD/ex080-Usando-imagem-existente-GD.php
<?php
$image = imagecreatefromjpeg("img/certificado.jpg");
$titleColor = imagecolorallocate($image, 0, 0, 0);
$gray = imagecolorallocate($image, 100, 100, 100);
imagestring($image, 5 , 450, 150, "CERTIFICADO", $titleColor);
imagestring($image, 5, 440, 350, utf8_decode("José Malcher Junior"), $titleColor);
imagestring($image, 3, 440, 370, utf8_decode("Concluído em: ") . date("d/m/Y"), $titleColor);
header("Content-type: image/jpeg");
//imagejpeg($image); // em tela
imagejpeg($image, "img".DIRECTORY_SEPARATOR."certificado".date("Y-m-d").".jpg", 90); // salvando em disco
imagedestroy($image);
- 16-Trabalhando-com-Imagens-e-o-PHP-usando-a-Biblioteca-GD/ex081-Fontes-TTF-GD.php
<?php
$image = imagecreatefromjpeg("img/certificado.jpg");
$titleColor = imagecolorallocate($image, 0, 0, 0);
$gray = imagecolorallocate($image, 100, 100, 100);
//fonts/Bevan/Bevan-Regular.ttf
$bevan = "fonts/Bevan/Bevan-Regular.ttf";
//fonts/Playball/Playball-Regular.ttf
$plaball = "fonts/Playball/Playball-Regular.ttf";
/*
imagettftext($image, 32, 0, 320, 250, $titleColor, "fonts".DIRECTORY_SEPARATOR."Bevan".DIRECTORY_SEPARATOR."Bevan-Regular.ttf", "CERTIFICADO");
imagettftext($image, 32, 0, 375, 350, $titleColor, "fonts".DIRECTORY_SEPARATOR."Playball".DIRECTORY_SEPARATOR."Playball-Regular.ttf", "José Malcher Junior");
*/
imagettftext($image, 32, 0, 320, 250, $titleColor, $bevan, "CERTIFICADO");
imagettftext($image, 32, 0, 375, 350, $titleColor, $plaball, "José Malcher Junior");
imagestring($image, 3, 440, 370, utf8_decode("Concluído em: ") . date("d/m/Y"), $titleColor);
header("Content-type: image/jpeg");
imagejpeg($image); // em tela
//imagejpeg($image, "img" . DIRECTORY_SEPARATOR . "certificado" . date("Y-m-d") . ".jpg", 90); // salvando em disco
imagedestroy($image);
- 16-Trabalhando-com-Imagens-e-o-PHP-usando-a-Biblioteca-GD/ex082-Gerando-Thumbnail-GD.php
<?php
header("Content-Type: image/jpeg");
$file = "img/wallpaper.jpg";
$new_w = 256;
$new_h = 256;
list($old_w, $old_h) = getimagesize($file);
$new_img = imagecreatetruecolor($new_w, $new_h);
$old_img = imagecreatefromjpeg($file);
imagecopyresampled($new_img, $old_img, 0,0,0,0, $new_w, $new_h, $old_w, $old_h);
imagejpeg($new_img);
imagedestroy($old_img);
imagedestroy($new_img);
Usando o composer!
->Pasta 19-Trabalhando-com-E-mails-usando-a-classe-PHPMailer
Ref: http://blog.alura.com.br/como-configurar-virtual-hosts-no-apache/
-
22-Slim-Framework/index.php
<?php
require_once("vendor/autoload.php");
$app = new \Slim\Slim();
$app->get('/', function () {
echo "Home Page";
});
$app->get('/hello/:name', function ($name) {
echo "Hello, " . $name;
});
$app->run();
-
23-Seguranca-no-PHP-7/ex089-Command-Injection.php
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$cmd = escapeshellcmd($_POST["cmd"]);
echo "<pre>";
$comando = system($cmd, $retorno);
echo "</pre>";
}
?>
<form action="" method="post">
<input type="text" name="cmd">
<button type="submit">EXECUTAR</button>
</form>
<?php
$id = (isset($_GET["id"]))?$_GET["id"]:2;
if (!is_numeric($id) || strlen($id) > 5) {
exit("FAIL INJECTION!");
}
$conn = mysqli_connect("localhost", "root", "", "cursophp7");
$sql = "SELECT * FROM tb_usuarios WHERE id_usuario = $id";
$exec = mysqli_query($conn, $sql);
while ($resultado = mysqli_fetch_object($exec)) {
echo $resultado->login . "<br>";
}
-
https://canaltech.com.br/linux/entendendo-e-configurando-permissoes-de-arquivos-e-pastas-no-linux/
-
23-Seguranca-no-PHP-7/ex091-Entendendo-permissoes-de-pasta.php
<?php
$pasta = "arquivos";
$permissao = "0775";
if(!is_dir($pasta)) mkdir($pasta, $permissao);
echo "Diretorio criado com sucesso";
- 23-Seguranca-no-PHP-7/ex092-Usando-o-reCaptcha-para-impedir-Robos.php
- 23-Seguranca-no-PHP-7/ex092-Cadastrar.php
<?php
$email = $_POST["inputEmail"];
//var_dump($_POST);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
"secret" => "6Lf9uE4U7777AKxFAsLT9cB_TqLp8mveRYi93JaE",
"response" => $_POST["g-recaptcha-response"],
"remoteip" => $_SERVER["REMOTE_ADDR"]
)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$recaptch = json_decode(curl_exec($ch), true);
curl_close($ch);
//var_dump($recaptch);
if ($recaptch["success"] === true) {
echo "OK " . $_POST["inputEmail"];
}else{
header("Location: ex092-Usando-o-reCaptcha-para-impedir-Robos.php");
}
- db
- config iniciais
PROJ parou em: 098 Classe Page para o Template | Devido a um probema com o carregamendo do composer/autoload.