Proyecto de Software Libre en PHP !!.. Se aceptan PARTICIPANTES/COLABORADORES

Iniciado por Diabliyo, 3 Julio 2008, 16:50 PM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

Hola:

Tengo mas de 8 meses codificando y puliendo mi aplicacion de software base a la cual llamo OneFloor (verla funcionando en http://em-clanmoh.sie-group.net/ y www.sie-group.net/), mi aplicacion en PHP no es un gestor de paginas web personales ni nada de eso, sino que algo mas de la RAIZ, vaya, OneFloor es un sistema para creacion de sitios web al gusto, ya que OneFloor basicamente es el sistema base para iniciar un proyecto de software brindandote un servicio de modulacion muy completo y seguro, en donde cada desarrollador puede disenar una aplicacion de software por separado codificando cada modulo y parte del sistema en un Modulo independiente (archivo.php), posteriormente subir este archivo al sistema OneFloor y este sera leido e interpretado por la aplicacion y formara parte del Panel del Sistema de Administracion, aparte cuenta con un conjunto de funciones muy utiles para facilmente realizar tareas como:

- Cortar noticias.
- Calendarios.
- Insertar, Modificar, Actualizar, Eliminar, Buscar Registros, Buscar Coinsidencias, Listas con limites, etc... de la Base de Datos.
- Cargar Temas y AutoProgramacion de los mismos (muy facil acoplar un tema al sistema).
- Manipulacion y moificacion de Menus y Secciones.
- Existen 4 formas de como visualizar el contenido de una sección:
--- Forma 'Posting' :: Los mensajes se cuelgan como los POST's de un foro.
--- Forma 'Hoja' :: Se cuega un solo mensaje en la sección y su modo visual es como una hoja simple de HTML.
--- Forma 'Galeria' :: Se visualizan los mensajes como Galerias, en recuadros con una foto establecida al frente.
--- Forma 'Descriptiva' :: Tipica forma de cuando estas en una sección de descargas.
- Puedes permitir o no permitir comentarios en secciones.
- Puedes Bloquear o Desbloquear secciones.
- Creacion de Grupos.
- Puedes asociar secciones a los grupos y que solo los integrantes del grupo vean dichas secciones.
- Sistema de Usuarios (mensajeria, perfil, avatars, firmas, etc...).
- Sistema de Descarga (contadores, estadisticas).
- Sistema de Publicidad (agregar, eliminar, modificar publicidad, pueden ser imagenes o anuncios con texto).
- Se permite BBCode :D.
- y mas cosas...

Palabras sobran, pero no ahi mejor como poder utilizarlo y ver el codigo, aparte el codigo pesa solamente unos 1.4 MB ;), todas las variables se protegen al ser insertadas en la BDD y de momento por mas intentos que hago no he encontrado vulnerabilidade de: HTML Injection, SQL Injection, XSS, LFI, RFI ni ninguna otra...

Licencia de OneFloor

OneFloor v1.0 :: Sistema para Gestión de Proyectos PHP y Sitios Web Personales, Desarrollado por SIE-Group.net
Licenciado bajo Creative Commons Reconocimiento-No comercial 2.5 México License, para la Comunidad de Software Libre.

Cual es la finalidad de este POST

Debido a que mi aplicacion puede ser copiada, distirbuida y modificada preservando siempre mi autoria, quisiera pedir la ayuda de la comunidad de internet para resolver un problema que me tiene hasta el chongo en mi software :S, el problema no es de seguridad, sino de rapidez, he notado que el sistema a veces al acceder varias veces a la misma sección se queda como pensando, nolo se, me gustaria que ustedes mismos lo comprobaran accediendo a http://em-clanmoh.sie-group.net y den click a todas las secciones de la derecha y notaran la lentitud en cierto momento.

Nose cual sera la causa directamente y consisamente de este problema, pero acepto cualquier comentario o aportacion y con gusto hasta podemos ir estudiando partes de codigo que ustedes me propongan a verificar para resolver este problema !!...

