Comunidad de diseño web y desarrollo en internet online

Dos consultas una PHP y otra Mysql

Citar            
MensajeEscrito el 28 Ago 2009 04:07 pm
PHP:
Soy muy nuevo en php y mysql asi que tengo el siguiente problema con php, estoy haciendo un sistema sencillo de logeo con setcookie('idSesion',$hash) asignado a hash un valor tipo rand y etc.. el caso es que este mismo codigo que voy a poner aqui antes me funcionaba, luego empeze a estructurar por carpetas los codigos y dejo de funcionar, el parth/ruta no es porque ya esta mas que comprobado.

Código PHP :

<?
<?php if(isset($_COOKIE['idSesion'])) { ?>

            <p>Usuario registrado</p>  
            <a href="php/comun/procesa.phtml?mode=logout">Logout</a>
<?php } else { ?>
      
         <form id="forUsua" action="php/comun/procesa.phtml" method="post">
         <h3><a>Zona Privada</a></h3>
         <span>
         <label for="nombre">Nick</label>
         <input id="nombre" name="nombre" value="" />
         </span>
         
         <span>
         <label for="codigousuario">Contraseña</label>
         <input type="password" id="codigousuario" name="codigousuario" value="" />
         </span>
         
         <span>
         <input type="submit" value="Enviar" />
         </span>
         
         <a href="php/comun/registrar.html">Registrarse</a>
         </form>
         
<?php } ?>
?>


la cuestion es que al introducir un usuario valido se logea sin problemas pero segun el codigo de arriba una vez logeado no deberia salir mas el FORM para logearse si no unicamente la siguiente leyenda "Usuario registrado y Logout", pues mi caso es que vuelve a salir el FORM para logearme, es decir pasa del "IF",aunque el usuario en si esta logeado porque sale opciones en la pagina que solo se ve si estas logeado, asi que si sabeis el porque puede ser o una mejor forma de que no salga el FORM estando logeado.

AHORA MySQL:
Tengo dos tablas(Video,Renta) y necesito una consulta que ya intente de mil maneras y no soy capaz de llegar a la correcta, yo paso dos fechas a la consulta una de Inicio y otra de Fin el caso que mi consulta seria: Seleccionar aquellos identificadores de video que están en la tabla Renta(alquilados) por esas fechas, que luego fusionando con otra consulta con la tabla Video saldría la solución que espero, lo que tengo es esto:

Código MySQL :

q2=SELECT `idVideo` FROM `Renta` WHERE Fecha_Inicio >='Inicio' AND Fecha_Fin <= Fin
SELECT `idVideo`, `Nombre` FROM `Video` WHERE idVideo NOT IN(q2);

Mi problema es el q2, y funciona bien solo en los casos que exista en la tabla reserva un vídeo que coincida en Fecha de Inicio y Fin, yo necesito también los que estén dentro de esas fechas ya que si cambio la fecha de inicio o la de fin en la consulta ya me sale un resultado erróneo, espero haberme explicado bien desde ya muchas gracias a todos,saludos.

Por Dgor

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Ago 2009 01:46 am

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 29 Ago 2009 03:41 pm
que el codigo de arriba de PHP no me funciona, ya que es sencillamente un FORM de logeo y antes un IF que verifica que existe un cookie(si esta el usuario registrado), en tal caso si esta logeado el usuario deberia aparecer solo la leyenda "Usuario registrado- LOGOUT" y si no pues muestra el FORM de logeo, pero se salta el IF no se porque cuando hay un usuario registrado y me muestra el FORM como si no existiese cookie pero si existe ya que la pagina muestra cosas privadas(solo para registrados) asi que logea bien pero se salta el "IF", espero haberme explicado :)

Por Dgor

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Ago 2009 06:20 pm

Código PHP :

<?php if(isset($_COOKIE['idSesion'])) : ?>
 
 
            <p>Usuario registrado</p>   
            <a href="php/comun/procesa.phtml?mode=logout">Logout</a> 
<?php else : ?>
 
       
         <form id="forUsua" action="php/comun/procesa.phtml" method="post"> 
         <h3><a>Zona Privada</a></h3> 
         <span> 
         <label for="nombre">Nick</label> 
         <input id="nombre" name="nombre" value="" /> 
         </span> 
          
         <span> 
         <label for="codigousuario">Contraseña</label> 
         <input type="password" id="codigousuario" name="codigousuario" value="" /> 
         </span> 
          
         <span> 
         <input type="submit" value="Enviar" /> 
         </span> 
          
         <a href="php/comun/registrar.html">Registrarse</a> 
         </form> 
          
