Foros del Web » Programando para Internet » PHP »

ayuda session_start() php

Estas en el tema de ayuda session_start() php en el foro de PHP en Foros del Web. hola tengo una web con registro de usuarios tengo una tabla de nombre maestro y una de alumno tengo 2 php de login para cada ...
  #1 (permalink)  
Antiguo 29/10/2007, 13:07
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 2 meses
Puntos: 3
ayuda session_start() php

hola tengo una web con registro de usuarios tengo una tabla de nombre maestro y una de alumno tengo 2 php de login para cada uno, pero ppr ejemplo si tengo un index.php que solo quiero quelo vean los maestros si un alumno esta logeado tambien lo vee como puedo hacerle paraque no aqui les pongo los archivos.

ese se manda del maestro para que se logee
<?php
include("config.php");

session_start();


if ($_POST['numero_control']) {
//Comprobacion del envio del nombre de usuario y password
$numero_control=$_POST['numero_control'];
$pass=$_POST['pass'];
if ($pass==NULL) {
echo "La password no fue enviada";
}else{
$query = mysql_query("SELECT numero_control,pass FROM maestro WHERE numero_control = '$numero_control'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['pass'] != $pass) {
echo "Login incorrecto";
}else{
$query = mysql_query("SELECT numero_control,pass,nombre_completo,mail FROM maestro WHERE numero_control = '$numero_control'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_nombre_completo"] = $row['nombre_completo'];
$_SESSION["s_numero_control"] = $row['numero_control'];
$_SESSION["s_pass"] = $row['pass'];
$_SESSION["s_mail"] = $row['mail'];
echo "Has sido logueado correctamente ".$_SESSION['s_nombre_completo']." y puedes acceder al index.php.";
}
}
}
?>


esta se manda para el alumno cuando se logeea

<?php
include("config.php");

session_start();


if ($_POST['numero_control']) {
//Comprobacion del envio del nombre de usuario y password
$numero_control=$_POST['numero_control'];
$pass=$_POST['pass'];
if ($pass==NULL) {
echo "La password no fue enviada";
}else{
$query = mysql_query("SELECT numero_control,pass FROM alumno WHERE numero_control = '$numero_control'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['pass'] != $pass) {
echo "Login incorrecto";
}else{
$query = mysql_query("SELECT numero_control,pass,nombre_completo,mail,maestro FROM alumno WHERE numero_control = '$numero_control'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_nombre_completo"] = $row['nombre_completo'];
$_SESSION["s_numero_control"] = $row['numero_control'];
$_SESSION["s_pass"] = $row['pass'];
$_SESSION["s_mail"] = $row['mail'];
$_SESSION["s_maestro"] = $row['maestro'];
echo "Has sido logueado correctamente ".$_SESSION['s_nombre_completo']." y puedes acceder al index.php.";
}
}
}
?>


este es el index que quiero que solo lo vea el maestro

<?php

include("config.php");

session_start();



if (isset($_SESSION['s_nombre_completo'])) {
echo "
Perfil De Tutor<br><br>

<br>Nombre Completo: ".$_SESSION['s_nombre_completo'].
"<br>Contraseña:" .$_SESSION['s_pass'].
"<br>Mail:" .$_SESSION['s_mail']. "." ;
}else{
echo "Tu no estas autentificado";
}
?>



si el alumno se logea puede verlo, estaba pensando que si debo de agregar un campo extra a la tabla de alumno y maestro poniendo nivel y que si es nivel 1 lo vea si es nivel 2 no, pero puede haber inseguridad ? o que me recomiendan ? gracias
  #2 (permalink)  
Antiguo 29/10/2007, 13:30
Avatar de ftabilo  
Fecha de Ingreso: junio-2007
Ubicación: En el Pc
Mensajes: 139
Antigüedad: 16 años, 9 meses
Puntos: 3
Re: ayuda session_start() php

Hola AlphaBravo, vas por buen camino, el problema que veo, es que estas usando el mismo nombre de variable sesion para los dos perfiles:

$_SESSION['s_nombre_completo']

DEBES usar dos nombres de sesion distintos para cada perfil, para luego validar el perfil dentro de cada php.

Por ejemplo:

Para alumnos $_SESSION['s_nombre_alumno']
Para profesores $_SESSION['s_nombre_profesor']

Ahora, debes usar el isset para preguntar por la variable de sesion que corresponda en los ficheros php.

En los php del perfil de alumnos preguntar por la variable de sesion de alumnos, y en los php del perfil de profesores preguntar por la variable de sesion de profesores.

Como sugerencia, te invito a que te cuides del sql inyection en tu sistema, ya que estas pasando el valor de los campos de texto tal cual como son ingresados por los usuarios.

Esto es un peligro enorme, ya que nunca falta el alumno ó el profesor que sabe algo de informática

Espero te haya servido
  #3 (permalink)  
Antiguo 29/10/2007, 14:41
 
Fecha de Ingreso: mayo-2005
Mensajes: 74
Antigüedad: 18 años, 10 meses
Puntos: 2
Re: ayuda session_start() php

Buena respuesta, pero me ha llamado la atención eso que dices Ftabilo del "sql inyection" a que te refieres, ¿Que recomendarias para dar mayor seguridad a la aplicación de Alphabravo?

Ya que dices que no falta el alumno o profesor que sabe algo de informática, ¿Cómo entrarías tu a su sistema sin tener "permiso"?

Gracias.
  #4 (permalink)  
Antiguo 29/10/2007, 22:38
 
Fecha de Ingreso: enero-2005
Mensajes: 386
Antigüedad: 19 años, 2 meses
Puntos: 3
Re: ayuda session_start() php

hola una pregunta para cuidarme del sql inyection en tu sistema como puedo evitarlo que me recomiendas? salu2 y grax
  #5 (permalink)  
Antiguo 30/10/2007, 03:02
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 33
Antigüedad: 16 años, 5 meses
Puntos: 1
Re: ayuda session_start() php

Para lo de la inyección sql debes usar preg_match() o alguna función similar combinado con una buena o varias expresiones regulares, dependiendo de los valores que permitas en ele nombre de usuario y contraseña, para filtrar el contenido de la variable antes de pasarla a la consulta sql.

Puedes buscar "sql injection regexp php" sin las comillas, en algun buscador y seguro que encuentrarás mucha información y scripts útiles.
  #6 (permalink)  
Antiguo 30/10/2007, 11:10
Avatar de ftabilo  
Fecha de Ingreso: junio-2007
Ubicación: En el Pc
Mensajes: 139
Antigüedad: 16 años, 9 meses
Puntos: 3
Re: ayuda session_start() php

Hola de nuevo amigos, el SQL INYECTION ó INYECCIÓN SQL, es un tipo de ataque a los sistemas que usan bases de datos, consiste en ingresar consultas sql en los campos en que se reciben los datos a agregar a nuestras consultas.

En Este enlace podrán encontrarlo mejor explicado.

Lo que se me ocurre es filtrar las pabras reservadas de sql cuando se leen los campos, y eliminar comillas y signos de comparación.

De todas maneras les dejo un par de enlaces utiles:

Evitar Inyección SQL en PHP
Evitar Inyección SQL

Espero les sirva, ya que es un tema interesante y nosotros como desarrolladores debemos preocuparnos de estos aspectos.

Saludos
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 16:36.