A ver si me solucionais mi problemilla, porque ya no me quedan cuernos que romperme. Soy nuevo en esto del PHP pero lo he tomado con ganas, estoy haciendo una página de un grupo de amigos, donde después de registrarte quiero que la gente se pueda "conectar" a la página escribiendo un login y una contraseña, para que la página sepa quien esta al otro lado y funcione como una máquina de estado (esta palabra la lei por ahí..) mediante la variable nivel_chorrero. Bueno, como me enrollo, me informe que tenia que hacerlo con php sesiones (o con cookis pero me dijeron que es mejor lo primero), después de leer documentación me decidi a programar esto:
Código PHP:
<?php
global $misesion, $nick, $contrasena, $bye;
if (isset ($misesion) && $misesion !== '' ){
$nick = $misesion["nick"];
$nivel_chorrero = $misesion["nivel_chorrero"];
$cuadroConexion = '<table width="100%" border="0" cellpadding="0" cellspacing="6" frame="hsides">
<tr>
<td align="center"><b><font color="#FFFFFF" size="3"> Hola <br></b></font></td>
<tr>
<td align="center"><b><font color="#FFFFFF" size="3"> '.$nick.'!<br></b></font></td>
</tr>
<tr>
<td align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">
<a class="menu" href="index.php?page=Chorro_Mi_Perfil">Ver mi perfil</a><br></font></td>
</tr><tr><td></tr></td>
</table>';}
//No está definida la clave
elseif (!isset ($claveConexion)) {
$cuadroConexion = '<form name="conexion" method="post" action="index.php?page=Chorro_Conectate">
<table width="100%" border="0" cellpadding="0" cellspacing=s"6" frame="hsides">
<tr> <td><font color="#FFFFFF" size="2"> <b>Nick1:</b></font></td></tr>
<tr><td><input type="text" name="nickConexion" size="15" maxlength="64" value="'.$nickConexion.'"></td></tr>
<tr><td><font color="#FFFFFF" size="2"> <b>Contraseña:<br></b></font></td></tr>
<tr><td><input type="password" name="claveConexion" size="15" maxlength="64" value="'.$claveConexion.'"></td></tr>
</table>
<table align="center">
<tr>
<td colspan="2" align="center">
<input type="submit" name="Conectar" value="Conectar">
</td>
</tr>
</table></form>';
$nivel_chorrero = 5;
}
elseif ( $claveConexion == '' OR $nickConexion == '') {
// No hay escrito la clave o el nick
$mensajeConexion = '<font color="#FF0000" size="3"> <b>No has introducido el nick y/o la contraseña. </b></font>';
$cuadroConexion = '<form name="conexion" method="post" action="index.php?page=Chorro_Conectate">
<table width="100%" border="0" cellpadding="0" cellspacing=s"6" frame="hsides">
<tr> <td><font color="#FFFFFF" size="2"> <b>Nick2:<br></b></font></td></tr>
<tr><td><input type="text" name="nickConexion" size="15" maxlength="64" value="'.$nickConexion.'"></td></tr>
<tr><td><font color="#FFFFFF" size="2"> <b>Contraseña:<br></b></font></td></tr>
<tr><td><input type="password" name="claveConexion" size="15" maxlength="64" value="'.$claveConexion.'"></td></tr>
</table>
<table align="center">
<tr>
<td colspan="2" align="center">
<input type="submit" name="Conectar" value="Conectar">
</td>
</tr>
</table></form>';
$nivel_chorrero = 5;
}
else{
$baseDatos = mysql_connect("$localhost","$name","$pass") or die(mysql_error());
mysql_select_db("somoselchorrotorrijo_es_db",$baseDatos);
$peticion = "SELECT contrasena,nivel_chorrero FROM miembros WHERE nick='$nickConexion'";
$resultados = mysql_query ($peticion,$baseDatos);
$campoconexion = mysql_fetch_object ($resultados);
$contrasenaConexion = $campoconexion->contrasena;
//Clave buena
if ($claveConexion == $contrasenaConexion && $contrasenaConexion !== '' && isset($contrasenaConexion)) {
$nivel_chorrero = $campoconexion->nivel_chorrero;
$mensajeConexion = '<font color="#009900" size="3"> <b> Ya estás conectado. :) </b></font>';
$cuadroConexion = '<table width="100%" border="0" cellpadding="0" cellspacing="6" frame="hsides">
<tr>
<td align="center"><b><font color="#FFFFFF" size="3"> Hola <br></b></font></td>
<tr>
<td align="center"><b><font color="#FFFFFF" size="3"> '.$nickConexion.'!<br></b></font></td>
</tr>
<tr>
<td align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF" size="2">
<a class="menu" href="index.php?page=Chorro_Mi_Perfil">Ver mi perfil</a><br></font></td>
</tr><tr><td></tr></td>
</table>';
$misesion = array ("nick" => $nickConexion, "contrasena" => $claveConexion, "ID" => session_id(), "nivel_chorrero" => $campoconexion->nivel_chorrero, "valid" => 1);
session_start();
session_register("misesion");}
//Clave errónea
else {
$mensajeConexion = '<font color="#FF0000" size="3"> <b>No has introducido el nick y/o la contraseña correctamente. Vuelve a intentarlo o regístrate si no lo has hecho aún. ;)</b></font>';
$cuadroConexion = '<form name="conexion" method="post" action="index.php?page=Chorro_Conectate">
<table width="100%" border="0" cellpadding="0" cellspacing="6" frame="hsides">
<tr> <td><font color="#FFFFFF" size="2"> <b>Nick3:<br></b></font></td></tr>
<tr><td><input type="text" name="nickConexion" size="15" maxlength="64" value="'.$nickConexion.'"></td></tr>
<tr><td><font color="#FFFFFF" size="2"> <b>Contraseña:<br></b></font></td></tr>
<tr><td><input type="password" name="claveConexion" size="15" maxlength="64" value="'.$claveConexion.'"></td></tr>
</table>
<table align="center">
<tr>
<td colspan="2" align="center">
<input type="submit" name="Conectar" value="Conectar">
</td>
</tr>
</table></form>';
$nivel_chorrero = 5;
}}
?>
Se que es un poco coñazo que ponga el código así, pero bueno, admito críticas. el problema es que aunque se conecta una primera vez, luego no sigue conectada en un segundo cliqueo, no sé si me explico, cuando le introduzco un nick y una contraseña válidas pues se conecta y me da la bienvenido y cuando señalo otro link de la página en la Barra de estado me pone lo de &PHPSESSID="CLAVE RARA", pero en la siguiente página ya no me conserva el nick ni nada y me sale otra vez el formulario de conexión...
Espero haber sido claro y gracias por anticipado por la contestación.
Un Saludo.
Alberto Gómez
P.D. No soy de Cuba, soy de España pero queria solidarizarme con el pueblo cubano...