Comunidad de diseño web y desarrollo en internet online

Consultar Usuario y Contraseña

Citar            
MensajeEscrito el 27 May 2009 01:42 am
Hola a todos. La verdad que estoy incursionando en el tema programación PHP y MySQL (un combo aniquilador para aprender desde cero, pero tengo una base de ASP y Access) y tengo un gran problemón.

Estoy intentando hacer dos cositas, de las cuales una me funciona bien y la otra... PESIMO! :borracho:

Bueno, paso a explicarles... Lo primero que estuve haciendo es un instalador en php que cree automáticamente la base de datos junto con todas las tablas y campos necesarios para que la web funcione bien. El tema es que no se bien si los tipos de variables que estoy utilizando son correctas para un campo usuario y contraseña. Les dejo el código a continuación:

Código :

<?php
$conn=mysql_connect('localhost','root','');

if(!$conn)
{
   echo "<span style='font-size:11px; font-family:Tahoma;'>No se pudo conectar con la base de datos. <b>Asegúrese de que el servidor SQL esté funcionando correctamente</b> o comuníqueselo al administrador.</span><br><br>";
   }

echo "<span style='font-size:11px; font-family:Tahoma;'>1.- CREANDO LA BASE DE DATOS... </span>";

$sql = "CREATE DATABASE Cybernet";
@mysql_query($sql);

if($sql){
   echo "<span style='font-size:11px; font-family:Tahoma; color:#009900;'><b>¡LISTO!</b><br><br></span>";
   }else{
      echo "<span style='font-size:11px; font-family:Tahoma; color:#FF0000;'><b>¡ERROR!</b></span><br><br>";
      }
      
echo "<span style='font-size:11px; font-family:Tahoma;'>2.- CREANDO LAS TABLAS... <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;• Creando Tabla de Usuarios... </span>";

$database = "Cybernet";

$sql = "CREATE TABLE Usuarios(user varchar(20) PRIMARY KEY default 'admin',pass varchar(25) default 'admin')";

if(mysql_db_query($database,$sql)){
   echo "<span style='font-size:11px; font-family:Tahoma; color:#009900;'><b>¡LISTO!</b><br><br></span>";
   }else{
      echo "<span style='font-size:11px; font-family:Tahoma; color:#FF0000;'><b>¡ERROR!</b></span><br><br>";
      }
      
mysql_close($conn);
?>


Por suerte, esto me funciona perfectamente. Crea la base de datos Cybernet junto con su respectiva tabla de usuarios, pero son correctos los tipo de variables que estoy utilizando? O me recomendarían utilizar otro tipo en particular?

Por otro lado, estoy haciendo un sistema de login, pero me ha llevado una gran complicación. Estoy buscando la forma de entender qué es lo que pasa, pero hace 2 días que vengo estudiando la situación y no hay caso. Investigué por todos los foros habidos y por haber y no encuentro nada similar. Les dejo el código y luego les explico lo que pasa:

Código :

<?php
$usuario = $_POST['usuario'];
$password = $_POST['password'];

$conn = @mysql_connect('localhost', 'root', '');

if (! $conn){
echo "Error al intentar conectarse con el servidor MySQL";
exit();
}

if (! @mysql_select_db('cybernet')){
echo "No se pudo conectar correctamente a la Base de datos";
exit();
}

$sql = "SELECT user,pass FROM usuarios";
$resultado = mysql_query($sql);

while($row = mysql_fetch_array($resultado)){
   if($row['user']!=$usuario or $row['pass']!=$password){
      header("position:index.php");
      }else{
         header("position:home.php");
         }
   }
?>


Ahora bien, viendo el código que es muy sencillo, todo parece correcto, pero cuando ejecuto el script me doy un chaparrón de agua fria al ver que no me redirecciona a ninguna página, ni al index (error) ni al home (correcto).

Haciendo diversas pruebas, llegué a observar que cuando hago la siguiente consulta:

