Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: dimitrix en 9 Abril 2011, 15:59 PM

Título: Problemita al crear Cookie
Publicado por: dimitrix en 9 Abril 2011, 15:59 PM
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 :-/

Código (php) [Seleccionar]
<?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 :-)
Título: Re: Problemita al crear Cookie
Publicado por: 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:

Código (php) [Seleccionar]
$cuenta=$_POST[cuenta];
$pass=sha1($_POST[contra]);


faltan las comillas :P mejor deberias postear el error que te da tu script :P
Título: Re: Problemita al crear Cookie
Publicado por: dimitrix en 9 Abril 2011, 22:42 PM
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:

Código (php) [Seleccionar]
$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).
Título: Re: Problemita al crear Cookie
Publicado por: WHK en 10 Abril 2011, 12:51 PM
Intenta así:

Código (php) [Seleccionar]
<?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.
Título: Re: Problemita al crear Cookie
Publicado por: dimitrix en 11 Abril 2011, 12:27 PM
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.

Código (php-brief) [Seleccionar]
<?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);
};
Título: Re: Problemita al crear Cookie
Publicado por: dimitrix en 12 Abril 2011, 01:21 AM
Bien, ya lo solucioné de una forma mucho más ordenada:

Código (php-brief) [Seleccionar]
<?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"$cooktime () + 604800);
}else{
echo('<font color="red">Disculpe, los datos introducidos no coenciden</font>');
};
};
};


Gracias por la ayuda igualmente.