Foros del Web » Programando para Internet » PHP »

logueo/comprobacion de datos en plan chapucilla

Estas en el tema de logueo/comprobacion de datos en plan chapucilla en el foro de PHP en Foros del Web. hola a todo el mundo tengo un lio montado que es flipante hace unas semanas puse un post de como podria hacer mediante un if ...
  #1 (permalink)  
Antiguo 10/05/2009, 06:07
Avatar de JaviCN  
Fecha de Ingreso: abril-2009
Ubicación: Huelva, España
Mensajes: 76
Antigüedad: 15 años
Puntos: 2
logueo/comprobacion de datos en plan chapucilla

hola a todo el mundo tengo un lio montado que es flipante hace unas semanas puse un post de como podria hacer mediante un if una especie de login para una web; dicho problemilla fue resuelto a las mil maravillas pero ahora me a surgido algo parecido y aunque adapte la solucion que me disteis a esto no me saleni tiros e intente hacer algo parecido a lo que ni yo no 3 o 4 tios mas hemos visto el fallo.
sin marear mas la perdiz expongo dicha movida

me han pedido que en la web esta que estoy haciendo para el proyecto haga como especie de un login desde una base de datos en mysql (esta bd se llama filma).
en pocas palabras usuario que este registrado y poniendo sus datos le tiene que llevar a un pagina ya creada anteriormente y si no esta registrado o no a pueto bien sus datos (guardados en el registro en la bd)que salga un mensaje diciendole "No tiene permiso" o algo asi

consegui que al poner los datos salga la pagina pero lo jodido es que sale la pagina aunque ponga datos que no estan en la bd

los codigos serian estos:

formulario:

<form action="entradau.php">
Entrada: <br><br>
Nombre:&nbsp;&nbsp;<input type="text" name="c1"><br><br>
Cotraseña:&nbsp;&nbsp;<input type="text" name="c2"><br><br>
<input type=submit>

entradau.php

<?php
$c=mysql_connect("localhost","pepe","pepa");
mysql_select_db(filma,$c);
if( mysql_query("SELECT nombre, contra FROM usuarios WHERE nombre='$c1' AND contra='$c2'" ,$c))
{
header("Location:musuarios.html");
}
else {
print "No Tiene permiso";
}

mysql_close();

?>


Muchisimas Gracias por la ayuda


PD: la solucion al post anterior que puse fue esta:
<?php
if ($a==="admin" AND $b==="admin")
{
header("Location:admin.html");
}
else {
print "No Tiene permiso";
}
?>

habria alguna forma de tunearla para que saliera?

Última edición por JaviCN; 10/05/2009 a las 07:52
  #2 (permalink)  
Antiguo 10/05/2009, 08:25
 
Fecha de Ingreso: septiembre-2008
Ubicación: Lanzarote, Canarias
Mensajes: 486
Antigüedad: 15 años, 7 meses
Puntos: 41
Respuesta: logueo/comprobacion de datos en plan chapucilla

Hola,

andaba algo aburrido y te he hecho un script...

login.php

Código:
<?php
define("login", true);

include("conectar.php");

if ($_GET[id]=="pagina") {
// esto sería la nueva página restringida

include("es_admin.php");

if ($es_admin==1) { 

// comprobamos los permisos de el archivo

if(is_writable('conectar.php')) { 
echo'<p>Cambie los permisos al archivo config.php a solo lectura. (CHMOD 444)</p>';
}

echo'Eres administrador';
}else{
Header("Location: index.php");
die();
}

}else{

if (isset($_POST[enviar])) { 

$sql = mysql_query("SELECT usuario,pass FROM admin where usuario='".mysql_real_escape_string($_POST['usuario'])."'"); 
list($usuario,$pass)=mysql_fetch_row($sql);
mysql_free_result($sql);

if(mysql_real_escape_string($_POST['usuario'])==$usuario && md5($_POST['pass'])==$pass) {
setcookie("usuario",$usuario,$tiempo);
setcookie("pass",$pass,$tiempo);
header("Location: login.php?id=pagina");
}else{
$error.='Los datos no coinciden con nuestra base de datos.';
}

}

echo'
'.$error.'
<form action="login.php" method="post">

Usuario: <br /> <input type="text" name="usuario" />

<br /> Pass:<br /> <input type="password" name="pass" />

<br />
<input type="submit" name="enviar" value="Conectar" />

</form>
';
}

?>
conectar.php

Código:
<?php

if(!defined('login')) {
Header("Location: index.php");
die();
}

$conectar = mysql_connect("localhost","usuario","pass");
mysql_select_db("db");

?>
es_admin.php

Código:
<?php

if(!defined('login')) {
Header("Location: ../../index.php");
die();
}

function es_admin () {
global $es_admin;
$es_admin=0;
if(!empty($_COOKIE['usuario']) and !empty($_COOKIE['pass'])) {
$admin = "SELECT usuario,pass FROM admin WHERE pass='".mysql_real_escape_string($_COOKIE['pass'])."' AND usuario='".mysql_real_escape_string($_COOKIE['usuario'])."'";
$result = mysql_query($admin);
$num = mysql_num_rows($result); 
if($num==1){
$es_admin=1;
}
}
}

es_admin();

?>
tabla de la db:

Código:
CREATE TABLE `admin` (
  `id` int(11) NOT NULL auto_increment,
  `usuario` varchar(25) character set utf8 default NULL,
  `pass` varchar(40) character set utf8 default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

-- 
-- Volcar la base de datos para la tabla `admin`
-- 

INSERT INTO `admin` VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e');
y ya esta... métete en el login.php y eso sería el inicio, puede que tenga errores ya que lo hice deprisa y no lo probé, el usuario es admin y la contraseña 123456 o 1234, no me acuerdo cual puse.

saludos.

edito:

por si no lo sabes para crear una nueva página por separado con restricciones sería algo asi:

Código:
<?php
define("login", true);
include("conectar.php");

include("es_admin.php");

if ($es_admin==1) { 
echo'Eres administrador'; // si eres admin te saldrá este mensaje
}else{
Header("Location: index.php"); // si no lo eres te redireccionará al index.php
die();
}

?>

Última edición por codig0; 10/05/2009 a las 08:45
  #3 (permalink)  
Antiguo 10/05/2009, 08:59
Avatar de JaviCN  
Fecha de Ingreso: abril-2009
Ubicación: Huelva, España
Mensajes: 76
Antigüedad: 15 años
Puntos: 2
Respuesta: logueo/comprobacion de datos en plan chapucilla

muchisimas gracias tio lo probare haber como va
  #4 (permalink)  
Antiguo 12/11/2009, 13:16
 
Fecha de Ingreso: noviembre-2009
Mensajes: 113
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: logueo/comprobacion de datos en plan chapucilla

hola probe tu desarrollo porque lo econtre completo, me pasan dos cosas,
me sale un error despues de logear:

Warning: Cannot modify header information - headers already sent by (output started at /public_html/php/login.php:8) in
/public_html/php/login.php on line 31

Warning: Cannot modify header information - headers already sent by (output started at /public_html/php/login.php:8) in /
php/login.php on line 32

Warning: Cannot modify header information - headers already sent by (output started at //public_html/php/login.php:8) in /
public_html/php/login.php on line 33

el error anterior sera porque falta algo asi como seccion star ?


y otra cosa, esa contraseña que pusiste es 123456
pero esta encriptada o que? porque x ej edito la base de datos, y le pongo 123
y no anda. me dice inexsistente.
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 14:51.