Foros del Web » Programando para Internet » PHP »

Error en codigo de caducidad

Estas en el tema de Error en codigo de caducidad en el foro de PHP en Foros del Web. Hola tengo este codigo que estoy implementando (lo encontre en la red y lo estoy modificando) para que cada mes caduque la contraseña y se ...
  #1 (permalink)  
Antiguo 19/09/2011, 15:36
Avatar de paloma8513  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 23
Antigüedad: 13 años, 10 meses
Puntos: 1
Error en codigo de caducidad

Hola tengo este codigo que estoy implementando (lo encontre en la red y lo estoy modificando) para que cada mes caduque la contraseña y se tenga que cambiar, pero me marca el siguiente error

Código HTML:
Fecha ingresada: Resource id #2

Warning: strtotime() expects parameter 2 to be long, resource given in E:\Sites\webroot\caducar.php on line 14
Fecha en la cual caduca: 1969-12-31
Fecha de actual: 2011-09-19
Dias que faltan para caducar: -15237
Estado: Ya caduco
el codigo es el siguiente

Código PHP:
<?php 

$con 
mysql_connect("server","user","pass") or die('Could not connect: ' mysql_error());
$db mysql_select_db("dbase"$con) or die('Could not select db: ' mysql_error());
$result mysql_query("SELECT  time_stamp FROM usuario WHERE username = $_POST['usuario'] ")  or die("Could not query: " mysql_error()); 

function 
caducidad($result){
   if (
$result != "0000-00-00"){
      
$f_caduca strtotime("$result +1 month",$result);
      
$f_caduca date("Y-m-d",$f_caduca);
      
$hoy date("Y-m-d");
      print 
"<b>Fecha en la cual caduca:</b> ".$f_caduca "<br>";
      print 
"<b>Fecha de actual:</b> ".$hoy "<br>";
      
      
$f_hoy strtotime($hoy);
      
$f_hoy floor($f_hoy/86400);
      
$f_caduca1 strtotime($f_caduca);
      
$f_caduca1 floor($f_caduca1/86400);
      
$f_compara = ($f_caduca1-$f_hoy);
      
      print 
"<b>Dias que faltan para caducar:</b> ".$f_compara "<br>";
      if (
$f_compara <= 0){
         return 
true;
      } else {
         return 
false;
      }
   } else {
      return 
false;
   }
}


$fecha_registro $result;

print 
"<b>Fecha ingresada:</b> ".$fecha_registro."<br>";
if(
caducidad($fecha_registro)){
   
   print 
"<b>Estado:</b> Ya caduco";
} else {
   
   print 
"<b>Estado:</b> No ha caducado";
}
?>
lo que quiero es usar el time_stamp que tengo en la base y usarlo como fecha de ingreso asi cuando pase un mes se ejecuta otro codigo que cambia la contraseña, y el time_stamp asi vuelve a correr un mes (ese codigo lo tengo y funciona bien) este codigo lo que hace es que compara la fecha de ingreso con la actual y nos dice cuantos dias quedan, pero la verdad no le encuentro el error , espero puedan ayudarme, me dicen que todo esto se puede hacer con mysql pero la verdad quiero ver por que sale este error (ademas que de mysql no se mucho)
  #2 (permalink)  
Antiguo 19/09/2011, 15:49
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 9 meses
Puntos: 96
Respuesta: Error en codigo de caducidad

Saludos

Noto que te hace falta campurar el registro, ya qeu solamente estas ejecutando la sentencia

Código PHP:
Ver original
  1. $sql = mysql_query("SELECT  time_stamp FROM usuario WHERE username = $_POST['usuario'] ")  or die("Could not query: " . mysql_error());  
  2. $result=mysql_fetch_array(result);
  3. $tiempo=$result['time_stamp'];//Este es el parametro que pasaras a tu funcion
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 19/09/2011, 16:40
Avatar de paloma8513  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 23
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error en codigo de caducidad

Muchas gracias por tu respuesta Nano_

puse el codigo como me dices y ya no me marca erro pero tampoco hace nada

Código HTML:
Fecha ingresada:
Fecha en la cual caduca: 1970-01-31
Fecha de actual: 2011-09-19
Dias que faltan para caducar: -15206
Estado: Ya caduco
no pone la fecha (y en la base si tengo el time_stamp) y supongo que por lo mismo no hace los demas calculos

Código PHP:
<?php 