Código :

$row = mysql_fetch_array($resultado)


La variable $row no tiene nada. Lo comprobé poniendo esto:

Código :

if($row = mysql_fetch_array($resultado)){
echo "Hay algo";
}else{
echo "Hay nada";
}


Lo mostrado en pantalla era "Hay nada" y mis esperanzas se cayeron al 36º subsuelo del Pentágono. Si me pudieran ayudar serían muy amables, ya que estoy perdiendo demasiado tiempo en algo que conceptualmente estoy considerando correcto y estoy 99,9% seguro que me estoy equivocando en algo.

Un abrazo a todos y mil gracias nuevamente...

Por PabloSC

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 May 2009 02:40 am
trata colocando asi

$resultado = mysql_query($sql,$conn);

pues este $conn es el identificador de la conexion prueba asi a ver que te dice, no te salen errorees ? en que server local estas ? Wamp? Xammp? dinos cual

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 27 May 2009 02:45 am
le has puesto @ al mysql_connect y mysql_select_db por algo en concreto ?lo mas recomendable cuando alga falla es al principio del script: error_reporting(E_ALL); y sin usar @ (que por cierto creo que esta obsoleta o lo estara)
no sabria decirte si es sensible a mayusculas mysql por lo que pon el nombre de la db y tabla (Cybernet y Usuarios) tal y como esta creada y ya comentas

Por oscarga

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 May 2009 11:36 am
Gracias a ambos por sus respuestas. Ahora les respondo yo, jejeje. Veamos.

talcual, te comento que ya puse el $conn como parámetro y no me dio resultados, sigue haciendo lo mismo. He probado incluso no usar "variables intermedias" y definir la consulta como $resultado = mysql_query("SELECT user,pass FROM usuarios" , $conn);
Pero tampoco pasó nada. También te comento que uso WampServer.

oscarga, el @ lo puse solo para rulear, jajaja. En realidad también probé sin el @ y no arroja ningún tipo de error. Eso es lo que realmente me desorienta, porque si tirara errores sería más fácil de identificar. Voy a probar colocar el error_reporting(E_ALL);
Con respecto a si es sensible a mayúsculas, yo tampoco tengo ni idea, pero también había probado verificar eso y aparentemente no tiene efecto.

Por PabloSC

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 May 2009 11:43 am
Perdón por el doble post, pero no puedo editar mi propio tema.
Probé colocando el error_reporting al inicio del script y no sucedió nada... Obviamente también le saqué el @ al mysql_query().
Gracias nuevamente por sus esfuerzos... Seguiré buscando la forma de ver qué sucede mientras tanto.

Lo que a mi, personalmente, me sucede... Es que lo que está fallando por alguna razón es el while()
Lo más cómico es que este script me funcionaba perfectamente cuando yo creé la base de datos de forma manual, pero cuando la borré y la creé con este instalador, el script empezó a tener este problema, por eso me extraña tanto que el while no arroje resultados. Repito, no será problema de tipo de variables??? Yo estoy usando dos varchar de 25 caracteres de longitud (momentaneamente) para user y pass (que forman parte de la tabla usuarios de la base de datos cybernet.

Por PabloSC

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 May 2009 10:23 pm
Ya estaaaaaaaa, ya lo solucioné. Resulta ser que tenía 2 errores. Era una pavada, aunque siempre se pasan por alto las cosas más sencillas y vamos a lo más complejo...

Primero: La tabla, si bien estaba creada, no tenía ninguna entrada, por ende... Era obvio que no iba a encontrar algo dentro del $row!!!
Segundo: El header no funcionaba porque no es "position:index.php", sino "location:index.php"... No se de dónde saqué eso!! jajajaja!! Error de novato... xD

En fin, mil gracias a todos! Un abrazo y les agradezco muchísimo que se hayan tomado su tiempo para analizar mi problema... A seguir con el sistema! =D

Por PabloSC

13 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.