Foros del Web » Programando para Internet » PHP »

Ficheros y los punteros

Estas en el tema de Ficheros y los punteros en el foro de PHP en Foros del Web. Muy buenas a todos :) Que tal ?? Bueno vengo con una duda, y es la siguiente. Tengo un ejercicio que me pide lo siguiente: ...
  #1 (permalink)  
Antiguo 03/07/2009, 05:02
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Ficheros y los punteros

Muy buenas a todos :) Que tal ??
Bueno vengo con una duda, y es la siguiente. Tengo un ejercicio que me pide lo siguiente:

Cita:
"Crea un script -puedes llamarlo ejercicio28.php- de modo que al ejecutarlo escriba en un fichero la fecha y hora en que se produjo el acceso.



Ese mismo script deberá presentar en la página la fecha y hora de la visita anterior y si es la primera vez que se accede deberá aparecer un mensaje diciendo: «Esta es la primera vez que accedes a esta página».



Para obtener los valores de fecha y hora, deberás utilizar las funciones adodb a las que se alude en la página en la que se trata la opción Include."
Todo bien lo entiendo y tal.. y este es mi código:

Código PHP:
<?php

# Incluimos la función de la hora.
include("adodb-time.inc.php");

# Ahora verificamos si existe o no el fichero.
if(file_exists("acceso.txt")){
    
    
$f1=fopen("acceso.txt""a+");
    
rewind($f1);
    
fwrite($f1"Último acceso a las: " );
    
fwrite($f1adodb_date("h : i : s"));
    
fwrite($f1" del día ");
    
fwrite($f1adodb_date("j-n-Y")."<br>");
    
fclose($f1);
    include(
"acceso.txt");
    
}else{

    
$f1=fopen("acceso.txt""w+");
    
fputs($f1"«Esta es la primera vez que accedes a esta página»");
    
fclose($f1);
    include(
"acceso.txt");
}

?>
El problema que tengo es con los punteros. Porque cuando ya crea el archivo, tendría que quitarse "Esta es la primera vez.. bla bla bla " y no lo sobreescribe, si no que imprime la fecha y la hora del último acceso.
La cosa es que he intentado por varios medios colocar el puntero al comienzo para que sobrescriba el texto pero no hay manera. También probé con los atributos del fopen pero tampoco y ando medio perdido porque ya no se que puedo hacer más.

Simplemente es para que me guíen y me tiren un cable si pueden :)

Y otra cosilla que me gustaría saber, es en cuanto a programa. Yo estoy usando para escribir los scripts y programar el Notepad++ me gustaría saber si me recomiendan otro o con ese voy bien :)

Un saludo y muchas gracias !!
  #2 (permalink)  
Antiguo 03/07/2009, 05:35
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Ficheros y los punteros

