A ver, se que las cookies al crear se tienen que poner lo más arribla posible, pero no puedo ponerlo más arriba que el if y no me funciona entonces :-/
<?php
include("configuracion.php");
$cuenta=$_POST[cuenta];
$pass=sha1($_POST[contra]);
########## SQL ##################
$sql="SELECT * FROM usuario WHERE Usuario='".$cuenta."' AND Passhash='".$pass."'";
$resultado = mysql_db_query($db_name, $sql);
$valor = mysql_fetch_array($resultado);
######## FIN SQL ################
if($valor["Cookie"]==NULL){
echo('<font color="red">Disculpe, los datos introducidos no coenciden</font>');
}else{
setcookie ("identificado", "yes", time () + 604800);
};
A ver si me podeis ayudar :-)
existe la columna cookie en la tabla?
simplemente deberias comprobar que la cantidad de filas que devuelva la query sea 1 y entonces setear las cookie, si no el echo :P
ademas tienes un error aqui:
$cuenta=$_POST[cuenta];
$pass=sha1($_POST[contra]);
faltan las comillas :P mejor deberias postear el error que te da tu script :P
Cita de: Nakp en 9 Abril 2011, 21:27 PM
existe la columna cookie en la tabla?
simplemente deberias comprobar que la cantidad de filas que devuelva la query sea 1 y entonces setear las cookie, si no el echo :P
ademas tienes un error aqui:
$cuenta=$_POST[cuenta];
$pass=sha1($_POST[contra]);
faltan las comillas :P mejor deberias postear el error que te da tu script :P
1. No me da ningún error, simplemente no se crea la Cookie.
2. Si está en la DB, no tengo problemas con eso.
3. el problema es que si pongo arriba el 'setcookie' se crea y si lo pongo abajo no (y lo necesito poner abajo).
Intenta así:
<?php
include(dirname(__file__).'/configuracion.php');
if($res = mysql_query('
select * from usuario where
Usuario="'.mysql_real_escape_string($_POST['cuenta']).'" and
Passhash="'.mysql_real_escape_string(sha1($_POST['contra'])).'"
limit 1
')){
//$valor = mysql_fetch_array($resultado); /* Para que? */
mysql_free_result($res);
if(headers_sent())
echo '<span style="color:red;font-weight:bold;">Imposible crear una nueva cabecera.</span>';
else
setcookie ('identificado', 'yes', null, '/');
}else{
?>
<span style="color:red;font-weight:bold;">Disculpe, los datos introducidos no coenciden</span>
<?php } ?>
Recuerda que no puedes declarar una cookie si ya has enviado texto en la webya que esta se declara en el header y el header se envía una sola ves.
Hola WHK, te comento, realmente lo del setcookie de antes era de prueba, pero en verdad se mete el valor que saco de la consulta (de ahí la consulta), a ver si me puedes ayudar please.
PD: Y gracias (este sería el bueno que no funciona.
<?php
include("configuracion.php");
$cuenta=$_POST[cuenta];
$pass=sha1($_POST[contra]);
########## SQL ##################
$sql="SELECT * FROM usuario WHERE Usuario='".$cuenta."' AND Passhash='".$pass."'";
$resultado = mysql_db_query($db_name, $sql);
$valor = mysql_fetch_array($resultado);
######## FIN SQL ################
if($valor["Cookie"]==NULL){
echo('<font color="red">Disculpe, los datos introducidos no coenciden</font>');
}else{
setcookie ("identificado", $valor["Cookie"], time () + 604800);
};
Bien, ya lo solucioné de una forma mucho más ordenada:
<?php
include("config.php");
include("funciones.php");
$cuenta=$_POST[cuenta];
$pass=$_POST[contra];
//Comprueba/mira/elimina Cookies
if($_COOKIE["valorco"]==NULL){
//si no existe cookie
if($cuenta != NULL || $pass != NULL){ //FC
$cook=SacarCookie(limpiasql($cuenta),limpiasql($pass));
if($cook != NULL){
setcookie ("valorco", $cook, time () + 604800);
}else{
echo('<font color="red">Disculpe, los datos introducidos no coenciden</font>');
};
};
};
Gracias por la ayuda igualmente.