NOTA: La primer version estable aun no la ofresco por los detalles que les menciono mas arriba, pero la pueden descargar la version inestable de aqui:

Link: http://www.sie-group.net/files/onefloor-1.0-unstable.tar.gz

Gracias por su tiempo de antemano !!

bye bye

Diabliyo

#1
Algun interesado en cooperar, ser parte del proyecto, colaborar o sino quiere involucrarse tanto, pues expresar ideas sobre cuales son las razones de que una aplicacion se alente, o nose... si quieren codigo pidanlo y les muestro todo el que sea necesario, de echo por eso brinde el LINK a la aplicacion para que se la descargen y puedan ver el code al gusto y calar con su propio Servidor HTTP...

Hans el Topo

si únicamente tarda al realizar las secciones el problema debe andar ... en las secciones :D

 

Diabliyo

#3
Cita de: Hans el Topo en  7 Julio 2008, 23:36 PM
si únicamente tarda al realizar las secciones el problema debe andar ... en las secciones :D

Bueno, la cosa no es asi de simple... aunque me gustaria saber si existe alguien interesado en ser parte del proyecto, por lo cual espero que sea muy positivo y con deseos de involucrarse en eso del soft. libre, para que pueda descargase el software onefloor (ya puesto mas arriba), instalarlo en su Servidor Local y hacer sus pruebas para observar el problema !!...

Explicare un poco para ver en que podemos solucionar el problema...


Esta es la index, de esta forma cargo el tema, no nos vamos a centrar tanto como se carga:

<?php
include( "modulos/modulos.php" );

switch( 
$_GET["log"] )
{
case 'entrar':
$user_sitehtmlentities($_POST["log_usr"], ENT_QUOTES);
$pass_sitehtmlentities($_POST["log_pass"], ENT_QUOTES);

if( login$user_site$pass_site ) )
{
$_SESSION["log_usr"]= $_POST["log_usr"];
$_SESSION["log_pwd"]= $_POST["log_pass"]; 
}
header"Location: index.php" );
break;
case 'salir':
session_destroy();
header"Location: index.php" );
break;
}
?>

<html>
<head>
<title><?php echo TITULO_WEB;?></title>
<meta name="verify-v1" content="9RkdHyFpE6q/IBB8Z/nVs54fhHuLn67+9UhaP3sDN8U=" />
<meta http-equiv="Content-Language" content="ES">
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="<?php echo META_DESCRIPCION?>">
<meta name="keywords" content="<?php echo META_CLAVES?>">
<meta name="classification" content="<?php echo META_CLASIFICACION?>">
<link href="<?php echo TEMA_URL?>/css/estilo.css" type="text/css" rel="stylesheet">
<script language="javascript" type="text/javascript" src="script.js"></script>
</head>

<body>
<?php
if( !
strcmp(BASE_USR"") && !strcmp(BASE_PASS"") && !strcmpBASE"") )
include( "install.php" );

else
{
include( TEMA_URL"/cuerpo/logos.php" );
include( TEMA_URL"/cuerpo/menus.php" );
include( TEMA_URL"/cuerpo/noticias.php" );
include( TEMA_URL"/cuerpo/extras.php" );
include( TEMA_URL"/cuerpo/firma.php" );
}
?>

</body>
</html>


Aqui el code menus.php:

<?php
//    <!-- main -->

echo '<div id="main">

          <div id="sidebar">'
;

$cons_mconsultar_enorden"MENUS""ID" ); //consultamos MENUX ordenados por ID

if( $cons_m=="ERROR" )
echo "Error o_O";
else
{
if( mysql_num_rows$cons_m )==)
echo "<p>En construccion</p>";
else
{
while( $menusmysql_fetch_array($cons_m) )
{
echo "<p>"$menus["NOMBRE"]; //imprimimos MENU

$tipo_usrconsultar_datos_usuario$_SESSION["log_usr"], "tipo_usuario" ); //obtenemos grupo al que pertenece el usuario
$grp_consconsultar"PRIVILEGIOS""*" ); //tomamos todos los privilegios
$not_see=""//variable