$con 
mysql_connect("server","user","pass") or die('Could not connect: ' mysql_error());
$db mysql_select_db("dbase"$con) or die('Could not select db: ' mysql_error());
$sql mysql_query("SELECT  time_stamp FROM usuario WHERE username='".$_POST['usuario']."';")  or die("Could not query: " mysql_error());  
$result=mysql_fetch_array($sql);// aqui lo cambie por que tu me ponias result
$tiempo=$result['time_stamp'];//Este es el parametro que pasaras a tu funcion

function caducidad($tiempo){//aqui cambie $result por $tiempo
   
if ($tiempo != "0000-00-00"){//aqui cambie $result por $tiempo
      
$f_caduca strtotime("$tiempo +1 month",$tiempo);//aqui cambie $result por $tiempo
      
$f_caduca date("Y-m-d",$f_caduca);
      
$hoy date("Y-m-d");
      print 
"<b>Fecha en la cual caduca:</b> ".$f_caduca "<br>";
      print 
"<b>Fecha de actual:</b> ".$hoy "<br>";
      
      
$f_hoy strtotime($hoy);
      
$f_hoy floor($f_hoy/86400);
      
$f_caduca1 strtotime($f_caduca);
      
$f_caduca1 floor($f_caduca1/86400);
      
$f_compara = ($f_caduca1-$f_hoy);
      
      print 
"<b>Dias que faltan para caducar:</b> ".$f_compara "<br>";
      if (
$f_compara <= 0){
         return 
true;
      } else {
         return 
false;
      }
   } else {
      return 
false;
   }
}


$fecha_registro $tiempo;//aqui cambie $result por $tiempo

print "<b>Fecha ingresada:</b> ".$fecha_registro."<br>";
if(
caducidad($fecha_registro)){
   
   print 
"<b>Estado:</b> Ya caduco";
} else {
   
   print 
"<b>Estado:</b> No ha caducado";
}
?>
  #4 (permalink)  
Antiguo 19/09/2011, 23:38
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Error en codigo de caducidad

Bueno el segundo parametro que estas enviando a strtotime() es incorrecto, revisa por favor el manual.

strtotime('cadena de fecha a convertir', timestamp_de_fecha_actual)

Sugiero omitir el segundo parametro, ya que por default tomara la fecha y hora del sistema. Despues nos cuentas si funciono.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 20/09/2011, 09:46
Avatar de paloma8513  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 23
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error en codigo de caducidad

Gracias por tu respuesta Triby, hice los cambios que me dices y funciona a medias.

ya no me marca errores y hace los calculos pero solo de este mes, no toma el time_stamp de la base solo toma la fecha actual y hace el calculo

Código HTML:
Fecha ingresada:
Fecha en la cual caduca: 2011-10-20
Fecha de actual: 2011-09-20
Dias que faltan para caducar: 30
Estado: No ha caducado
Como ves no aparece la fecha ingresadapor lo visto no esta tomando el valor de la bd

