Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.37 KB | None | 0 0
  1. <?php
  2.  
  3. require('./config.php');
  4. require('./login.php');
  5.  
  6. function enviarErrorServidor() {
  7. http_response_code(500);
  8. die('Internal Server Error');
  9. }
  10.  
  11. function enviarErrorPeticionHTTP() {
  12. http_response_code(400);
  13. die('Bad Request');
  14. }
  15.  
  16. function enviarErrorRecursoNoEncontrado() {
  17. http_response_code(404);
  18. die('Not found');
  19. }
  20.  
  21. function verificarNombre($nombre) {
  22. if (empty($nombre) || !preg_match('/^w+$/u', (string) $nombre)) {
  23. enviarErrorPeticionHTTP();
  24. }
  25. }
  26.  
  27. function verificarClavePrimaria($numero) {
  28. if (empty($numero) || !ctype_digit((string) $numero)) {
  29. enviarErrorPeticionHTTP();;
  30. }
  31. }
  32.  
  33. function enviarDatosComoJSON($datos) {
  34. header('Content-Type: application/json');
  35. echo json_encode($datos);
  36. exit();
  37. }
  38.  
  39. function esCampoRegistro($nombreCampo) {
  40. return !preg_match('/^_/', (string) $nombreCampo);
  41. }
  42.  
  43. function crearRegistroTabla($nuevoRegistro, $nombreTabla) {
  44. global $conexion;
  45. verificarNombre($nombreTabla);
  46. $nombresCampos = array();
  47. $valoresCampos = array();
  48. foreach ($nuevoRegistro as $nombreCampo => $valorCampo) {
  49. verificarNombre($nombreCampo);
  50. if (esCampoRegistro($nombreCampo)) {
  51. if ($nombreCampo == 'id') {
  52. enviarErrorPeticionHTTP();
  53. }
  54. $nombresCampos[] = $nombreCampo;
  55. $valoresCampos[] = "'".$conexion->real_escape_string((string) $valorCampo)."'";
  56. }
  57. }
  58. $nombresCampos = '('.implode(', ', $nombresCampos).')';
  59. $valoresCampos = '('.implode(', ', $valoresCampos).')';
  60. $operacionSQL = "INSERT INTO $nombreTabla $nombresCampos VALUES $valoresCampos";
  61. if ($conexion->query($operacionSQL) === TRUE && $conexion->affected_rows === 1) {
  62. enviarDatosComoJSON($conexion->insert_id);
  63. } else {
  64. enviarErrorServidor();
  65. }
  66. }
  67.  
  68. function modificarRegistroTabla($registroModificado, $nombreTabla) {
  69. global $conexion;
  70. verificarNombre($nombreTabla);
  71. $camposRegistro = array();
  72. $clavePrimaria = false;
  73. foreach ($registroModificado as $nombreCampo => $valorCampo) {
  74. verificarNombre($nombreCampo);
  75. if ($nombreCampo == 'id') {
  76. $clavePrimaria = $registroModificado['id'];
  77. } else {
  78. if (esCampoRegistro($nombreCampo)) {
  79. $camposRegistro[] = "$nombreCampo = '".$conexion->real_escape_string((string) $valorCampo)."'";
  80. }
  81. }
  82. }
  83. verificarClavePrimaria($clavePrimaria);
  84. $camposRegistro = implode(', ', $camposRegistro);
  85. $operacionSQL = "UPDATE $nombreTabla SET $camposRegistro WHERE id = $clavePrimaria";
  86. if ($conexion->query($operacionSQL) === TRUE) {
  87. if ($conexion->affected_rows === 1) {
  88. exit();
  89. } else {
  90. enviarErrorRecursoNoEncontrado();;
  91. }
  92. } else {
  93. enviarErrorServidor();
  94. }
  95. }
  96.  
  97. function eliminarRegistroTabla($clavePrimaria, $nombreTabla) {
  98. global $conexion;
  99. verificarNombre($nombreTabla);
  100. verificarClavePrimaria($clavePrimaria);
  101. $operacionSQL = "DELETE FROM $nombreTabla WHERE id = $clavePrimaria";
  102. if ($conexion->query($operacionSQL) === TRUE) {
  103. if ($conexion->affected_rows === 1) {
  104. exit();
  105. } else {
  106. enviarErrorRecursoNoEncontrado();;
  107. }
  108. } else {
  109. enviarErrorServidor();
  110. }
  111. }
  112.  
  113. function obtenerRegistroTabla($clavePrimaria, $nombreTabla) {
  114. global $conexion;
  115. verificarNombre($nombreTabla);
  116. verificarClavePrimaria($clavePrimaria);
  117. $resultado = $conexion->query("SELECT * FROM $nombreTabla WHERE id = $clavePrimaria");
  118. if ($resultado) {
  119. if ($resultado->num_rows === 1) {
  120. enviarDatosComoJSON($resultado->fetch_assoc());
  121. } else {
  122. enviarErrorRecursoNoEncontrado();;
  123. }
  124. } else {
  125. enviarErrorServidor();
  126. }
  127. }
  128.  
  129. <?php
  130.  
  131. set_error_handler(function() {
  132. http_response_code(500);
  133. die('Internal Server Error');
  134. });
  135.  
  136. define('MODO_DESARROLLADOR', true);
  137.  
  138. if (MODO_DESARROLLADOR) {
  139. header('Access-Control-Allow-Origin: *');
  140. } else {
  141. error_reporting(0);
  142. }
  143.  
  144. $conexion = new mysqli('127.0.0.1', 'usuario', 'contraseña', 'base-de-datos');
  145.  
  146. if ($conexion->connect_errno > 0) {
  147. http_response_code(500);
  148. if (MODO_DESARROLLADOR) {
  149. die('Unable to connect to database [' . $conexion->connect_error . ']');
  150. } else {
  151. die('Internal Server Error');
  152. }
  153. }
  154.  
  155. $conexion->set_charset('utf8');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement