Esta potagem não tem nenhum objetivo profissional nem recursos avançados, tem apenas o objetivo de criar o registro de estudos executados e gerar uma base de dados para consultas futuras.
Primeiramente vamos criar um banco de dados onde vamos armazenar usuários, anotações, perguntas e respostas.
Agora em PHP criaremos uma APIRest para que possamos manipular os dados de diversas linguagens e plataformas através de um link. Em uma subpasta em nosso servidor vamos criar o index.php, essa página será responsável por identificar o Módulo e o Método que desejamos executar capturando o REQUEST.
Essa rotina sempre irá retornar um JSon composto de Status e Dados.
Em Status teremos a mensagem de Sucesso ou Erro.
Em Dados teremos a mensagem do erro, resultado de algum tratamento ou os dados que iremos devolver.
<?php header('Content-Type: application/json; charset=utf-8'); require_once 'classes/Login.php'; require_once 'classes/Perguntas.php'; class Rest { public static function open($requisicao) { $url = explode('/', $requisicao['url']); $classe = ucfirst($url[0]); array_shift($url); $metodo = $url[0]; array_shift($url); $parametros = array(); $parametros = $requisicao; try { if (class_exists($classe)) { if (method_exists($classe, $metodo)) { $retorno = call_user_func_array(array(new $classe, $metodo), [$parametros]); return json_encode(array('status' => 'sucesso', 'dados' => $retorno)); } else { return json_encode(array('status' => 'erro', 'dados' => 'Metodo '.$metodo.' inexistente!')); } } else { return json_encode(array('status' => 'erro', 'dados' => 'Classe '.$classe.' inexistente!')); } } catch (Exception $e) { return json_encode(array('status' => 'erro', 'dados' => $e->getMessage())); } } } if (isset($_REQUEST)) { echo Rest::open($_REQUEST); }
Em um exemplo estamos criando a aplicação APIRest dentro do domínio projetos onde está diretamente criado o arquivo index.php, para organizar criamos uma subpasta classes onde colocaremos as classes e métodos.
Exemplo da classe Login.php
<?php class Login{ private $servername = "localhost"; private $username = "usuairo"; private $password = "senha"; private $dbname = "banco_AppTable"; public function logar($parametros){ //Exemplo: http://XXX/APIRest/Login/logar?login=admin&senha=admin1001 // Create connection $conn = mysqli_connect($this->servername, $this->username, $this->password, $this->dbname); // Check connection if (!$conn) { throw new Exception("Falha na conexão com DB: " . mysqli_connect_error()); } $sql = "SELECT * FROM usuario WHERE login = '" . $parametros['login'] . "'"; $result = mysqli_query($conn, $sql); while($row = mysqli_fetch_assoc($result)) { $resultados[] = $row; } if (!$resultados){ throw new Exception("Usuario ".$parametros['login']." nao localizado"); } else { if (strcmp($resultados[0]['senha'], $parametros['senha']) != 0){ throw new Exception("Senha invalida"); } else { return $resultados; } } } public function criarLogin($parametros){ //Exemplo: http://XXX/APIRest/Login/criarLogin?login=usuario&nome=nomeusuario&email=emailusuario&senha=senhausuario&level=0&pontuacao=0 // Create connection $conn = mysqli_connect($this->servername, $this->username, $this->password, $this->dbname); // Check connection if (!$conn) { throw new Exception("Falha na conexão com DB: " . mysqli_connect_error()); } $sql = "SELECT * FROM usuario WHERE login = '" . $parametros['login'] . "'"; $result = mysqli_query($conn, $sql); while($row = mysqli_fetch_assoc($result)) { $resultados[] = $row; } if ($resultados){ throw new Exception("Usuario ".$parametros['login']." já existe"); } else { $date = date('Y-m-d H:i:s'); $sql = "INSERT INTO usuario(login, nome, email, senha, level, pontuacao, dt_update)". " VALUES ". "('".$parametros['login']."', '".$parametros['nome']."', '".$parametros['email']."', '".$parametros['senha']."', ".$parametros['level'].", ".$parametros['pontuacao'].", '".$date."')"; var_dump($sql); //"INSERT INTO usuario (empresa, proprietario, contato, email, telefone, celular, endereco, numero, bairro, cidade, uf, site, complemento) VALUES ('$empresa','$proprietario','$contato','$email','$telefone','$celular','$endereco','$numero','$bairro','$cidade','$uf','$site','$complemento')"; if (mysqli_query($conn, $sql)) { return 'Login criado com sucesso!'; } else { throw new Exception('Não foi possível cadastrar esse usuario' . mysqli_error($conn)); } } } public function atualizarLogin($parametros){ //Exemplo: http://XXX/APIRest/Login/atualizarLogin?login=usuario&nome=nomeusuario&email=emailusuario&senha=senhausuario&level=0&pontuacao=0 // Create connection $conn = mysqli_connect($this->servername, $this->username, $this->password, $this->dbname); // Check connection if (!$conn) { throw new Exception("Falha na conexão com DB: " . mysqli_connect_error()); } $sql = "SELECT * FROM usuario WHERE login = '" . $parametros['login'] . "'"; $result = mysqli_query($conn, $sql); while($row = mysqli_fetch_assoc($result)) { $resultados[] = $row; } if ($resultados){ throw new Exception("Usuario ".$parametros['login']." já existe"); } else { $date = date('Y-m-d H:i:s'); $sql = "UPDATE usuario SET ". "nome='".$parametros['nome']."', ". "email='".$parametros['email']."', ". "senha='".$parametros['senha']."', ". "level=".$parametros['level'].", ". "pontuacao=".$parametros['pontuacao'].", ". "dt_update='".$date."'". " WHERE ". "login='".$parametros['login']; var_dump($sql); //"UPDATE usuario SET id=[value-1],login=[value-2],nome=[value-3],email=[value-4],senha=[value-5],level=[value-6],pontuacao=[value-7],dt_update=[value-8] WHERE 1"; if (mysqli_query($conn, $sql)) { return 'Login atualizado com sucesso!'; } else { throw new Exception('Não foi possível atualizar esse usuario' . mysqli_error($conn)); } } } public function listaUsuarios($parametros){ //Exemplo: http://XXX/APIRest/Login/logar?login=admin&senha=admin1001 // Create connection $conn = mysqli_connect($this->servername, $this->username, $this->password, $this->dbname); // Check connection if (!$conn) { throw new Exception("Falha na conexão com DB: " . mysqli_connect_error()); } $sql = "SELECT * FROM usuario"; $result = mysqli_query($conn, $sql); while($row = mysqli_fetch_assoc($result)) { $resultados[] = $row; } if (!$resultados){ throw new Exception("Usuarios nao localizados"); } else { return $resultados; } } }
Assim quando houver uma requisição tipo: http://XXX/APIRest/Login/logar?login=admin&senha=admin1001
o sistema ira capturar “Login/logar?login=admin&senha=admin1001” no REQUEST, irá recortar “Login” como classe e “logar” como método a ser executado e o restante após “?” será capturado como parâmetro.
O resultado será:
{"status":"sucesso","dados":[{"id":"1","login":"admin","nome":"Administrador","email":"admin@admin.com.","senha":"admin1001","level":"1","pontuacao":"0","dt_update":"0000-00-00 00:00:00"}]}