Código PHP:
f
function caducidad($tiempo){
   if (
$tiempo != "0000-00-00"){
      
$f_caduca strtotime("$tiempo +1 month");//aqui quite el segundo $tiempo
      
$f_caduca date("Y-m-d",$f_caduca);
      
$hoy date("Y-m-d");
      print 
"<b>Fecha en la cual caduca:</b> ".$f_caduca "<br>";
      print 
"<b>Fecha de actual:</b> ".$hoy "<br>";
      
      
$f_hoy strtotime($hoy);
      
$f_hoy floor($f_hoy/86400);
      
$f_caduca1 strtotime($f_caduca);
      
$f_caduca1 floor($f_caduca1/86400);
      
$f_compara = ($f_caduca1-$f_hoy);
      
      print 
"<b>Dias que faltan para caducar:</b> ".$f_compara "<br>";
      if (
$f_compara <= 0){
         return 
true;
      } else {
         return 
false;
      }
   } else {
      return 
false;
   }

si pongo manualmente la fecha si funciona y hace todos los calculos

Código HTML:
Fecha ingresada: 2011-09-11
Fecha en la cual caduca: 2011-10-11
Fecha de actual: 2011-09-20
Dias que faltan para caducar: 21
Estado: No ha caducado
en esta parte del codigo cambio la fecha manualmente

Código PHP:
$fecha_registro "2011-09-11";//aqui cambie $tiempo por la fecha

print "<b>Fecha ingresada:</b> ".$fecha_registro."<br>";
if(
caducidad($fecha_registro)){
   
   print 
"<b>Estado:</b> Ya caduco";
} else {
   
   print 
"<b>Estado:</b> No ha caducado";

como te digo parece que no esta jalando el time_stamp de la base

se me ocurre llamarlo por medio de la session ya que en el login tengo este codigo

Código PHP:
$result mysql_query("SELECT count(*) AS cuenta, usr_id, username, nombre, apellido1, apellido2, tipo_perfil_id, time_stamp FROM usuario 
                        WHERE username='"
.$_POST['usuario']."'
                        and password = '"
.md5($_POST['clv'])."';")  or die("Could not query: " mysql_error());

session_start("autentificado""usuario""nombre""apellido1""time_stamp"); 
        
$_SESSION["autentificado"]= "SI"
        
$_SESSION["usuario"] = $_POST["usuario"];
        
$_SESSION["time_stamp"] = $_POST["time_stamp"];  
        
header("Location: $redir"); 
Pero aqui no sabria como llamarlo para que inserte el time_stamp por que pongo esto

Código PHP:
$fecha_registro $_POST["time_stamp"]; 

print 
"<b>Fecha ingresada:</b> ".$fecha_registro."<br>";
if(
caducidad($fecha_registro)){
   
   print 
"<b>Estado:</b> Ya caduco";
} else {
   
   print 
"<b>Estado:</b> No ha caducado";

y no funciona sigue sin aparecer la fecha espero ser clara y puedan ayudarme
  #6 (permalink)  
Antiguo 20/09/2011, 16:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Error en codigo de caducidad

OK, dentro de tu funcion caducidad, agrega como primera linea:

echo "Tiempo = [$tiempo]";

Cuentanos como aparece, tal vez el error esta en la forma que obtienes los datos desde la consulta.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 21/09/2011, 10:42
Avatar de paloma8513  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 23
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error en codigo de caducidad

Inserte la linea y esto es lo que me sale

Código HTML:
Tiempo = []
Fecha ingresada: 
Fecha en la cual caduca: 2011-10-21
Fecha de actual: 2011-09-21
Dias que faltan para caducar: 30
Estado: No ha caducado
Obiamente no lo esta leyendo de la base, segun yo la consulta esta bien (parece que ni tan bien),
Código PHP:
$con mysql_connect("server","user","pass") or die('Could not connect: ' mysql_error());
$db mysql_select_db("dbase"$con) or die('Could not select db: ' mysql_error());
$sql mysql_query("SELECT  time_stamp FROM usuario WHERE username='".$_POST['usuario']."';")  or die("Could not query: " mysql_error()); 
y esta es la estructura de campo time stamp en la base

Field Name = time_stamp
Datatype = timestamp
Len =
Default = CURRENT_TIMESTAMP
Pk? =
Not Null? = X
Unsigned? =
Auto Incr? =
Zerofill? =
Coment =

y los datos los datos los guarda asi

2011-07-20 11:27:49

Gracias por las respuestas
  #8 (permalink)  
Antiguo 21/09/2011, 21:56
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Error en codigo de caducidad

Bueno, si ya viste que no traes nada en la variable, prueba si esa misma consulta te da resultados en PhpMyAdmin, seguramente sera mas facil entontrar el problema.

Otra cosa que puedes hacer es:
Código PHP:
Ver original
  1. $query = "SELECT  time_stamp FROM usuario WHERE username='{$_POST['usuario']}'";
  2. echo "<p>$query</p>"; // Esta bien la consulta?
  3. $sql = mysql_query($query)  or die("Could not query: " . mysql_error());  
  4.  
  5. // Despues:
  6. $result=mysql_fetch_array($sql);
  7. var_dump($result); // Que muestra?... contiene lo que necesitas?
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 22/09/2011, 13:13
Avatar de paloma8513  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 23
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error en codigo de caducidad

Triby

Agradesco mucho tu ayuda, despues probar de tu ultimo post y que no me mostraba nada me di cuenta que no cargaba el usuario en la session ya que en una pagina anterior la cerraba, corrigiendo eso todo el codigo funciona (claro con las correciones del codigo que me hicieron ver), ahora que ya funciona puedo pasar al siguiente paso y en cuanto lo tenga todo terminado espro subirlo para ver asi a alguien le sirve

Saludos y muchas gracias

Etiquetas: caducidad, mysql, registro, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:19.