No puedo conectarme a base de datos

Ante todo decir que soy novato en esto de la creación de web, quiero hacer ana web en la que por medio de formularios recoger información y pasarla a una base de datos, pero aquí está el problema que cuando se da a enviar en el formulario sale la página php, pero no se conecta a la base de datos. Estoy probando con wampserver, como servidor, mysql. Te pediría por favor que me explicases paso a paso, como hacer el formulario y posteriormente enviarlo a la base de datos. Lo que yo estoy poniendo como formulario es esto:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Autentificación PHP</title>
</head>
<body>
<h1>Autentificación PHP</h1>
<form action="conecta.php" method="POST">
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center"
<?if ($_GET["errorusuario"]=="si"){?>
<bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span>
<?}else{?>
<bgcolor=#cccccc>Introduce tu clave de acceso
<?}?></td>
</tr>
<tr>
<td align="right">USER:</td>
<td><input type="Text" name="usuario" size="8" maxlength="50"></td>
</tr>
<tr>
<td align="right">PASSWD:</td>
<td><input type="password" name="contraseña" size="8" maxlength="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td>
</tr>
</table>
</form>
</body>
</html>
y la pagina php, que se llama conecta php,que debe conectar a la base de datos es esta:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Page title</title>
</head>
<body>
<?//conecto con la base de datos
$conn= mysql_connect("localhost","root","micontraseña");
//selecciono la BBDD
mysql_select_db("mi base de datos",$conn);
//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM clientes WHERE usuario='$usuario' and contraseña='$contraseña'";
//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);
//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($rs)!=0){
    //usuario y contraseña válidos
    //defino una sesion y guardo datos
    session_start();
    session_register("autentificado");
    $autentificado = "SI";
    header ("Location: alta.html");
}else {
    //si no existe le mando otra vez a la portada
    header("Location: index.html?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
?>
</body>
</html>
Por favor, llevo bastante tiempo dándole vueltas y no lo consigo, a ver si me puedes ayudar, paso a paso.

1 respuesta

Respuesta
1
Prueba con este código. Lo que he hecho ha sido mostrar un mensaje de error si no se puede conectar a la base de datos y si se conecta, mostrará la sentencia que estás intentando ejecutar. También te he cambiado el free_results y el close ANTES del header, porque después de header no ejecutará nada.
El resto de cosas (etiquetas html) no son necesarias, ya que no estás mostrando ningún mensaje, estás redireccionando sí o sí la página y además, cualquier salida (mostrar mensajes, etc) antes de header provocará un error del tipo "Error: Cannot modify header information".
<?//conecto con la base de datos
$conn= mysql_connect("localhost","root","micontraseña") or die("No es posible realizar la conexión");
//selecciono la BBDD
mysql_select_db("mi base de datos",$conn);
//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM clientes WHERE usuario='$usuario' and contraseña='$contraseña'";
echo $ssql;
die();

//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);
//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
$numrows = mysql_num_rows($rs);
mysql_free_result($rs);
mysql_close($conn);

if ($numrows!=0){
    //usuario y contraseña válidos
    //defino una sesion y guardo datos
    session_start();
    session_register("autentificado");
    $autentificado = "SI";
    header ("Location: alta.html");
}else {
    //si no existe le mando otra vez a la portada
    header("Location: index.html?errorusuario=si");
}
?>
Cambia el código que tienes en conecta.php por el de arriba y así podremos ver si se conecta o no a la base de datos o qué consulta ejecuta. Postea el mensaje que muestre conecta.php cuando lo ejecutes desde el formulario, ¿vale?
¿Qué quieres decir con?:"Postea el mensaje que muestre conecta.php cuando lo ejecutes desde el formulario, vale?"
Pues quiero decir que sustituyas tu código en conecta.php por el que yo te he dado, abras el formulario, lo rellenes, le das a enviar y entonces mostrará un mensaje.
Ese mensaje lo copias y lo pegas aquí.
En esa imagen no se ve nada.
¿Puedes poner una imagen de mayor resolución? O un enlace a la misma...
Ese es el problema que no me sale ningún mensaje de error, tan solo sale el código fuente del archivo,¿puede ser que tenga algo mal configurado?, muchas gracias por tu paciencia.
Esto es lo que me sale:
Supongo que has puesto lo mismo por error. ¿No te han servido ninguna de las otras respuestas que te han dado?
No me han servido ninguna de las respuestas anteriores, me sigue saliendo lo mismo.
Este es un enlace a la imagen de lo que me sale al darle a enviar:

por si acaso no lo visualizas bien ,esto es lo que me sale , que es el codigo fuente del archivo:
<?//conecto con la base de datos
$conn= mysql_connect("localhost","root","micontraseña") or die("No es posible realizar la conexión");
//selecciono la BBDD
mysql_select_db("mi base de datos",$conn);
//Sentencia SQL para buscar un usuario con esos datos
$ssql = "SELECT * FROM clientes WHERE usuario='$usuario' and contraseña='$contraseña'";
echo $ssql;
die();
//Ejecuto la sentencia
$rs = mysql_query($ssql,$conn);
//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
$numrows = mysql_num_rows($rs);
mysql_free_result($rs);
mysql_close($conn);
if ($numrows!=0){
    //usuario y contraseña válidos
    //defino una sesion y guardo datos
    session_start();
    session_register("autentificado");
    $autentificado = "SI";
    header ("Location: alta.html");
}else {
    //si no existe le mando otra vez a la portada
    header("Location: index.html?errorusuario=si");
}
?>
Muchas gracias por tu ayuda.
No tienes habilitado php como módulo en apache, es por eso que no lo interpreta.
Echa un ojo a este enlace, a ver si te sirve...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas