Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Mantenimiento

Estas en el tema de Mantenimiento en el foro de PHP en Foros del Web. Hola "Foros del Web". Necesito un mantenimiento para arreglar cosas en mi página web. A eso del mantenimiento me refiero a conectar la db con ...
  #1 (permalink)  
Antiguo 17/03/2014, 07:37
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Mantenimiento

Hola "Foros del Web". Necesito un mantenimiento para arreglar cosas en mi página web.

A eso del mantenimiento me refiero a conectar la db con el php y que cuando en la db el valor de "maintenance" sea 1, saltará el archivo maintenance.html y será el index.php, osea, será la página principal donde todos los usuarios deberán de ir. Si ponen por ejemplo: misitio.com/login.php, aparecerán en misitio.com/maintenance.html.

Cuando el valor de maintenance en la db sea 0, será todo normal. Apareceras en el misitio.com/index.php

Un ejemplo famoso de este tipo de mantenimiento es el de habbo.es, que cuando estan arreglando algo no les dejan entrar.

Gracias a todos por leer esto, atentamente:
-OfSerker.

P.D: Si pueden aportar algún link o algun tipo de ayuda pequeña no te cortes

Última edición por Triby; 17/03/2014 a las 16:15 Razón: Quitar enlaces innecesarios
  #2 (permalink)  
Antiguo 17/03/2014, 07:54
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mantenimiento

Si es una cosa puntual solo con cambiar el nombre de index.php a indexMant.php y maintenance.html a index.php antes de empezar ha hacer el mantenimiento, y hacer el proceso contrario al acabar.

Si lo quieres hacer cambiando un valor en la bbdd para poderte decir que hacer deberiamos saber algo de tu base de datos....

Pero yo lo que haria es algho así en "index.php" antes de mostrar el formulario de logueo conecto con la base de datos consulto el valor de maintenance

Código PHP:
Ver original
  1. <?php
  2. //conecto con la bbdd
  3. //Consulto maintenance
  4.  
  5. if (!$maintenance){
  6.     include(login.php);
  7. }else{
  8.     include(maintenance.html);
  9. }
  10. //Fin index.php
  11. ?>

Al terminar de hacer mantenimiento habra que acordarse de cambiar el valor....

Para automatizar el cambio de valor o de nombre del fichero, haria lo siguiente

http://tudominio/mantenimiento

en ese directorio tendría un index.php que ofrezca un log que solo admita usuarios con permisos para hacer mantenimiento, en el momento que se loguean, cambio el valor de maintenance en la bbdd o el nombre de los ficheros y en el momento que se cierra la sessión el proceso contrario, algo similar al administrator de joomla o al de worpress. Tambien se podria hacer el el mismo index.php si defines un perfil de usuario de mantenimiento que una vez logueado automaticamente ponga la web para los otros en manteniento....el proceso seria similar al de administrator pero desde index.php principal....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 17/03/2014 a las 08:04
  #3 (permalink)  
Antiguo 17/03/2014, 10:24
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: Mantenimiento

Mira, estoy en el movil. Te puedo enseñar mi DB:



La tabla users es para los usuarios que se registran.
  #4 (permalink)  
Antiguo 17/03/2014, 10:51
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: Mantenimiento

Pero, en verdad se podria hacer que seleccione el numero de la db:

$maintenance = SELECT * OF site_config where maintenance

Luego haces un if:

if $maintenance == 1
(página web en mantenimiento).
}else{
pagina web sin mantenimiento.

Soy nuevo en esto y si alguien aporta una idea como la mía (seleccionar de la DB el maintenance y luego si esta en 1 que el ./index.php sin manteniento, en mantenimiento sea ./maintenance.htm) le agredeceria mucho.

Atentamente: OfSerker
  #5 (permalink)  
Antiguo 17/03/2014, 12:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mantenimiento

Has leido TODO mi post?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 17/03/2014, 13:39
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: Mantenimiento

Si amigo, pero yo no quiero que necesite loguearme con el usuario X y seguidamente se active el mantenimiento solo. Lo que quiero es cojer un apartado en la db dentro de "site_config" llamado maintenance. Llamarlo a un archivo php y luego si esta en 1 el valor de "maintenance", se activa el proceso y si no lo esta, pues no.

P.D: Soy nuevo asi que porfavor ayudame con el codigo.

Atentamente, OfSerker

Última edición por Triby; 17/03/2014 a las 16:16 Razón: Quitar enlace innecesario, aquí vemos código PHP no sugerimos sobre diseño-
  #7 (permalink)  
Antiguo 18/03/2014, 02:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mantenimiento

Cita:
Si amigo, pero yo no quiero que necesite loguearme...
Estas seguro

Cita:
Pero yo lo que haria es algho así en "index.php" antes de mostrar el formulario de logueo conecto con la base de datos consulto el valor de maintenance

Código PHP:


Código PHP:
Ver original
  1. <?php
  2.     //conecto con la bbdd
  3.     //Consulto maintenance
  4.      
  5.     if (!$maintenance){
  6.         include(login.php);
  7.     }else{
  8.         include(maintenance.html);
  9.     }
  10.     //Fin index.php
  11.     ?>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #8 (permalink)  
Antiguo 18/03/2014, 06:49
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: Mantenimiento

Esto es lo que le hiba a enviar por privado a una persona que me respondió en el tro hilo del Maintenance.

Hola, gracias por responder en el foro. Gracias por editar el código. Te digo que en la db borre donde ponía "id" dentro de site_config i edite el código que me pasaste.

Código:
<?php 

//seleccionamos el valor del maintenance en site_config
$sql = mysql_query("SELECT * FROM site_config WHERE maintenance = '1'")); 
while ($fila = mysql_fetch_assoc($sql)) { 
    if($fila['maintenance'] == '1'){ 
        header("Location: ./maintenance.php"); 
    exit;  
    } 
} 
?>
Te paso una foto de la DB ya editada (no se como configuro el atributo, el extra del campo maintenance para que funcione con el php):



