Foros del Web » Programando para Internet » PHP »

Ahora yo necesito ayuda!!!!!!!!

Estas en el tema de Ahora yo necesito ayuda!!!!!!!! en el foro de PHP en Foros del Web. Tengo un problema con una autentificacion http el codigo que tengo es este: --seguridad.php Código PHP: <?   include( "config.inc.php" );    $muerte  =  "$mensaje_de_acceso_denegado" ...
  #1 (permalink)  
Antiguo 09/09/2003, 14:08
Avatar de mapper  
Fecha de Ingreso: enero-2003
Ubicación: Argentina
Mensajes: 321
Antigüedad: 14 años, 10 meses
Puntos: 1
Ahora yo necesito ayuda!!!!!!!!

Tengo un problema con una autentificacion http el codigo que tengo es este:
--seguridad.php
Código PHP:
<?
 
include("config.inc.php");

  
$muerte "$mensaje_de_acceso_denegado";

  if(!isset(
$PHP_AUTH_USER)) {
    
header('WWW-Authenticate: Basic realm="$nombrepagina"');
    
header('HTTP/1.0 401 Unauthorized');
    echo 
$muerte;
    exit;
  } else {
    
// valido mi clave en el servidor ...
    
if (@$db_link mysql_connect("localhost""$user""$pass")) {
        @
mysql_select_db("intercambio_administracion");
    }

    
$sql "select * from usuarios 
                where ((nick = '$PHP_AUTH_USER') 
                     and (pass = 'md5($PHP_AUTH_PW'))) "
;

    
$qpassmysql_query($sql$db_link);
    if(
mysql_num_rows($qpass)<>1)  {
      echo 
$muerte;
      exit;
    }

  }
?>
--config.inc.php
Código PHP:
<?php 
$nombrepagina
="intercambiourls.com";
$mensaje_de_acceso_denegado="El nick o la password ingresada no son validas o no tiene privilegios en esta pagina.";
$user="pepe";
$pass="*******";
?>

El error que me tira es:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\appserv\www\seguridad.php on line 22
__________________
-- May The Force Be With You --
  #2 (permalink)  
Antiguo 09/09/2003, 14:20
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 8 meses
Puntos: 1
por lo momento veo que te falta una comilla en el md5

$sql = "select * from usuarios
where ((nick = '$PHP_AUTH_USER')
and (pass = 'md5('$PHP_AUTH_PW'))) ";

un saludo
  #3 (permalink)  
Antiguo 09/09/2003, 14:35
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 14 años, 7 meses
Puntos: 0
Hola, no sera así:

Código PHP:
if(mysql_num_rows($qpass) == 0)  { 
Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #4 (permalink)  
Antiguo 09/09/2003, 14:37
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 14 años, 7 meses
Puntos: 0
O así:

Código PHP:
if(mysql_num_rows($qpass) != "1")  { 
Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #5 (permalink)  
Antiguo 09/09/2003, 14:39
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Ademas, te sobra la comilla de delante de md5(), porque es una funcion MySQL. Pero podias haberlo descubierto, si hubieras seguido este razonamiento. El error te dice que el parametro de mysql_num_rows() no es valido. ¿De donde sale ese valor? Pues de mysql_query(). Le das una mirada al manual www.php.net/mysql_query y lees que cuando la consulta SQL es incorrecta, mysql_query() devuelve FALSE. Entonces lo que debes hacer es comprobar lo que devuelve para ver si la consulta era correcta. Y si no es correcta, mostrar el mensaje de error con mysql_error() (www.php.net/mysql_error) y parar la ejecucion del script. Algo asi:
Código PHP:
$qpassmysql_query($sql$db_link);
if (!
$qpass) {
  echo 
"Fallo $sql .<br>MySQL dice: ".mysql_error();
  exit;

o en una forma abrebiada:
Código PHP:
$qpassmysql_query($sql$db_link) or die("Fallo $sql .<br>MySQL dice: ".mysql_error()); 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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:23.