¿Por qué el usuario puede ingresar a mi "panel"?

  • Autor Autor Pcx89
  • Fecha de inicio Fecha de inicio
P

Pcx89

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Betas!, estoy teniendo un problema. En una base de datos tengo registradas a las empresas y en otra registré mi cuenta Admin.
Al loguearme como empresa (una que registré de prueba) y en la barra de direcciones tecleo www.misitio.com/mipanel.php me aparece como nombre de usuario el de la empresa.

Lo raro es que al inicio de mipanel.php puse:
PHP:
<?php
    session_start();
    include('acceso_db3.php');
    if(isset($_SESSION['usuario_nombre'])) {
?>

Los datos de conexión de las empresas son acceso_db2, ¿no debería dar algún error? :O
Me preocupa porque esto significa que si las empresas teclean misitio.php podrían acceder a modificar cosas importantes del sitio :grumpy:
 
Tu problema de seguro estas usando la misma variable de session para los dos... tendrias que o usar un campo distinto, o si se logea como empresa crear un campo $_SESSION['admin'] = 0; y si se logea como admin $_SESSION['admin']= 1; y chequeas el valor de ese campo...
 
No comprendi my bien pero al parecer logueaste dos veces?
Sera que destruiste la session antes de loguarte?
Si no lo haces la session seguira..​
 
Tu problema de seguro estas usando la misma variable de session para los dos... tendrias que o usar un campo distinto, o si se logea como empresa crear un campo $_SESSION['admin'] = 0; y si se logea como admin $_SESSION['admin']= 1; y chequeas el valor de ese campo...
emm, disculpa, ¿pero en que parte de mi código debería cambiarlo?

No comprendi my bien pero al parecer logueaste dos veces?
Sera que destruiste la session antes de loguarte?
Si no lo haces la session seguira..​
Quizás me expresé mal XD
Imaginate que como empresa estás logueada y tecleas www.nobmredelsitio.com/paneldeladmin.php y puede modificar datos como si nada. Eso es lo que me sucede.
 
emm, disculpa, ¿pero en que parte de mi código debería cambiarlo?


Quizás me expresé mal XD
Imaginate que como empresa estás logueada y tecleas www.nobmredelsitio.com/paneldeladmin.php y puede modificar datos como si nada. Eso es lo que me sucede.

... veamos... cuando la empresa o el admin se logean... ahi tienes que diferenciar uno de otro... y los accesos al panel...
PHP:
 <?php
    session_start();
    include('acceso_db3.php');
    if(isset($_SESSION['usuario_nombre']) && $_SESSION['admin']=="1") {

como ves solo agregas una variable mas... tu problema es que estas logeando admin y empresas con la misma variable de session, en tu caso: usuario_nombre, por eso pueden acceder a cualquier panel...
 
... veamos... cuando la empresa o el admin se logean... ahi tienes que diferenciar uno de otro... y los accesos al panel...
PHP:
 <?php
    session_start();
    include('acceso_db3.php');
    if(isset($_SESSION['usuario_nombre']) && $_SESSION['admin']=="1") {

como ves solo agregas una variable mas... tu problema es que estas logeando admin y empresas con la misma variable de session, en tu caso: usuario_nombre, por eso pueden acceder a cualquier panel...

Lo que hice fue poner lo siguiente al comienzo de mipanel.php
PHP:
<?php
    session_start();
    include('acceso_db3.php');
    if(isset($_SESSION['adminame'])) {
?>
Como verás cambié el nombre de la variable, ahora sucede que cuando voy de Empresa a Admin me pide loguearme (perfecto) pero no pasa lo mismo al revés. :/
 
Lo que hice fue poner lo siguiente al comienzo de mipanel.php
PHP:
<?php
    session_start();
    include('acceso_db3.php');
    if(isset($_SESSION['adminame'])) {
?>
Como verás cambié el nombre de la variable, ahora sucede que cuando voy de Empresa a Admin me pide loguearme (perfecto) pero no pasa lo mismo al revés. :/

si como admin quieres entrar a la empresa... pues tienes que hacer otra verificación en la empresa... ejemplo
PHP:
if(isset($_SESSION['usuario_nombre']) || isset($_SESSION['adminame'])){

}

Resumiendo... en admin tendrias:
PHP:
if(isset($_SESSION['adminame'])) {
y en empresa tendrias:
PHP:
if(isset($_SESSION['usuario_nombre']) || isset($_SESSION['adminame'])){

}
 
si como admin quieres entrar a la empresa... pues tienes que hacer otra verificación en la empresa... ejemplo
PHP:
if(isset($_SESSION['usuario_nombre']) || isset($_SESSION['adminame'])){

}

Resumiendo... en admin tendrias:
PHP:
if(isset($_SESSION['adminame'])) {
y en empresa tendrias:
PHP:
if(isset($_SESSION['usuario_nombre']) || isset($_SESSION['adminame'])){

}

cicklow, agradezco mucho tiempo de verdad!!
lo que quiero es que: Empresa solo entra a Empresa y Admin solo a Admin. Si no entendí mal entonces sería:

PHP:
if(isset($_SESSION['usuario_nombre']) || isset($_SESSION['adminame'])){

}

y por otra parte:
PHP:
if(isset($_SESSION['adminame']) || isset($_SESSION['usuario_nombre'])){

}

¿Es esto correcto? :O
 
cicklow, agradezco mucho tiempo de verdad!!
lo que quiero es que: Empresa solo entra a Empresa y Admin solo a Admin. Si no entendí mal entonces sería:

PHP:
if(isset($_SESSION['usuario_nombre']) || isset($_SESSION['adminame'])){

}

y por otra parte:
PHP:
if(isset($_SESSION['adminame']) || isset($_SESSION['usuario_nombre'])){

}

¿Es esto correcto? :O

heee.... estas poniendo exactamente lo mismo... sino quieres que uno acceda al otro solo deja:
panel admin:
PHP:
if(isset($_SESSION['adminame'])){

}

panel empresa:
PHP:
if(isset($_SESSION['usuario_nombre'])){

}

con eso listo... desde ya en el login vos tendras que diferenciar cual es cual y crear la session para cada caso...
 
heee.... estas poniendo exactamente lo mismo... sino quieres que uno acceda al otro solo deja:
panel admin:
PHP:
if(isset($_SESSION['adminame'])){

}

panel empresa:
PHP:
if(isset($_SESSION['usuario_nombre'])){

}

con eso listo... desde ya en el login vos tendras que diferenciar cual es cual y crear la session para cada caso...

¿Mmm, pero el código va en el login o en el código de restricción de la página?
 
¿Mmm, pero el código va en el login o en el código de restricción de la página?

te puse donde va cada uno... creo que no estas entendiendo que hacer... veamos... usemos pseudo lenguaje...
(de igual forma no se para que tienes dos bases de datos distintas... pero en fin)...
login.php
PHP:
SI(USER=="admin"){
	incluir('acceso_db3.php');
	VAR T = CONULTA_MYSQL("USER='admin' AND PASS='".PASSWORD."'");
	SI(T==VERDADERO){
		SESSION['adminame'] = T['nombre'];
	}SINO{
		//ERROR datos incorrectos
	}
}SINO{
	incluir('acceso_db2.php');
	VAR T = CONULTA_MYSQL("USER='".USER."' AND PASS='".PASSWORD."'");
	SI(T==VERDADERO){
		SESSION['usuario_nombre'] = T['nombre'];
	}SINO{
		//ERROR datos incorrectos
	}
}

y el code del post anterior en los paneles... ya sino se entiende listo... porque el que la estas liando sos vos... es algo bien simple de comprender, y te ahorrarias muuucho codigo y dramas, con una sola base de datos y una variable que identifique uno de otro... como dije al inicio...
 
te puse donde va cada uno... creo que no estas entendiendo que hacer... veamos... usemos pseudo lenguaje...
(de igual forma no se para que tienes dos bases de datos distintas... pero en fin)...
login.php
PHP:
SI(USER=="admin"){
	incluir('acceso_db3.php');
	VAR T = CONULTA_MYSQL("USER='admin' AND PASS='".PASSWORD."'");
	SI(T==VERDADERO){
		SESSION['adminame'] = T['nombre'];
	}SINO{
		//ERROR datos incorrectos
	}
}SINO{
	incluir('acceso_db2.php');
	VAR T = CONULTA_MYSQL("USER='".USER."' AND PASS='".PASSWORD."'");
	SI(T==VERDADERO){
		SESSION['usuario_nombre'] = T['nombre'];
	}SINO{
		//ERROR datos incorrectos
	}
}

y el code del post anterior en los paneles... ya sino se entiende listo... porque el que la estas liando sos vos... es algo bien simple de comprender, y te ahorrarias muuucho codigo y dramas, con una sola base de datos y una variable que identifique uno de otro... como dije al inicio...

Gracias por responder cicklow!, te cuento como me quedó:
En los paneles:
Restricción Admin:
PHP:
<?php
    session_start(); // comprobamos que se haya iniciado la sesión
	include('acceso_db3.php'); // incluímos los datos de acceso a la BD
    if(isset($_SESSION['adminame'])) {
?>

Login Admin:
PHP:
<?php
session_start();
include('acceso_db3.php');
$sql = "SELECT adminame FROM administrador";
$query = mysql_query($sql);
$result = mysql_fetch_assoc($query);
if(empty($_SESSION['adminame'])) {
?>

Restriccion Empresa:
PHP:
<?php
    session_start();
   include('acceso_db2.php');
    if(isset($_SESSION['usuario_nombre'])) {
?>

Acceso Empresa:
PHP:
<?php
session_start();
include('acceso_db2.php');
$sql = "SELECT usuario_nombre FROM empreg";
$query = mysql_query($sql);
$result = mysql_fetch_assoc($query);
if(empty($_SESSION['usuario_nombre'])) {
?>

Lo dejaré así hasta que haga un Panel mejorado. ¡¡Por favor dime que mientras tanto podré dejar funcionando la Web haciendo así!! jaja XD
Lo de las bases de datos es complicado de explicarlo, pero tiene que ser así.
 
Última edición:
Puedes cambiar la ruta de acceso a tu panel 😛

mejor has una comprobacion asi como:

PHP:
if(isset($_SESSION['usuario']) and $_SESSION['usuario']=="Administrador"){

}
 
Puedes cambiar la ruta de acceso a tu panel 😛

mejor has una comprobacion asi como:

PHP:
if(isset($_SESSION['usuario']) and $_SESSION['usuario']=="Administrador"){

}

Emm, ¿o sea que está mal mi código?, error no me da ninguno por ahora, al menos la tengo funcionando, pero no se si es del todo correcto el código.
 
Primero, como compruebas que el usuario hizo un login correcto en la base de datos?
y ademas como comprueba los privilegios que tiene este usuario?

segun yo con un formulario haces POST, el que recibe los datos del post los revisa y miras si el usuario es administrador, y si asi lo es pues defines la session con el usuario o con una Bandera para decir que esta correcto o tiene permisos
 
Primero, como compruebas que el usuario hizo un login correcto en la base de datos?
y ademas como comprueba los privilegios que tiene este usuario?

segun yo con un formulario haces POST, el que recibe los datos del post los revisa y miras si el usuario es administrador, y si asi lo es pues defines la session con el usuario o con una Bandera para decir que esta correcto o tiene permisos

¿De qué permisos hablas?, yo me estoy refiriendo a un Login de usuarios común y corriente XD
 
pero por eso pregunto como diferenceas que es un usuario comun a un usuario administrativo? que campo en la base de datos te dice que es correcto ? y donde seteas esta variable de session?
 
pero por eso pregunto como diferenceas que es un usuario comun a un usuario administrativo? que campo en la base de datos te dice que es correcto ? y donde seteas esta variable de session?

Tiene dos login y dos base de datos.. .como ya especifico... una para las empresas y otra para los admin... el problema era que tenia el mismo nombre de session, por eso entraban al mismo panel ambos...
 
pero por eso pregunto como diferenceas que es un usuario comun a un usuario administrativo? que campo en la base de datos te dice que es correcto ? y donde seteas esta variable de session?

Los usuarios (en este caso son empresas) entran a un enlace llamado "Empresas" (que original XD) y yo (Admin) entro a www.misitio.com/admin.php solo yo conozco esa dirección. Los datos de login de las empresas en una tabla y los mios en otra. A no ser que escriban la dirección, que puse anteriormente, en el navegador no sabrán que existe, el archivo "admin.php" y aunque lo sepan, toma los datos de una tabla (solo está mi usuairo registrado en dicha tabla). XD

Se que hay maneras mas fáciles de hacerlo, pero recién empiezo en todo esto, y mientras funcione.... jajaja
 
en ese caso que cambie la variable de session un nombre de variable diferente tanto para usuario y otra diferente para adminsitrador, no se que es lo que es dificil para el 😛
 

Temas similares

S
Respuestas
12
Visitas
3K
Sindulfo Santacruz
S
I
Respuestas
4
Visitas
654
imported_tumadre
I
Atrás
Arriba