Vale, me gustaría que me ayudaras con la duda de si lo tengo bien configurado.
  #9 (permalink)  
Antiguo 18/03/2014, 07:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mantenimiento

Código MySQL:
Ver original
  1. SELECT * FROM site_config WHERE maintenance = '1'

Esto daría los datos de configuración de todos los sites donde maintenance fuera 1. Y tu lo que quieres es que te de los datos de confuguración de un site concreto tenga el valor que tenga maintenance.

Si solo tienes un site por bbdd luego usa

Código MySQL:
Ver original
  1. SELECT * FROM site_config

si tienes mas de un site en la bbdd usa

Código MySQL:
Ver original
  1. SELECT * FROM site_config WHERE idSite = 1
Que te daría los datos del site con identificador 1.

(veo que solo tienes un campo luego solo puedes tener un site)

El campo maintenance debería ser boleano (true, false) no enum(1,0), será más eficiente.

Corregimos:

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Falta la conexión
  4.  
  5. //seleccionamos el valor del maintenance en site_config
  6.  
  7. $sql = mysql_query("SELECT * FROM site_config"));
  8.  
  9. //El bucle while no es necesario puesto que tienes solo un site...por lo que solo te
  10. //retornará un registro.
  11.  
  12.  
  13. $fila = mysql_fetch_assoc($sql);
  14.  
  15.  
  16. //Como maintenance es booleano ya sirve su valor para resolver el condicional
  17.  
  18. if($fila['maintenance']){
  19.     header("Location: ./maintenance.php");
  20. }
  21.  
  22. ?>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #10 (permalink)  
Antiguo 18/03/2014, 07:23
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Pregunta Respuesta: Mantenimiento

Muchas Gracias Amigo =D

La conexión la tengo en otro documente. Ya la añadiré.
Ahora, lo único que necesito saber es:
- ¿No hace falta hacer un "if"?
- ¿Si esta en modo "maintenance", podrán entrar a otras páginas o solo a ./maintenance.php?

P.D: Soy nuevo, así que gracias por ayudarme. Yo vengo del foro de kekomundo.com con los "retroservers" y me interesé por el PHP. Llebo dos días en esta comunidad y me encanta :'D
  #11 (permalink)  
Antiguo 18/03/2014, 08:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mantenimiento

Cita:
- ¿No hace falta hacer un "if"?
Estas haciendo un if($fila['maintenance']){

Cita:
- ¿Si esta en modo "maintenance", podrán entrar a otras páginas o solo a ./maintenance.php?
Si permites que entren por otra dirección que nosea la principal index.php podran llegar donde sea... si solo se puede entrar por index.php y mant es true solo podran acceder a maintenance.php... pero esto seria otro tema.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #12 (permalink)  
Antiguo 18/03/2014, 11:07
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Pregunta Respuesta: Mantenimiento

Gracias nuevamente xd. Yo tengo ganas de saber php para hacer lo que tu haces (ayudar a los nobatos).

Despues de esta última duda se acabo.

El codigo php del maintenance, ¿si lo pongo a la index.php cuando el valor sea 1 estara
en mantenimiento?
  #13 (permalink)  
Antiguo 18/03/2014, 14:23
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: Mantenimiento

Lo estoy probando y me salta este error...

Por el foro, dicen que puede ser que la tabla no este bien configurada

Imagen error:



Atentamente, OfSerker
  #14 (permalink)  
Antiguo 18/03/2014, 14:46
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Mantenimiento

Yo aria lo siguiente, en tu página principal por ejemplo index.php comprobaría si el mantenimiento está activo lo mandamos al mantenimiento y no podria volver al sitio hasta que el site sea 0. Después en el index de tu carpeta mantenimiento hay le dices al revez, si no esta en mantenimiento mandarlo a la web y no puede acceder a la carpeta mantenimiento.

Te pongo unos ejemplo de como seria.

Tu archivo principal "index.php" o cual tengas:

Código PHP:
Ver original
  1. <?php
  2.  
  3. // Aqui iria el archivo conectar de tu DB
  4.  
  5. $verf_config = mysql_query('SELECT * FROM tabla_config');
  6. $rs = mysql_fetch_assoc($verf_config);
  7.  
  8. if($rs['maintenance'] == 1) {
  9.    
  10. header('Location: http://www.dominio.com/maintenance/');
  11.    
  12. }
  13.  
  14. ?>

Después en el index.php dentro de tu mantenimiento (carpeta), haces la misma consulta.

Código PHP:
Ver original
  1. <?php
  2.  
  3. // Aqui iria el archivo conectar de tu DB
  4.  
  5. $verf_config = mysql_query('SELECT * FROM tabla_config');
  6. $rs = mysql_fetch_assoc($verf_config);
  7.  
  8. if($rs['maintenance'] == 0) {
  9.    
  10. header('Location: http://www.dominio.com');
  11.    
  12. }
  13.  
  14. ?>

Con eso arias lo que te e comentado.

También decirte que verás que se repite el código, hay podrias crear una función y usarla sin tener que repetir el código dos veces.

Espero que te sirva, saludos.
  #15 (permalink)  
Antiguo 18/03/2014, 15:33
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Información Respuesta: Mantenimiento

¡Genial man!

Ya me va.

Gracias por todo, te debo 1 :'D.

Etiquetas: html, mantenimiento, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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