Ayuda con cookies please xD (Solucionado)

Iniciado por mokoMonster, 25 Octubre 2009, 18:06 PM

0 Miembros y 1 Visitante están viendo este tema.

mokoMonster

Buenas :D
Veran estoy tratando de hacer algo como el detectabot.php de este sitio xD
Es algo muy simple y de hecho lo estoy haciendo como pruebas solo para saber como hacerlo, posteriormente aplicarlo.
En mi codigo, consigo que el usuario meta el codigo del captcha y presione entrar, se inserta cookie e ingresa al sitio.
Pero lo que no se como hacer es para que cuando el usuario entre denuevo ya no le aparezca la pagina para insertar el captcha..
pense que podria ser algo asi, pero no estoy seguro.

if($_COOKIE['valor'] == true);
header("Location: index.php");
}else{
header("Location: ejemplo.php-adss");

como ven ?


####He modificado####
Lee la ultima respuesta porfavor.
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

mokoMonster

Ya supe como hacerlo xD
Encontre esto:

<?php
if(isset($_COOKIE['AboutVisit']))
{
$last $_COOKIE['AboutVisit'];
echo 
"Welcome back! <br> You last visited on "$last;
}
else
{
echo 
"Welcome to our site!";
}
?>


Gracias de todas formas :D
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

WHK

lo que pasa esque las cookies guardan datos en formato string y tu intentabas establecer un valor booleano

mokoMonster

me podrias explicar un poco mas acerca de eso?
xD
Saludos y Gracias:D
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

DarkItachi

Cita de: mokoMonster en 26 Octubre 2009, 06:29 AM
me podrias explicar un poco mas acerca de eso?
xD
Saludos y Gracias:D

Un booleano es un tipo de objeto que solo tiene dos valores, TRUE y FALSE

Lo que te esta diciendo WHK esque no puedes asignar TRUE o FALSE en un string, por eso si vas a intentar siguiendo así prueba a cambiar el true por una cadena "true" y false por una cadena "false" o puedes simplificarlo con "1" y "0" respectivamente.
Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.

дٳŦ٭

Cita de: DarkItachi en 26 Octubre 2009, 07:11 AM
Cita de: mokoMonster en 26 Octubre 2009, 06:29 AM
me podrias explicar un poco mas acerca de eso?
xD
Saludos y Gracias:D

Un booleano es un tipo de objeto que solo tiene dos valores, TRUE y FALSE

Lo que te esta diciendo WHK esque no puedes asignar TRUE o FALSE en un string, por eso si vas a intentar siguiendo así prueba a cambiar el true por una cadena "true" y false por una cadena "false" o puedes simplificarlo con "1" y "0" respectivamente.

Un boleano es 1 o 0, no true o false... lo puedes utilizar como banderas pero el tipo de dato es numerico.


Con sangre andaluza :)


WHK

#6
de hecho son tres valores no dos,

0, 1 y valor nulo o sea nada que se considera como cero igual.

$x = '';
if(!$x){
echo 'acá no hay nada';
}

true, 1, valor

lo que pasa esque en php el valor booleano o comparaciones booleanas también pueden incluir strings y decir si hay un valor, en ese caso se procesa automaticamente como si se utilizara return isset(trim($val)) y por eso puedes hacer cosas como estas:

if($_GET['string']){
echo htmlspecialchars($_GET['string'], ENT_QUOTES);
}

en algunos lenguajes eso no se puede hacer.

De todas formas si puedes hacer comparaciones booleanas integrando strings y valores nulos pero lo que no puedes hacer es enviar valores booleanos a los strings porque no te funcionará o por lo menos no en php pero si en c++ por ejemplo  :P

algo similar sucede con un handle, en php son strings llamados resources que se asignan con un id numérico

mokoMonster

#7
Muchas Gracias por las respuestas anteriores.
:d
Para no publicar otro tema, voy a describir un problema que tengo con setcookie, este problema es reciente.

Tengo un dominio: ejemplo.ex.net y un subdominio bla.ejemplo.ex.net

A=ejemplo.ex.net
B=bla.ejemplo.ex.net

Cuando el usuario entra a A y tiene la cookie "AboutVisit" es redirigido al index.
Si no tiene cookie "AboutVisit" se dirige a antiddos.php, que pide un captcha y si es true te dirije al index, si no, te saca del sitio.
El index de A revisa si tienes cookie tambien, si no la tienes, antiddos.php.


antiddos.php@A

<?php
} else { //form is posted
  
include("securimage.php");
  
$img = new Securimage();
  
$valid $img->check($_POST['code']);
  
$Month 2592000 time();
  if(
$valid == true) {
//Inserta cookie por 30 dias.
setcookie(AboutVisitdate("F jS - g:i a"), $Month);
     echo 
"Muchas Gracias.";
 header("Location: index.php");
  } else {
     
header("Location: http://ejemplo.ex.net-a.googlepages.com/");
  }
}

?>


Hasta aqui esto funciona perfectamente.

Cuando el usuario entra a B y tiene la cookie "mkmnstrCookie", deberia entrar a hell.php (un login).
Si no hay cookie "mkmnstrCookie" te lleba a antiddos.php
Pero, como (creo yo) que la cookie no se guarda, hell.php me redirige a antiddos.php.

antiddos.php@B

<?php
} else { //form is posted
  
include("securimage.php");
  
$img = new Securimage();
  
$valid $img->check($_POST['code']);
  
$Month 2592000 time();
  if(
$valid == true) {
//Inserta cookie por 30 dias.
setcookie(mkmnstrCookiedate("F jS - g:i a"), $Month);
     echo 
"Muchas Gracias.";
 header("Location: ../hell.php");
  } else {
     
header("Location: http://bla.ejemplo.ex.net-a.googlepages.com/");
  }
}

?>




Este es el de hell.php

hell.php@B


<?php
if(!isset($_COOKIE['mkmnstrCookie']))
{
header("Location: anti/antiddos.php");
}
?>


Yo en realidad no veo cual es el problema.
Si ustedes lo ven o saben, porfavor, ayuda.
Saludos y muchas gracias

NOTA:  B en mi servidor esta guardado como ejemplo.ex.net/bla/ == bla.ejemplo.ex.net .
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange