PHP - Ayuda con comentarios de mi pagina

 
Vista:

Ayuda con comentarios de mi pagina

Publicado por miguel reyes (1 intervención) el 27/08/2020 14:21:06
tengo el siguiente Script

1
2
3
4
5
6
7
8
9
<?php
$filename = 'comments.txt';
$lines = file($filename);
$r = array_rand($lines);
 
echo $lines[$r];
unset($lines[$r]);
file_put_contents($filename, implode("", $lines));
?>

Cuando alguien visita mi página, el script toma 1 línea aleatoria del archivo comments.txt y elimina esa línea del archivo txt. El problema es que si alguien sigue actualizando mi página, "usará" todas las líneas de mi archivo txt. Quiero cambiar este script de esa manera: cuando alguien visita mi página, el script toma 1 línea aleatoria del archivo comments.txt pero no podrá obtener una nueva línea después de actualizar, cuando sigue actualizando siempre verá la misma línea como la primera vez.
Así que digamos que tengo en el archivo comments.txt:

comment1
comment2
comment3
comment4

El usuario visita mi página, el script toma 1 línea aleatoria del archivo txt, digamos comentario3. Cuando actualice la página, seguirá viendo el comentario3.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con comentarios de mi pagina

Publicado por javier (547 intervenciones) el 27/08/2020 16:47:59
podrias usar sesiones, pero si el user cierra el navegador y entra de nuevo, mata la sesion anterior y el proceso empieza con otra frase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//abrimos sesion
session_start();
 
//si no existe sesion frase por que es la primera vez que entra, la creamos
if(!isset($_SESSION['frase'])){
 
	$filename = 'comments.txt';
	$lines = file($filename);
	$r = array_rand($lines);
	//guardamos la frase en variable sesion
	$_SESSION['frase'] = $lines[$r];
	echo $lines[$r];
	unset($lines[$r]);
	file_put_contents($filename, implode("", $lines));
}else{
	echo $_SESSION['frase'];
}

si son user de tu base de datos podrias hacer un campo en la tabla nuevo llamado frase y alli se la guardas.
si son user que entran sin registrarse, lo mejor seria usar cookies y que les dieras un tiempo de vida, yo que se, un par de dias, pero si el user borra las cookies estamos en las mismas.

La unica solucion fiable es que sean user registrados, si no, entre la IP que tiene el user, almacenada en una tabla de la base datos y las cookies tendrias que apañarte

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar