Page 1 sur 1

Afficher une page 5 secondes, puis l'effacer

Posté : 30 avr. 2023, 12:29
par l'AMI Yves
Bonjour la compagnie.

Je crois que mon titre est assez explicite, voici mon code :

Code : Tout sélectionner

<?php function affiche5s($texte) { ?> <!doctype html> <html> <head> </head> <body> <p><?php $texte ?></p> </body></html>"); <?php flush(); sleep(5); header('location=afficherien()'); } function afficherien() {echo("<!doctype html><html><head></head><body></body></html>"); }
La fonction "affiche5s("Texte" est appelée par mon "index.php".
Tout ce que j'obtiens, c'est un "Cannot modify header informations" apparaissant sur une page blanche après 5 secondes...

Je nage...

Merci d'avance.

AMIcalement.

Re: Afficher une page 5 secondes, puis l'effacer

Posté : 30 avr. 2023, 13:09
par ynx
Bonjour,

Tu n'utilises pas la fonction header() correctement, il faut renseigner une URL et pas une fonction php pour l'entête http Location. Par exemple pour rediriger vers la page index.php : header('Location: http://localhost/index.php');

Mais de toute façon, tu peux pourras pas utiliser la fonction php header() si tu as déjà affiché du contenu sur la page (d'où le message "Cannot modify header informations, headers already sent...").
A la place, essaye d'utiliser Javascript pour modifier le contenu de la page après un certains délai.

Pour simplement faire une redirection vers une autre page après 5 secondes, tu peux aussi essayer d'ajouter une balise html meta refresh dans la balise <head> :
<meta http-equiv="refresh" content="5;url=http://localhost/autre-page.php">

Re: Afficher une page 5 secondes, puis l'effacer

Posté : 30 avr. 2023, 15:37
par l'AMI Yves
Merci de la réponse rapide... mais ça ne marche pas :
au lancement du site, j'ai une page blanche, et, au bout de 5 secondes, NOT FOUND

Je remets mon code :
index.php :

Code : Tout sélectionner

<?php include 'communs.php'; affiche5s("Texte"); exit; </html>
commun.php:

Code : Tout sélectionner

<?php function affiche5s($texte) { ?> <!doctype html> <html> <head> <meta http-equiv="Refresh" content="5;URL=http://localhost/afficherien.php"> </head> <body> <p><?php $texte ?></p> </body></html> <?php }
afficherien.php

Code : Tout sélectionner

<?php function afficherien() { echo(" <!doctype html> <html> <head> </head> <body> </body> </html>"); } ?>

Re: Afficher une page 5 secondes, puis l'effacer

Posté : 30 avr. 2023, 19:21
par l'AMI Yves
J'ai un tout petit peu avancé, mais ça ne marche quand-même pas.

Il faut dire que je teste sur mon réseau local, avec un serveur Apache et des sites virtuels par numéro de port.

J'accède donc à mon site en tapant dans la barre d'adresse :

Code : Tout sélectionner

192.168.1.2:2011.
Là, il trouve mon "index.php"

En modifiant la balise meta que ynx m'a conseillée ici, de cette façon :

Code : Tout sélectionner

<meta http-equiv="Refresh" content="5;URL=afficherien.php">
j'obtiens toujours un gros "NOT FOUND" au bout de 5 secondes, mais la barre d'adresse de mon Firefox affiche

Code : Tout sélectionner

192.168.1.2:2011/afficherien.php
Est-ce que ça peut aider quelqu'un de fort en PHP / HTML à m'explique ce qu'il faudrait faire ?

AMIcalement.

Re: Afficher une page 5 secondes, puis l'effacer

Posté : 30 avr. 2023, 19:29
par or 1
192.168.1.2:2011/afficherien.php
quelle est l'url correcte du fichier afficherien.php ?

Re: Afficher une page 5 secondes, puis l'effacer

Posté : 30 avr. 2023, 22:35
par l'AMI Yves
Je ne sais pas répondre à la question en terme d'"URL", mais le fichier .php est dans le même répertoire que "index.php"

Re: Afficher une page 5 secondes, puis l'effacer

Posté : 01 mai 2023, 04:51
par two3d
Oubli "afficherien.php", redéfinis simplement le contenu de ton body en JavaScript, si tu veux :
<script>
//à placer dans la page que tu veux effacer au bout de 5 secondes (5000)
setTimeout(() => {
	document.body.innerText = ''
}, 5000)
</script>
sleep(); dans une page n'est pas utilisable pour ton cas car il va bloquer la page jusqu'à avoir terminé.

Re: Afficher une page 5 secondes, puis l'effacer

Posté : 01 mai 2023, 15:17
par l'AMI Yves
Ouiiiiii ! Ca marche.

Comme d'habitude, les solutions les lus simples sont toujours les meilleures.

J'avais pourtant l'impression d'avoir déjà essayé ça... Peut-être un point-virgule quelque part ?

Eb tous cas, MERCI !

AMIcalement.