if( strcmp($tipo_usr"Administrador") ) //si no eres admin, se accede
{
while( $grp_bufmysql_fetch_array($grp_cons) ) //listamos todos los grupos
{
if( strcmp($grp_buf["NOMBRE"], $tipo_usr) && strcmp$grp_buf["SECCIONES"], "vacio" ) ) //si el grupo es distinto al grupo que ese USER tiene asignado
{
if( strcmp($not_see"" ) )
$not_see .= ":";
$not_see .= $grp_buf["SECCIONES"]; //concatenamos
}
}
}

$cons_sconsultar_enorden_con"SECCIONES""RELACION='"$menus["NOMBRE"]. "'""ID" ); //consultamos

unset($grp_cons);
unset($grp_buf);

while( $secciones=mysql_fetch_array($cons_s) )
{
if( grupos_comprueba_miembro($not_see$secciones["ID"]) ) //si este ID es dinstinto a los que no se permite ver
{
echo "<br>";
echo "<a href=\"index.php?ver="$secciones["ID"]. "\">";
echo $secciones["NOMBRE"];
echo "</a>";
}
}
echo "</p>";

unset($cons_s);
unset($secciones);
}

unset($menus);
}
}
unset($cons_m);

echo "<p>";

include( "login.php" );     //cargamos parte de LOGIN
          

echo "</div>";

?>


Aqui codigo de noticias.php:

<?php          
echo "<div id=\"text\" >";

$consconsultar"NOTICIAS""*" ); //consultamos

if( $cons=="ERROR" //si da error, entonecs se formo mal la consulta
echo "Error o_O";
else
{
if( mysql_num_rows$cons )==//si NO existen noticias, esta en construccion el sitio
echo "<p>En Construccion</p>";
else
{
unset($cons); //borramos variable

if( isset($_GET["ver"]) ) //entonces vemos contenido de la sección
{
switch( $_GET["ver"] )
{
case 'registrarme':
include( "registro.php" );
break;
default:
$consconsultar_con"SECCIONES""ID='"$_GET["ver"]. "'" ); //consultamos sección ID a ver

if( mysql_num_rows($cons)==//la sección noe xiste
echo "<p>sección Inexistente</p>";
else
/*
ARGUMENTO 2
0= Modo TH TR
1= Modo H1 P
2= Modo DIV
3: Modo SPAN
*/
ver_noticia$_GET["ver"], 2); //panel de desiciones para mostrar noticia
unset($cons);
break;
}
}
else if( isset($_GET["hoja"]) ) //entonces vemos noticia en formato completo
{
$consconsultar_con"NOTICIAS""ID='"$_GET["hoja"]. "'" ); //consultamos sección ID a ver

if( mysql_num_rows($cons)==//la sección noe xiste
echo "<p>Noticia Inexistente</p>";
else
{
include ("comentarios.php");
ver_noticia02$_GET["hoja"] ); //panel de desiciones para mostrar noticia
}
unset($cons);
}
else //vemos pagina por defecto
{
$index_consconsultar"SERVER_CONFIG""*" ); //consultamos la configuracion
$index_bufmysql_fetch_array($index_cons);

if( strcmp$index_buf["INDEX_DEFAULT"], "" ) ) //si la variable NO esta vacia
{
$wexplode"="$index_buf["INDEX_DEFAULT"] );
ver_noticia$w[1], 2);
unset($w);
}
else
echo "<p>Hoja por DEFAULT sin configurar...</p>";

unset($index_cons);
unset($index_buf);
}
}
}


echo 
'</div>

    </div>'
;

//    <!-- end main -->
?>


Apartir de noticias.php, la funcion ver_noticias() esta dentro de desktop_functions.php, la cual accede a un switch... ver codigo:

<?php
//Funcion principal para decidir el tipo de noticia a mostrar segu su ID
function ver_noticia$id$modo$print_full )
{
if( $print_full==)
{
$aconsultar_con"SECCIONES""ID='"$id"'"); //consultamos secciones
$a_tmpmysql_fetch_array($a);

$bconsultar_enorden_con"NOTICIAS""sección='"$a_tmp["NOMBRE"]. "':MENU='"$a_tmp["RELACION"]. "'""ID DESC" ); //consultamos noticias ordenadas por ID
}
else
{
$bconsultar_con"NOTICIAS""ID='"$print_full"'" ); //consultamos noticia
$b_tmpmysql_fetch_array($b);

$aconsultar_con"SECCIONES""NOMBRE='"$b_tmp["sección"]. "':RELACION='"$b_tmp["MENU"]. "'"); //consultamos secciones
$a_tmpmysql_fetch_array($a);
}

if( mysql_num_rows($b)==)
echo "<p>sección/Noticia Vacia</p>";
else
{
switch( $a_tmp["TIPO"] )
{
case 'noticia':
switch($modo)
{
case 0:
ver_noticiapost_thtd($b$print_full); //enviamos consulta
break;
case 1:
ver_noticiapost_h1p($b);
break;
case 2:
ver_noticiapost_div($b$print_full ); //enviamos consulta
break;
case 3:
ver_noticiapost_span($b);
break;
}
break;
case 'noticia_limpia':
switch($modo)
{
case 0:
ver_noticialimpia_thtd($b$print_full); //enviamos consulta
break;
case 1:
ver_noticialimpia_h1p($b);
break;
case 2:
ver_noticialimpia_div($b$print_full ); //enviamos consulta
break;
case 3:
ver_noticialimpia_span($b);
break;
}
break;
case 'galeria':
switch($modo)
{
case 0:
ver_noticiagaleria_thtd($b$print_full); //enviamos consulta
break;
case 1:
ver_noticiagaleria_h1p($b);
break;
case 2:
ver_noticiagaleria_div($b$print_full ); //enviamos consulta
break;
case 3:
ver_noticiagaleria_span($b);
break;
}
break;
case 'descriptiva':
switch($modo)
{
case 0:
ver_noticiadescriptiva_thtd($b$print_full); //enviamos consulta
break;
case 1:
ver_noticiadescriptiva_h1p($b);
break;
case 2:
ver_noticiadescriptiva_div($b$print_full ); //enviamos consulta
break;
case 3:
ver_noticiadescriptiva_span($b);
break;
}
break;
}
}
unset($a);
unset($a_tmp);
unset($b);
}
?>

chrominum


Diabliyo

Cita de: ArcheritONE en 17 Julio 2008, 17:46 PM
Cambia los scwicht case por ifs ya que estos son mas rápidos.

Te recomiendo que leas esto: http://www.emezeta.com/articulos/funciones-php-optimizar-codigo.

He leido todo el texto y pues en lo unico que (segun el manual este que me pusiste) estaria "fallando" seria en el  switch, ya que las demas funciones que poner y otras cosas, pues yo utilizo las mas rapidas ;) (asi como lo menciona ahi).

Bueno, si es necesario cambiar TOOODOS los switch por condicionales if - else, entonces el codigo creceria demasiado y el archivo final archivo.tar.gz o archivo.zip (el programa vaya) pesaria casi el DOBLE de lo que pesa actualmente y no eso, no lo creo conveniente !!...

Pienso que posiblemente debe haber alguna otra forma o algo que hacer para mejorar el codigo, ya que los switch's son muy buenos para poder dividir mejor el codigo e identificar las partes del mismo !!...

En fin, cada quien.....

Espero seguir obteniendo respuestas y comentarios, y si alguien se atreve a cambiar todos los SWITCH por condicionales para demostrar que la rapidez es NOTABLE, pues tendra su lugar en el proyecto...

Vaya, las ideas se aplauden, pero no lo son todo, es necesario demostrar con echos !!!, reitero su apoyo y espero alguien quiera enrollarse ene ste proyecto de software, de momento el proyecta va muy avanzado y es muy prometedor:

Vean la nueva version funcionando aqui:

http://em-clanmoh.sie-group.net/