<?php endif; ?>

no estoy seguro que tu sintaxis este bien, además cuando trabajo con php en las vistas (html con php entremedio) prefiero usar esta otra sintaxis para las sentencias de control (if, while, for, etc.)

además de esto veo un problema de seguridad GRAVE lo único que verificas es que la cookie 'idSesion' exista, no verificas su contenido y por añadidura esta validación no debiese ser echa junto a tu vista, esto para mantener tu código mas limpio y ordenado.

además de esto, cuando quieras tener datos de conexión en el cliente estos datos deben ir encriptados para eso existen excelentes funciones en php como mcrypt_encrypt para encriptar y mcrypt_decrypt para desencriptar

como ves es uso de cookies no es nada a la ligera

por ultimo, tu problema puntual estoy prácticamente seguro que se debe a que no estas usando vien la función setcookie, antes de esta función no puedes imprimir nada en pantalla (salida de bufer) y la codificasion del documento php debe ser unix o ascii, por que utf8 y otras agregan un caracter invisible al principio del documento (salida de bufer)

:P carajo debí haber escrito un tip sobre esto

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 30 Ago 2009 02:55 pm
Bueno por partes, como soy nuevo en este tema(algo que ya dije) siento ser redundante, seguramente el código puede mejorarse bastante de mil maneras cuando tienes lo conocimientos, así que comprenderás que no muchas cosas no hago porque no entiendo el porque y el como de php, y segundo factor como estoy aprendiendo solo trabajo como localhost asi que ciertas cosas de momento no me preocupan pero agradezco tus consejos para tenerlos en cuenta mas adelante, ahora me interesa ir paso a paso y solucionar este dilema, sobre la sintaxis de predilección tuya en vistas creo que como veras uso un IF no necesito mas para validar los del cookie, ahora si puedo usar otra forma para verificar el cookie que sepas si me lo dices te lo agradeceré porque podría ser esa la solución al problema porque de esta forma se salta el IF porque exista o no el cookie muestra la opcion de else, saluds

Por Dgor

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Ago 2009 05:27 pm
debes validar que tienes carga en la la galleta, has el intento con un var_dump($_COOKIE['idSesion']) y sabaras si ya esta seteada, aparte de eso yo te recomiendo que uses otro parametro aparte de que si esta seteada o no, deberias tenes un cod dentro de la galleta para corroborar el estado de logueo

PD: yo recomiendo que uses una sintaxis mas clara por ejemplo los dos puntos son muy...... confusos en ocaciones

Código PHP :

if($a=='loquesea'){
//lo que sea
}else{
//lo que sea
}

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 30 Ago 2009 07:19 pm

jpcw escribió:

debes validar que tienes carga en la la galleta, has el intento con un var_dump($_COOKIE['idSesion']) y sabaras si ya esta seteada, aparte de eso yo te recomiendo que uses otro parametro aparte de que si esta seteada o no, deberias tenes un cod dentro de la galleta para corroborar el estado de logueo

PD: yo recomiendo que uses una sintaxis mas clara por ejemplo los dos puntos son muy...... confusos en ocaciones

Código PHP :

if($a=='loquesea'){
//lo que sea
}else{
//lo que sea
}

los dos puntos son confusos y desordenan el codigo cuando estas trabajando solo con php, pero en las vistas, cuando hay html entremedio te ayudan a saber donde realmente termina la sentencia de control

ojo, en las vistas no se debe programar, pero las sentencias de control son muy utiles para por ejemplo mostrar una lista desde un arreglo y mostrar o no un determinado formulario

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 30 Ago 2009 08:18 pm
ya he dado con la solución, faltaba determinar el 4to parámetro(el ámbito o directorios donde es valido el cookie) de setcookie en mi caso puse para todo el directorio raiz, es decir

Código PHP :

<?
setcookie('idSesion',$hash, 0, '/')
?>

el 0 solo implica que el cookie tiene validez hasta que se cierre el navegador segun php.net/setcookie.saludos!

Por Dgor

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Ago 2009 08:21 pm
de todos modos, si usas un sistema así de débil en la web te lo van ha hacer pedazos, en serio si es un sistema de usuarios piensalo 2 veces antes de usar cookies y si las usas encripta la información si o si

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 31 Ago 2009 04:15 pm
no es una web ni sistema que vaya a colgarse en internet solo lo estoy usando a modo didactico para aprender y poco mas, pero tendre en cuenta tu consejo si alguna vez me planteo hacer algo en serio, gracias :wink:

Por Dgor

4 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.