[ Foro de PHP ]

Algunas dudas generales

10-Oct-2007 16:42
Jose P. Jvega
4 Respuestas

Hola Nacho, seguro que casi pensabas que se nos había tragado la tierra, pero ya ves que no. Estoy empezando a dedicar tiempo en serio al desarrollo web y me han surgido algunas dudas.
- He visto que en muchos sitios utilizan la función session_start() para guardar el valor de las variables o guardar y recuperar cookies. ¿Es necesario?¿Como funciona en realidad?
- A la hora de trabajar con bases de datos, ¿mejor crear funciones para evitar repetir tanto código o utilizar alguno de los frameworks gratuitos que existen para tratar las tablas como clases y crear objetos para trabajar?
- Supongo que lo habrás hecho así para no complicarlo mucho, pero yo para los formularios utilizo el mismo archivo, o sea, que el formulario se llama a sí mismo para analizar las variables que se le pasan. pejem:

llamándose login.php

<?php
$mostrar=true;
$n=$_POST['nombre'];
$p=$_POST['pass'];

if ( (strlen($_POST['nombre']) >0) and (strlen($_POST['pass']) >0) ){
if ( ($n=="yo") and ($p=="tu") ) {
echo "Bienvenido al sistema";
}
else {
echo "Nombre de Usuario o contraseña incorrectos";
}
$n="";
$p="";
$faltan=false;
}
else{
$faltan=true;
$mensaje="FALTAN CAMPOS POR RELLENAR";
}

?>

<head>
</head>

<body>
<?php
if ($mostrar) { ?>
<p>&nbsp;</p>
<form id="login" name="frmlogin" method="post" action="login.php">
<label>Usuario
<input type="text" size="25" name="nombre" value="<?php echo"$n" ?>"/>
</label>
<p>Contraseña</p>
<p>
<label>
<input type="text" size="25" name="pass" value="<?php echo"$p" ?>"/> </label>
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label>
<input type="submit" name="Submit" value="Entrar" />
</label>
</p>
</form>
<p>&nbsp;</p>

<?php
if ($faltan and isset($_POST['n']) ){
echo"<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>". $mensaje ."</strong>";
}
} ?>

</body>
</html>


Bueno más o menos... no he probado el código.
En fin un saludo y ya nos vemos por aquí. Avisame si haceis alguna cosa interesante.
PD: Te sigue faltando una versión en pdf del curso

10-Oct-2007 21:23
Jose P. Jvega

En el código anterior justo debajo de la línea 8 echo "Bienvenido al sistema";
falta poner la variable mostrar a false para que despues no nos muestre el formulario:
$mostrar=false;

10-Oct-2007 23:43
Nacho Cabanes (+30)

Decías...

- He visto que en muchos sitios utilizan la función session_start() para guardar el valor de las variables o guardar y recuperar cookies. ¿Es necesario?¿Como funciona en realidad?

Si quieres usar sesiones, sí es necesario. Es la forma eficiente de comprobar si un usuario está identificado. Usas algo como

<?php
session_start();
if (!isset($_SESSION["codusuario"]))
die("Zona restringida.");
...

y en la página que analiza el formulario de entrada es en la que das valor a esa variable de sesión.

Es mucho más cómodo (y más seguro) que andar pasando continuamente los datos mediante POST.


- A la hora de trabajar con bases de datos, ¿mejor crear funciones para evitar repetir tanto código o utilizar alguno de los frameworks gratuitos que existen para tratar las tablas como clases y crear objetos para trabajar?

Va en gustos. Como mis proyectos son bastante sencillos, no estoy usando ningún framework, aunque reconozco haber probado alguno.

Me creo mis propias funciones para automatizar las tareas más frecuentes. Intenté implementar alguna clase DAO para enmascarar el acceso a las bases de datos, que es lo más frecuente, pero el manejo de objetos desde PHP 4 deja bastante que desear, así que lo he aplazado para rehacerlo con PHP5 cuando no tenga otras cosas más urgentes (posiblemente dentro de unos 3 meses, que haya acabado lo que ahora es prioritario).


- Supongo que lo habrás hecho así para no complicarlo mucho, pero yo para los formularios utilizo el mismo archivo, o sea, que el formulario se llama a sí mismo para analizar las variables que se le pasan. pejem: [...]


Yo suelo validar de dos formas distintas:
  • Lo que se refiere a valores con formato correcto (por ejemplo, solo cifras numéricas) desde JavaScript.
  • Las validaciones que dependan de datos existentes en la base de datos, lo hago desde PHP, pero en otro fichero distinto, que muestra el mensaje de error (ej: "contraseña incorrecta") y también el enlace para volver al formulario de introducción de datos, o que salta al menú con las opciones para usuarios registrados, si la validación es correcta.


16-Oct-2007 22:53
Jose P. Jvega

He estado echando un ojo a algunos framework y este me parece bastante interesante:
http://www.phpobjectgenerator.com
Te crea todo el código de una clase con las funciones mas habituales para una tabla dada de la base de datos.

Sobre el último punto que respondes:
¿Cómo llamas a la página de entrada para usuarios registrados una vez que has validado los datos de acceso?

Un saludo


18-Oct-2007 20:48
Nacho Cabanes (+30)

Ese framework no tiene mala pinta. He generado un par de clases, pero todavía no he probado el resultado ni he analizado el fuente con un poco de detalle.

En cuanto a lo de volver a la página de introducción de datos, yo lo hago con una página que incluye una redirección de Javascript, además del aviso y de un enlace, por si alguien tiene Javascript deshabilitado.

Para volver al formulario en caso de error o datos incorrectos, también está la opción de que el código del formulario no sea una página completa, sino un fragmento que incorporas en su propia página o en ésta con un "include".






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)