[RESOLU] header ne fonctionne pas !!!

Eléphant du PHP | 345 Messages

15 sept. 2024, 14:29

Bonjour,
J'ai un script php de mise à jour qui tourne en tache cron chez mon hébergeur à une heure définie.
A la fin, il y a un header qui est censé rediriger vers une page html ("confirmation des sauvegardes").
La sauvegarde s'execute bien mais pas le header.
<?php
script de sauvegardes.
bla bla bla....................
bla bla bla....................
?>
header('Location:www.civilizaworld.eu/save_14_serveur_end.html');
exit;
?>
Pourquoi ce header ne fonctionne pas????

Mammouth du PHP | 2703 Messages

15 sept. 2024, 17:12

pas de http dans l'adresse, peut-être du texte écrit avant.
mais surtout, si c'est lancé par un cron, à quoi cela sert ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 sept. 2024, 12:32

En complément des 2 remarques pertinentes d'or1,
header() étant une fonction PHP c'est curieux que tu aies une balise fermante ?> avant ton header()
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 345 Messages

18 sept. 2024, 20:56

<?php
session_start();
require_once 'config_sauvegardes.php';
$sql = "UPDATE membres SET jeton = '/images/jeton_vert.gif', info='', PA=PA+7 ";
$pdostat = $bdd->prepare($sql);
$pdostat->execute();
bla bla bla
bla bla bla
etc etc etc
header('Location:save_14_serveur_end.html');
exit;
?>
la balise fermante était une erreur de transcription !
Il n'y a aucun texte html avant le header, seulement des update.
Cette redirection est prévue pour alerter et prévenir l'utilisateur que la sauvegarde a été exécutée...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

20 sept. 2024, 10:40

Si c'est une tâche cron, elle est exécutée automatiquement par ton serveur donc il n'y a rien qui s'affiche.
Que fait donc ta page "save_14_serveur_end.html" tu as du code PHP qui s'exécute dedans (mais avec une extension de page .html c'est possible mais rare) ?
Et du coup si c'est un code PHP qui envoie un mail aux utilisateurs pourquoi faire une redirection plutôt qu'un include/require ?


A noter que si ton cron utilise Curl pour executer ton script, par défaut Curl ne suit pas les redirections donc ça peut être la raison de ton souci.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 345 Messages

21 sept. 2024, 15:19

"Curl" est bien présent sur les serveurs de mon hébergeur...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

23 sept. 2024, 10:18

"Curl" est bien présent sur les serveurs de mon hébergeur...
Oui mais c'est surtout les autres questions qui sont intéressantes pour tenter de résoudre ton souci :-D
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 345 Messages

24 sept. 2024, 01:01

Les updates de sauvegarde sont exécutées par la tache CRON et à la fin, je voudrais que cela ouvre la page "save_14_serveur_end.html" (qui prévient le joueur qui est en ligne que les sauvegardes sont Ok). Cette page ne contient que du HTML. Dans l'absolu, c'est surement pas vital mais cela me tient à coeur :oops:
Un include ou un require pourrait il remplacer le header?

Mammouth du PHP | 2703 Messages

24 sept. 2024, 01:48

cela ne va en rien avertir le joueur. ce n'est pas le navigateur du joueur qui appelle le script, c'est le cron.

pour prévenir le joueur, il faut que le script appelé par le cron mettre à jour une variable, et que le navigateur du joueur appelle par ajax toutes les X secondes un script php qui va tester si la variable a été mise à jour, si c'est le cas, le script php renvoit quelque chose à l'ajax, et du javascript va informer le joueur qu'il y a eu une mise à jour.

voir le dernier exemple de https://api.jquery.com/jQuery.get/

Eléphant du PHP | 345 Messages

27 sept. 2024, 01:16

Trop ardu pour moi Ajax et Javascript....
J'ai finalement bidouillé ce petit bout de script:
$heure = date('H:i:s');
$heure_start = '11:30:06';
$heure_end = '11:30:10';
if($heure >$heure_start && $heure <$heure_end)
{
	header('Location:save_14_serveur_end.html');
	exit;
}
"save14_serveur_end.html" se lance ainsi juste après ma tache Cron.