Hoy vengo a presentar un software para realizar cotizaciones o presupuestos, el cual es totalmente gratuito de usar en la nube; así como open source. Es decir, aparte de que puedes usarlo en mi sitio, puedes descargarlo y modificarlo.
No es la gran cosa, pero entre sus principales características encontramos las siguientes:
Se me ocurre que puede servir tanto como para estudiantes que tienen que entregar un proyecto con PHP simple, así como para personas que necesitan un software como estos.
Voy a explicar cómo fue creado, en dónde se puede probar y también dónde se puede leer el código fuente.
Este sistema está creado con PHP utilizando PDO para conectar con MySQL. Usé lo mismo que explico en Introducción a PHP con PDO y MySQL, o en la creación de un pequeño sistema de ventas.
En el lado del cliente utiliza a Bootstrap 4 y Vue.Js en su versión 2. Para convertir los minutos a un tiempo legible por los humanos, utilizo lo que se vio aquí. Por otro lado, para formatear el dinero utilizo la función que convierte números a dinero que publiqué anteriormente (lo puse rápidamente como filtro gracias a la simplicidad de Vue).
La sesión de PHP es manejada por un, valga la redundancia, manejador o handler propio de sesiones, el cual utiliza MySQL para la persistencia y que publiqué hace algún tiempo.
Ah, olvido decir que no se utiliza ningún framework para PHP; es el lenguaje en su simplicidad absoluta.
Hablando de las contraseñas, las cifro con bcrypt (mira este tutorial para hashear en PHP) pero antes de ello las convierto en una cadena de longitud fija con md5 (para evitar poner un límite en la longitud de las mismas). Así, aunque MD5 es rompible por un ataque de diccionario, bcrypt no, porque usa sal.
Sobre la seguridad puedo decir que utilizo un token CSRF para evitar ataques CSRF, y para comprobar el token utilizo hash_equals
en lugar de una simple comparación; todo esto para mitigar ataques de temporización.
Puedes probar la aplicación web haciendo click aquí o entrando en bit.ly/cotizaciones_online. Funciona perfectamente; regístrate con tu correo electrónico y luego inicia sesión.
El software es web, y por lo tanto multiplataforma. Puedes acceder a él desde una tableta, teléfono o computadora desde cualquier parte del mundo. Aparte de eso, gracias al diseño responsivo se adapta a cualquier pantalla.
La siguiente captura es de mi teléfono:
Un PDF que fue generado (la impresión sale casi idéntica) es el que se puede ver aquí.
Bueno, ya hablé mucho. El código fuente está en GitHub bajo la licencia MIT. En resumen puedes hacer lo que quieras con el software, incluso venderlo. Eso sí, no te doy garantía de nada; pero bueno, si quieres ver la licencia puedes leerla en el repositorio.
Lo que me motivó a hacerlo es que ya estaba harto de usar Microsoft Word; porque aunque hay plantillas excelentes ninguna es una herramienta ad-hoc (o como se les diga, no sé si es el término correcto).
Aparte de ello, no podía acceder a la plantilla si no tenía mi computadora presente, y sobre todo, no calculaba cosas automáticamente.
He creado un vídeo para que sepas cómo instalar el software en tu entorno local o servidor:
Conforme pase el tiempo, lo iré puliendo un poco más (me ayudarías si lo compartes y usas).
Eres libre de dejar comentarios para mejorarlo, o reportar errores. Encontrarás más información en la página Acerca de del sistema.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios
excelente proyecto estoy intentando modificarlo agregando otras tablas y todo bien el detalle es que al querer modificar navegacion.php y agregarle mas opciones me sale este error [ warning cannot modify header information - headers already sent by (output started at ] podira decirme el porque se produce y como lo puedo solucionar de antemano muchas gracias :)
Hola. Gracias por sus comentarios. Si tiene alguna consulta o duda, solicitud de creación de un programa, solicitud de vídeo o solicitud de cambio de software estoy para servirle en https://parzibyte.me/#contacto
Saludos!
para subirlo subirlo en linea que se debe de modificar disculpe y muchas gracias
Hola. Gracias por sus comentarios. Si tiene alguna consulta, solicitud de creación de un programa o solicitud de cambio de software estoy para servirle en https://parzibyte.me/#contacto
Saludos!
Hola que tal,
Me parece genial este sistema y muy fácil de entenderlo, lo he probado y le he realizado algunas modificaciones como por ejemplo en vez de colocar servicios voy a cotizar productos, para esto he creado una nueva tabla y un nuevo controlador, sin embargo al seleccionar el producto quiero que el valor del mismo lo pinte en un campo texto de valor pero no puedo hacerlo, tienes una función o un metodo que realice este paso?
Gracias de antemano y te felicito por esta pagina
Hola. Gracias por sus comentarios. Si tiene alguna consulta con gusto lo atiendo en https://parzibyte.me/#contacto
Saludos!
que tal,
me marca este error al dar login veo q es cuestion de redireccionamiento porque si guarda la sesion y si me voy manual en el url me funciona sin problemas, que podra ser?
Cannot modify header information - headers already sent by (output started at /srv/disk3/3047164/.../encabezado.php:1) in /srv/disk3/3047164/.../Utiles.php on line 7
Hola. Le invito a ver el vídeo de instalación, puede que le haya faltado crear una tabla o algo así.
Saludos :)
Hola Luis, gracias por tu respuesta. Te respondo por acá porque no puedo responder a tu comentario.
Yo lo estoy instalando en un servidor externo.
[url]
Ahí te dejo la dirección donde podes probar el error que te comento. El problema del envío de formulario ocurre cuando ya con un usuario registrado intento ingresar a la presupuestadora en sí. La pantalla queda en blanco y no se carga lo que sería la parte principal. Tengo que actualizar para que cargue. Ocurre lo mismo al cerrar sesión.
Muchas gracias por tu respuesta nuevamente
Saludos :) !
Hola. Tal vez se saltó un paso en la instalación del sistema; por favor asegúrese de que ha seguido todos los pasos de la instalación. Entiendo que es el mismo software, pero como puede ver, en mi servidor funciona perfectamente.
Igualmente si quiere una ayuda personalizada puede contactarme en https://parzibyte.me
Saludos :)
Buenas! Un trabajo excelente y muy útil! ya lo instalé y lo estoy intentando probar pero tengo un problema y es con el envío de formulario. Cuando quiero ingresar en la sección principal o cuando quiero desloguearme, me queda la página en blanco y por consola me aparece el mensaje
"Confirmar reenvío del formulario. Esta página web necesita los datos introducidos anteriormente para mostrarse correctamente. Puedes volver a enviar los datos, pero se repetirán las acciones que haya realizado la página.
Pulsa el botón de actualización de página para que se vuelvan a enviar los datos necesarios para cargar la página.
ERR_CACHE_MISS"
Al actualizar la página se muestra el contenido, pero quería saber si me podías guiar en donde está el error o donde puedo solucionarlo.
Un saludo y gracias de antemano!
Hola. Yo acabo de probar, entré a la página (https://parzibyte.me/apps/cotizaciones/?p=cotizaciones) y luego cerré sesión, pero no me apareció el error. Puede usted decirme la manera de replicar el error, así puedo analizarlo?
Saludos :)
Me lanza ese error, no encuentro ese archivo autoload.php
Fatal error: require(): Failed opening required 'C:\xampp\htdocs\sistema_pagos_php/vendor/autoload.php'
Hola. Me estás mencionando el error del sistema de pagos, pero este sistema es de cotizaciones. Por favor publica tu comentario en el post correspondiente.
Saludos :)
perdona se dice buen día que mal educado soy, gracias por la ayuda y muchas gracias por compartir tus conocimientos, gracias nuevamente y este comentario debería ser mi inicio, perdón.
ahora si viene la pregunta que te realice arriba
el contenido de mi env.php es:
;
; URL base del proyecto, algo como https://sitio.com
BASE_URL = "http://127.0.0.1/coTatiana/"
;BASE_URL = "localhost/coTatiana"
USUARIO_MYSQL = "root"
PASS_MYSQL = ""
NOMBRE_BD_MYSQL = "cotizaciones"
HOST_MYSQL = "127.0.0.1"
USUARIO_MYSQL_SESION = "root"
PASS_MYSQL_SESION = ""
NOMBRE_BD_MYSQL_SESION = "cotizaciones"
HOST_MYSQL_SESION = "127.0.0.1"
; De Google Analytics
;ID_SEGUIMIENTO = ""
; Publicidad
AD_CLIENT = ""
AD_SLOT = ""
y de acuerdo a una de tus respuestas:
Hola amigo, el error te lo está diciendo todo: no existe la clave BASE_URL en el archivo de configuración. Debes crear un archivo llamado env.php que se parezca a env.ejemplo.php y después llenarlo con los datos correctos, incluyendo BASE_URL que sería la URL en donde estará tu proyecto.
Saludos.
entonces que tengo mal?, porque el archivo env.php lo puse tal cual con mi configuracion y a mi me sale este error (te comento que le quite espacion en blanco a los archivos y lo tabule)
escribo variables
array(11) { ["BASE_URL"]=> string(27) "http://127.0.0.1/coTatiana/" ["USUARIO_MYSQL"]=> string(4) "root" ["PASS_MYSQL"]=> string(12) ",2020,hidra," ["NOMBRE_BD_MYSQL"]=> string(12) "cotizaciones" ["HOST_MYSQL"]=> string(9) "127.0.0.1" ["USUARIO_MYSQL_SESION"]=> string(4) "root" ["PASS_MYSQL_SESION"]=> string(12) ",2020,hidra," ["NOMBRE_BD_MYSQL_SESION"]=> string(12) "cotizaciones" ["HOST_MYSQL_SESION"]=> string(9) "127.0.0.1" ["AD_CLIENT"]=> string(0) "" ["AD_SLOT"]=> string(0) "" } localhost
array(11) { ["BASE_URL"]=> string(27) "http://127.0.0.1/coTatiana/" ["USUARIO_MYSQL"]=> string(4) "root" ["PASS_MYSQL"]=> string(12) ",2020,hidra," ["NOMBRE_BD_MYSQL"]=> string(12) "cotizaciones" ["HOST_MYSQL"]=> string(9) "127.0.0.1" ["USUARIO_MYSQL_SESION"]=> string(4) "root" ["PASS_MYSQL_SESION"]=> string(12) ",2020,hidra," ["NOMBRE_BD_MYSQL_SESION"]=> string(12) "cotizaciones" ["HOST_MYSQL_SESION"]=> string(9) "127.0.0.1" ["AD_CLIENT"]=> string(0) "" ["AD_SLOT"]=> string(0) "" }
inicia error
Warning: Uncaught Exception: No existe la clave (localhost) en el archivo de configuración in D:\VServ\www\coTatiana\Comun.php:25 Stack trace: #0 D:\VServ\www\coTatiana\BD.php(17): Comun::env('localhost') #1 D:\VServ\www\coTatiana\Sesion.php(24): BD::obtenerParaSesion() #2 [internal function]: Sesion->open('', 'PHPSESSID') #3 D:\VServ\www\coTatiana\SesionService.php(22): session_start() #4 D:\VServ\www\coTatiana\SesionService.php(33): SesionService::init() #5 D:\VServ\www\coTatiana\index.php(49): SesionService::obtenerIdUsuarioLogueado() #6 {main} thrown in D:\VServ\www\coTatiana\Comun.php on line 25
Fatal error: session_start(): Failed to initialize storage module: user (path: ) in D:\VServ\www\coTatiana\SesionService.php on line 22
No veo la necesidad de modificar la estructura del archivo de entorno; recomiendo dejarlo como está. En el post dejé un vídeo de instalación.
hola buenas tardes pude ver el buen trabajo que hizo pero al subir mi cotizador en linea me sale este error [url] me puede ayudar, por favor
Hola, claro que sí. Dice que no existe la clave ID_SEGUIMIENTO en el archivo Comun.php, esto quiere decir que en el archivo de configuración Env debe poner la clave de seguimiento, o simplemente remover en el index la parte que inserta el script de Google Analytics.
Saludos :)