Yo lo haria asì, me parece que no necesitas seguir escribiendo el file asì que puedes sobrescrivir tranquilamente
Código PHP:
if(file_exists("acceso.txt")){
    
    
$f1=fopen("acceso.txt""wb"); 
    ... 
Ciao!
  #3 (permalink)  
Antiguo 03/07/2009, 08:32
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
De acuerdo Respuesta: Ficheros y los punteros

Cita:
Iniciado por abidibo Ver Mensaje
Yo lo haria asì, me parece que no necesitas seguir escribiendo el file asì que puedes sobrescrivir tranquilamente
Código PHP:
if(file_exists("acceso.txt")){
    
    
$f1=fopen("acceso.txt""wb"); 
    ... 
Ciao!
Gracias, pero no funciona xD si no probalo.

La cosa es que cuando lo ejecuto por primera vez sale "Esta es la primera vez que accedes a esta página" pero luego se tiene que borrar cuando se actualice y valla poniendo la fecha y hora de del último acceso, que lo valla poniendo uno debajo de otro, y solo pone uno.. es ahí donde tengo el problema con lo del puntero, que no borra lo anterior y lo sigue copiando a ver si me pueden ayudar.

Saludos.
  #4 (permalink)  
Antiguo 03/07/2009, 09:10
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Ficheros y los punteros

O sea tienes que escribir
«Esta es la primera vez que accedes a esta página»
la primera vez, luego la segunda tienes que borrar esa linea y escribir la fecha del acceso.
la terzera tienes que ANADIR otra fecha en otra linea?
Asi?
Código PHP:
if(file_exists("acceso.txt")){

    
$file_content file_get_contents("accesso.txt");
    if(
eregi("Esta es la primera"$file_content)) $f1=fopen("acceso.txt""wb");
    else 
$f1=fopen("acceso.txt""ab");
    
fwrite($f1"Último acceso a las: " );
    
fwrite($f1adodb_date("h : i : s"));
    
fwrite($f1" del día ");
    
fwrite($f1adodb_date("j-n-Y")."<br>");
    
fclose($f1);
    include(
"acceso.txt");
    
}else{

    
$f1=fopen("acceso.txt""w+");
    
fputs($f1"«Esta es la primera vez que accedes a esta página»");
    
fclose($f1);
    include(
"acceso.txt");

  #5 (permalink)  
Antiguo 04/07/2009, 06:50
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Respuesta: Ficheros y los punteros

Cita:
Iniciado por abidibo Ver Mensaje
O sea tienes que escribir
«Esta es la primera vez que accedes a esta página»
la primera vez, luego la segunda tienes que borrar esa linea y escribir la fecha del acceso.
la terzera tienes que ANADIR otra fecha en otra linea?
Asi?
Código PHP:
if(file_exists("acceso.txt")){

    
$file_content file_get_contents("accesso.txt");
    if(
eregi("Esta es la primera"$file_content)) $f1=fopen("acceso.txt""wb");
    else 
$f1=fopen("acceso.txt""ab");
    
fwrite($f1"Último acceso a las: " );
    
fwrite($f1adodb_date("h : i : s"));
    
fwrite($f1" del día ");
    
fwrite($f1adodb_date("j-n-Y")."<br>");
    
fclose($f1);
    include(
"acceso.txt");
    
}else{

    
$f1=fopen("acceso.txt""w+");
    
fputs($f1"«Esta es la primera vez que accedes a esta página»");
    
fclose($f1);
    include(
"acceso.txt");

Exacto abidibo solo que lo que vos pusiste no funciona y hay comandos que pusiste que aun no sé que hacen xD
Yo tengo que ir guiándome por esto:
h ttp://es2.php.net/manual/es/function.fopen.php ( tuve que poner asi la url porque me decía no se que de spam :S )
que es lo que estaba viendo en el capítulo este xD y aun asi no me sale jajaja, es un lío que madre mía.. xD


Saludos y gracias =)
  #6 (permalink)  
Antiguo 04/07/2009, 11:25
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años, 7 meses
Puntos: 15
Respuesta: Ficheros y los punteros

Bueno ya pude solucionarlo muajajaja que gratificante es :) !! os lo dejo

Código PHP:
<?php

# Incluimos las funciones de tiempo.
include("adodb-time.inc.php");

# Comprobamos si existe el archivo acceso.txt
if(file_exists("acceso2.txt")){
        
        
# Ahora colocamos el puntero al final del archivo
        # e introducimos la hora y la fecha del último acceso.
        
$f1=fopen("acceso2.txt""a+");
        
fwrite($f1"Último acceso a las: " );
        
fwrite($f1adodb_date("h : i : s"));
        
fwrite($f1" del día ");
        
fwrite($f1adodb_date("j-n-Y")."<br>\r\n");
        
fclose($f1);
        include(
"acceso2.txt");

    }else{
    
        
# Como no existe el archivo acceso2.txt lo creamos.
        
$f1=fopen("acceso2.txt""w+");
        
        
# Escribimos lo que queremos que aparezca al crearlo.
        
fwrite($f1"Esta es la primera vez que accedes a esta página <br> \r\n");
        
fclose($f1);
        
        
# Incluimos el archivo para que aparezca en pantalla.
        
include("acceso2.txt");
        
        
/* Y como queremos que luego sobreescriba la fecha del acceso
        al texto que hemos puesto volvemos a abrir el archivo en modo w+
        ( para que sobreescriba lo que hay ) hacemos un fseek para que 
        extraiga los caractéres y así podremos guardar en el archivo
        las fechas de acceso. */
        
$f1=fopen("acceso2.txt""w+");
        
fseek($f1100);
        
fclose($f1);
}

?>
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 21:30.