Foros del Web » Programando para Internet » PHP »

Script para página de Usuarios Registrados con MYSQL

Estas en el tema de Script para página de Usuarios Registrados con MYSQL en el foro de PHP en Foros del Web. Hola a todos! Previo a todo adelanto que esta pregunta la posteé en el foro Bases de Datos, pero me sugirieron que sería más adecuado ...
  #1 (permalink)  
Antiguo 04/04/2004, 18:55
Avatar de Rosamunda  
Fecha de Ingreso: diciembre-2001
Ubicación: Buenos Aires
Mensajes: 792
Antigüedad: 22 años, 3 meses
Puntos: 1
Mensaje Script para página de Usuarios Registrados con MYSQL

Hola a todos!

Previo a todo adelanto que esta pregunta la posteé en el foro Bases de Datos, pero me sugirieron que sería más adecuado postearlo acá por la índole de la pregunta (se trata básicamente de un script PHP), por lo que -como creo que la sugerencia es correcta-, heme aquí .

Tengo un problemilla con una página para usuarios registrados que estoy armando. Pretendo que sea multiusuario usando mysql.
Ahora bien, mi problema es que nunca usé mysql, por lo que la ayuda que necesito parte de temas tal vez, muy básicos.
Previo a todo, agrego el texto de las páginas que estoy armando:

Tengo una página de inicio llamada login.php
<html>
<head>
<title>Autentificación PHP</title>
</head>
<body>
<h1>Autentificación PHP</h1>
<form action="control.php" method="POST">
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center"
<?if ($_GET["errorusuario"]=="si"){?>
bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span>
<?}else{?>
bgcolor=#cccccc>Introduce tu clave de acceso
<?}?></td>
</tr>
<tr>
<td align="right">USER:</td>
<td><input type="Text" name="usuario" size="8" maxlength="50"></td>
</tr>
<tr>
<td align="right">PASSWD:</td>
<td><input type="password" name="clave" size="8" maxlength="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td>
</tr>
</table>
</form>
</body>
</html>

control.php

<?
//conecto con la base de datos
$conn = mysql_connect("127.0.0.1","victoria","");
//selecciono la BBDD
mysql_select_db("alumnos",$conn);

//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM usuario WHERE nombre_usuario='$usuario' and clave_usuario='$clave'";

//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);

//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($rs)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: alumnos.php");
}else
{
//si no existe le mando otra vez a la portada
header("Location: login.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
?>

seguridad.php

<?
session_start();

//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["autentificado"] != "SI") {
//si no existe, envio a la página de autentificacion
header("Location: login.php");
//ademas salgo de este script
exit();
}
?>


alumnos.php

<?
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["autentificado"] != "SI")
{
}
else
{

//si no existe, envio a la página de autentificacion
header("Location: login.php");
//ademas salgo de este script
exit();
}
?>
<html>
<head>
<title>Aplicación segura</title>
</head>
<body>
<h1>Si estás aquí es que te has autentificado</h1>
<br>
----
<br>
Aplicación segura
<br>
----
<br>
</body>
</html>


Ahora bien, mis dramas son:

1. cuando creé la tabla “alumnos” en phpmyadmin, la guardó en la base de datos “central_user_db” (que es una carpeta), con tres archivos:
alumnos.frm
alumnos.MYI
alumnos.MYD
Cuál es la base? Son los tres? Si subo por FTP la base lo hago con la carpeta y todo? Cuando agrego el nombre pongo alumnos o central_user_db?

2. Además, y para colmo de males, el script no funciona, ya que cuando intento usarlo (en localhost), me tira tres errores:


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\phpdev5\www\usuarios-escuela\alumnos3\control.php on line 16

