Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require('./config.php');
- require('./login.php');
- function enviarErrorServidor() {
- http_response_code(500);
- die('Internal Server Error');
- }
- function enviarErrorPeticionHTTP() {
- http_response_code(400);
- die('Bad Request');
- }
- function enviarErrorRecursoNoEncontrado() {
- http_response_code(404);
- die('Not found');
- }
- function verificarNombre($nombre) {
- if (empty($nombre) || !preg_match('/^w+$/u', (string) $nombre)) {
- enviarErrorPeticionHTTP();
- }
- }
- function verificarClavePrimaria($numero) {
- if (empty($numero) || !ctype_digit((string) $numero)) {
- enviarErrorPeticionHTTP();;
- }
- }
- function enviarDatosComoJSON($datos) {
- header('Content-Type: application/json');
- echo json_encode($datos);
- exit();
- }
- function esCampoRegistro($nombreCampo) {
- return !preg_match('/^_/', (string) $nombreCampo);
- }
- function crearRegistroTabla($nuevoRegistro, $nombreTabla) {
- global $conexion;
- verificarNombre($nombreTabla);
- $nombresCampos = array();
- $valoresCampos = array();
- foreach ($nuevoRegistro as $nombreCampo => $valorCampo) {
- verificarNombre($nombreCampo);
- if (esCampoRegistro($nombreCampo)) {
- if ($nombreCampo == 'id') {
- enviarErrorPeticionHTTP();
- }
- $nombresCampos[] = $nombreCampo;
- $valoresCampos[] = "'".$conexion->real_escape_string((string) $valorCampo)."'";
- }
- }
- $nombresCampos = '('.implode(', ', $nombresCampos).')';
- $valoresCampos = '('.implode(', ', $valoresCampos).')';
- $operacionSQL = "INSERT INTO $nombreTabla $nombresCampos VALUES $valoresCampos";
- if ($conexion->query($operacionSQL) === TRUE && $conexion->affected_rows === 1) {
- enviarDatosComoJSON($conexion->insert_id);
- } else {
- enviarErrorServidor();
- }
- }
- function modificarRegistroTabla($registroModificado, $nombreTabla) {
- global $conexion;
- verificarNombre($nombreTabla);
- $camposRegistro = array();
- $clavePrimaria = false;
- foreach ($registroModificado as $nombreCampo => $valorCampo) {
- verificarNombre($nombreCampo);
- if ($nombreCampo == 'id') {
- $clavePrimaria = $registroModificado['id'];
- } else {
- if (esCampoRegistro($nombreCampo)) {
- $camposRegistro[] = "$nombreCampo = '".$conexion->real_escape_string((string) $valorCampo)."'";
- }
- }
- }
- verificarClavePrimaria($clavePrimaria);
- $camposRegistro = implode(', ', $camposRegistro);
- $operacionSQL = "UPDATE $nombreTabla SET $camposRegistro WHERE id = $clavePrimaria";
- if ($conexion->query($operacionSQL) === TRUE) {
- if ($conexion->affected_rows === 1) {
- exit();
- } else {
- enviarErrorRecursoNoEncontrado();;
- }
- } else {
- enviarErrorServidor();
- }
- }
- function eliminarRegistroTabla($clavePrimaria, $nombreTabla) {
- global $conexion;
- verificarNombre($nombreTabla);
- verificarClavePrimaria($clavePrimaria);
- $operacionSQL = "DELETE FROM $nombreTabla WHERE id = $clavePrimaria";
- if ($conexion->query($operacionSQL) === TRUE) {
- if ($conexion->affected_rows === 1) {
- exit();
- } else {
- enviarErrorRecursoNoEncontrado();;
- }
- } else {
- enviarErrorServidor();
- }
- }
- function obtenerRegistroTabla($clavePrimaria, $nombreTabla) {
- global $conexion;
- verificarNombre($nombreTabla);
- verificarClavePrimaria($clavePrimaria);
- $resultado = $conexion->query("SELECT * FROM $nombreTabla WHERE id = $clavePrimaria");
- if ($resultado) {
- if ($resultado->num_rows === 1) {
- enviarDatosComoJSON($resultado->fetch_assoc());
- } else {
- enviarErrorRecursoNoEncontrado();;
- }
- } else {
- enviarErrorServidor();
- }
- }
- <?php
- set_error_handler(function() {
- http_response_code(500);
- die('Internal Server Error');
- });
- define('MODO_DESARROLLADOR', true);
- if (MODO_DESARROLLADOR) {
- header('Access-Control-Allow-Origin: *');
- } else {
- error_reporting(0);
- }
- $conexion = new mysqli('127.0.0.1', 'usuario', 'contraseña', 'base-de-datos');
- if ($conexion->connect_errno > 0) {
- http_response_code(500);
- if (MODO_DESARROLLADOR) {
- die('Unable to connect to database [' . $conexion->connect_error . ']');
- } else {
- die('Internal Server Error');
- }
- }
- $conexion->set_charset('utf8');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement