Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Almacenar/actualizar constantes

Estas en el tema de Almacenar/actualizar constantes en el foro de PHP en Foros del Web. Hola a todos. En mi sistema PHP utilizo constantes de trabajo, por ejemplo: SUELDO_MINIMO IMPUESTO_GENERAL_VENTAS AÑO_TRABAJO UIT etc. Se supone que no debo entrar al ...
  #1 (permalink)  
Antiguo 08/04/2019, 15:17
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 575
Antigüedad: 10 años, 2 meses
Puntos: 6
Pregunta Almacenar/actualizar constantes

Hola a todos.
En mi sistema PHP utilizo constantes de trabajo, por ejemplo:
SUELDO_MINIMO
IMPUESTO_GENERAL_VENTAS
AÑO_TRABAJO
UIT
etc.
Se supone que no debo entrar al código para editar las constantes generales del sistema.
Debo almacenarlas en algún lugar y con una pantalla de modificación actualizar dichos valores.
Qué me sugieren para lograr esto?
__________________
Todos somos iguales. NO! a la violencia de género.
  #2 (permalink)  
Antiguo 08/04/2019, 18:57
 
Fecha de Ingreso: abril-2006
Mensajes: 258
Antigüedad: 13 años, 2 meses
Puntos: 39
Respuesta: Almacenar/actualizar constantes

Cita:
Iniciado por bandolera Ver Mensaje
Hola a todos.
En mi sistema PHP utilizo constantes de trabajo, por ejemplo:
SUELDO_MINIMO
IMPUESTO_GENERAL_VENTAS
AÑO_TRABAJO
UIT
etc.
Se supone que no debo entrar al código para editar las constantes generales del sistema.
Debo almacenarlas en algún lugar y con una pantalla de modificación actualizar dichos valores.
Qué me sugieren para lograr esto?
ten en cuenta, CONSTANTE no debe de cambiarse salvo sea algo de Suma importancia,
los datos que pones, por ejemplo SUELDO_MINIMO, puede variar con los años, lo mismo con AÑO de TRABAJO, asi que lo mejor es que uses una BASE de datos, o archivos como INI, JSON, para guardar los Valores y que estos sean usados por el Sistema, o tambien crear un archivo PHP al vuelo(esto es riesgoso si no tomas todas las precauciones podrian colar codigo malicioso)
yo lo que hice fue generar un array en php y generar un archivo , como constantes.php

dicho archivo, al ser en PHP, no necesitaba PREPROCESARSE y tenia constantes que el administrador lo agrega desde un formulario HTML
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr
  #3 (permalink)  
Antiguo 08/04/2019, 20:48
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 575
Antigüedad: 10 años, 2 meses
Puntos: 6
Respuesta: Almacenar/actualizar constantes

Gracias por tu respuesta, estuve leyendo algo de la documentación, y creo que las Constantes que estoy manejando no son Constantes sino variables.
Y tomando lo que mencionas sobre manejar un Array, eso lo creas dentro del código o lo obtienes de una tabla en la BD?
__________________
Todos somos iguales. NO! a la violencia de género.
  #4 (permalink)  
Antiguo 08/04/2019, 22:18
 
Fecha de Ingreso: abril-2006
Mensajes: 258
Antigüedad: 13 años, 2 meses
Puntos: 39
Respuesta: Almacenar/actualizar constantes

Cita:
Iniciado por bandolera Ver Mensaje
Gracias por tu respuesta, estuve leyendo algo de la documentación, y creo que las Constantes que estoy manejando no son Constantes sino variables.
Y tomando lo que mencionas sobre manejar un Array, eso lo creas dentro del código o lo obtienes de una tabla en la BD?
el array lo tengo asi
Código PHP:
Ver original
  1. <?php
  2.     return array("DB_HOST"=>'localhost',
  3. "DB_USER"=>"root",
  4. "DB_PASS"=>"123456",
  5. );

asi cuando quiero hacer uso de esa configuracion

Código PHP:
Ver original
  1. $CONFIG = require (PATH_WEB .'/configuracion.php');
  2.  
  3. $db = myPDO($CONFIG['DB_HOST'],$CONFIG['DB_USER'],$CONFIG['DB_PASS']);

asi lo realizo, como ves es tomado como una CONSTANTE, ya que el ARRAY que tengo en la configuracion PHP no puedo darme el lujo de cambiar el nombre de la KEY de la array ya que lo estan usando otros Scripts,

tienes muchas formas de realizarlos como te comente, pero depende de cada caso, por ejemplo si sabes que una CONSTANTE es igual para todos los usuarios, lo mas logico es que sea tomado desde un archivo FIJO, ya que asi evitas que se conecte a la BASE de datos cada vez para obtener esos Datos,

pero en caso de que sea alguna Constante como por ejemplo des a un usuario la Posibilidad de Guardar su THEME preferido y usarlo cada vez que se Logee, ese es una constante pero solo para el usuario por lo cual ese Deberia Estar dentro de la Base de datos,

donde puede que te Lies es Como Administrar esos datos, y lo Mejor es un HTML comun, y luego recoger los resultados del Formulario, y converitorlos a INI,JSON, o array en PHP, o incluso en Constantes, pero como te comente, si creas archivos PHP desde un formulario, tiense que evitar y protegerq ue no cuelen ningun codigo malicioso, por ejemplo si tienes un Formuarlio que tiene un campo de STRING

y tu tomas ese string

por emplo si creas algo asi

Código PHP:
Ver original
  1. <?php
  2.  
  3. file_put_contents("configuracion.php","<?php return array('DB_HOST','". $_POST["host"]."');");

y mira ese error, tranquilamente puedo meter un HTML con CODigo asi

Código HTML:
Ver original
  1. <input type="text" name="host" value="xx');shell_exec('format c:"/>

bueno en fin
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr
  #5 (permalink)  
Antiguo 09/04/2019, 10:55
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 575
Antigüedad: 10 años, 2 meses
Puntos: 6
Respuesta: Almacenar/actualizar constantes

En el caso del array que utilizas, es para la conexión de la base de datos. Y eso no se modifica nunca.
En mi caso tengo (como te dije) unos campos que necesitan ser actualizados pocas veces, por lo que creo tendré que guardarlos en una BD.
SUELDO_MINIMO
IMPUESTO_GENERAL_VENTAS
AÑO_TRABAJO
UIT
STOCK_MINIMO
STOCK_MAXIMO
Creo que no me queda otra.
__________________
Todos somos iguales. NO! a la violencia de género.



La zona horaria es GMT -6. Ahora son las 16:16.