[RESOLU] Afficher une page 5 secondes, puis l'effacer

Eléphanteau du PHP | 29 Messages

30 avr. 2023, 12:29

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.

ynx
Mammouth du PHP | 586 Messages

30 avr. 2023, 13:09

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">

Eléphanteau du PHP | 29 Messages

30 avr. 2023, 15:37

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>"); } ?>

Eléphanteau du PHP | 29 Messages

30 avr. 2023, 19:21

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.

Mammouth du PHP | 2703 Messages

30 avr. 2023, 19:29

192.168.1.2:2011/afficherien.php
quelle est l'url correcte du fichier afficherien.php ?

Eléphanteau du PHP | 29 Messages

30 avr. 2023, 22:35

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"

Avatar du membre
Mammouth du PHP | 1564 Messages

01 mai 2023, 04:51

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é.

Eléphanteau du PHP | 29 Messages

01 mai 2023, 15:17

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.