==LINEA 16: if (mysql_num_rows($rs)!=0){

Warning: Cannot add header information - headers already sent by (output started at c:\phpdev5\www\usuarios-escuela\alumnos3\control.php:16) in c:\phpdev5\www\usuarios-escuela\alumnos3\control.php on line 26

==LINEA 26: header("Location: login.php?errorusuario=si");

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\phpdev5\www\usuarios-escuela\alumnos3\control.php on line 28

==LINEA 28: mysql_free_result($rs);


Les súper agradezco el tiempo y la voluntad de ayudarme!!!!!

Rosamunda
  #2 (permalink)  
Antiguo 04/04/2004, 20:31
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
//Error 1: LINEA 16: if (mysql_num_rows($rs)!=0){ de control.php

No necesitas colocar:

Código PHP:
if (mysql_num_rows($rs)!=0){ 
Prueba con:

Código PHP:
ob_start();
if(
$row mysql_fetch_array($rs)){
  
header("Location: login.php?errorusuario=si");
} else {
  
session_start(); 
  
session_register("autentificado"); 
  
$autentificado "SI"
  
header ("Location: alumnos.php"); 
}
//al final del script coloca...
ob_end_flush(); 
El otro error se debe a que no puedes usar ese header ("Location: alumnos.php"); en ese lugar, debido a que session_start() es de por si una cabecera. Más sobre eso en: http://www.forosdelweb.com/showthrea...490#post414490 (yo hice la modificación en el error anterior)

Y el último es obvio que como if (mysql_num_rows($rs)!=0){ es incorrecto, pues entonces no se puede hacer el mysql_free_result().

Saludos!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #3 (permalink)  
Antiguo 04/04/2004, 21:11
Avatar de Rosamunda  
Fecha de Ingreso: diciembre-2001
Ubicación: Buenos Aires
Mensajes: 792
Antigüedad: 22 años, 3 meses
Puntos: 1
Gracias por molestarte en ayudarme drcyber!!!

Ahora, gracias a tu consejo, cambié el archivo control.php aunque algo debí de hacer mal, ya que ahora entro siempre a la página protegida, ponga lo que ponga... aún con la clave incorrecta...

Me quedó así:

<?
//conecto con la base de datos
$conn = mysql_connect("127.0.0.1","victoria","");
//selecciono la BBDD
mysql_select_db("alumnos",$conn);

//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM usuario WHERE nombre_usuario='$usuario' and clave_usuario='$clave'";

//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);

//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña

ob_start();
if($row = mysql_fetch_array($rs)){
header("Location: login.php?errorusuario=si");
} else {
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: alumnos.php");
}


//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: alumnos.php");

mysql_free_result($rs);
mysql_close($conn);

ob_end_flush();
?>


Por cierto, que por las dudas, además de los res archivos, agregué alumnos.sql

Gracias de nuevo por toda tu ayuda!!

Rosamunda
  #4 (permalink)  
Antiguo 09/04/2004, 09:00
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Estan incorrectas algunas cosas, te queda asi:

Código PHP:
//conecto con la base de datos 
$conn mysql_connect("127.0.0.1","victoria",""); 
//selecciono la BBDD 
mysql_select_db("alumnos",$conn); 

//Sentencia SQL para buscar un usuario con esos datos 
$ssql "SELECT * FROM usuario WHERE nombre_usuario='$usuario' and clave_usuario='$clave'"

//Ejecuto la sentencia 
$rs mysql_query($ssql,$conn); 

//vemos si el usuario y contraseña es váildo 
//si la ejecución de la sentencia SQL nos da algún resultado 
//es que si que existe esa conbinación usuario/contraseña 
//de lo contrario se redirecciona a login.php?errorusuario=si

ob_start();
if(
$row mysql_fetch_array($rs)){
  
session_start(); 
  
$_SESSION['autentificado'] = "SI";
  
header ("Location: alumnos.php"); 
} else {
  
header("Location: login.php?errorusuario=si");
}

mysql_free_result($rs); 
mysql_close($conn); 

ob_end_flush(); 
Saludos!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #5 (permalink)  
Antiguo 09/04/2004, 10:23
Avatar de Rosamunda  
Fecha de Ingreso: diciembre-2001
Ubicación: Buenos Aires
Mensajes: 792
Antigüedad: 22 años, 3 meses
Puntos: 1
Gracias!!!!!!!!!!!
Ya mismo lo estoy probando!!!!!!!!

Gracias de nuevo!

Rosamunda
  #6 (permalink)  
Antiguo 12/04/2004, 06:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Sobre el punto 1)

En Mysql .. los archivos que ves que creó son indices y tablas .. pero eso en teoría lo "trabaja" Mysql de forma interna .. Uno cuando quiere "subir" su BD a otro servidor Mysql no se hace subiendo dichos archivos sino "exportando" (en tu BD origen) tus datos y estructura de tablas con tu administrador habitual de Msyql (phpMyadmin por ejemplo) y en el otro servidor la "importas" y ejecutas tu .sql (que contiene todas las instrucciones SQL para crear tus tablas y datos en ellas) en tu nuevo servidor.

Es decir ... no se sube nada por "FTP" como si fuera una BD "Access" o similar .. es en el "servidor" donde debes crear tus tablas y "cargarle" los datos .. Entre otras cosas por qué las tablas/bd que creeas pueden tener permisos de usuarios o propiedades especificas para ese servidor Mysql en concreto . .y todo eso se define una vez creadas las tablas (con o sin datos) en el servidor de Mysql en cuestión.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 04:30.