Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

executer un script php et recharger la page

6 réponses
Avatar
Hugolino
Salut,

J'ai besoin qu'un lien (fabriqué par un include('script_A.php') d'une
page html exécute un autre script php (appelons-le 'script_B.php) puis
qu'il recharge la page qui contenait le lien.
Comment faire ça en PHP seulement ?

S'il faut un bout de javascript, merci d'être assez didactique, je n'y
connais rien.

Merci à vous


--
Concours de bit entre linuxiens : hcgvzr
Hugo (né il y a 1 371 842 820 secondes)

6 réponses

Avatar
Carbo
Hugolino wrote:
Salut,

J'ai besoin qu'un lien (fabriqué par un include('script_A.php') d'une
page html exécute un autre script php (appelons-le 'script_B.php) puis
qu'il recharge la page qui contenait le lien.
Comment faire ça en PHP seulement ?

S'il faut un bout de javascript, merci d'être assez didactique, je n'y
connais rien.

Merci à vous






il faut une redirection à la fin de script_B.php vers la page concernée:
voir les fonctions header("Localisation: url_de_la_page");
attention, ceci implique que le serveur n'a rien envoyé précédemment.
pour cela, la balise <?php *doit* être la première chose rencontrée sur
script_B.php (aucun caractère avant!)

--
<http://uon.be/blog/>
Avatar
Olivier Miakinen
Le 15/10/2007 10:33, Carbo a écrit :

J'ai besoin qu'un lien (fabriqué par un include('script_A.php') d'une
page html exécute un autre script php (appelons-le 'script_B.php) puis
qu'il recharge la page qui contenait le lien.
Comment faire ça en PHP seulement ?



il faut une redirection à la fin de script_B.php vers la page concernée:
voir les fonctions header("Localisation: url_de_la_page");



C'est une possibilité. Attention, le nom de l'entête est « Location » et
il faut que l'URL soit absolue ("http://serveur/chemin/page") et non
relative ("./page").

attention, ceci implique que le serveur n'a rien envoyé précédemment.
pour cela, la balise <?php *doit* être la première chose rencontrée sur
script_B.php (aucun caractère avant!)



Oui. Il faut aussi, si la page est en UTF-8, qu'elle soit enregistrée
sans « BOM ».

Mais si script_B.php n'affiche rien (ce qui est obligatoire pour que le
header() fonctionne), tu peux très bien te contenter d'inclure script_A,
le principal inconvénient (si c'en est un) étant que l'URL est celle de
script_B. Inversement, si script_B affiche des choses, tu peux mettre un
élément META dans les entêtes pour déclencher une redirection au bout de
X secondes.
Avatar
Olivier Miakinen
Le 15/10/2007 12:00, je répondais à Carbo :

[...] tu peux [...]



Bien entendu, ces derniers conseils s'adressaient non pas à Carbo, mais
à l'auteur initial, Hugolino.
Avatar
Hugolino
Le Mon, 15 Oct 2007 10:33:27 +0200, Carbo a écrit:
Hugolino wrote:
> Salut,
>
> J'ai besoin qu'un lien (fabriqué par un include('script_A.php') d'une
> page html exécute un autre script php (appelons-le 'script_B.php) puis
> qu'il recharge la page qui contenait le lien.
> Comment faire ça en PHP seulement ?

il faut une redirection à la fin de script_B.php vers la page concernée:
voir les fonctions header("Localisation: url_de_la_page");



J'ai pataugé pendant une heure, car j'avais une erreur avec
http_redirect() et google n'a pas été copain avec moi:

Si je clique sur le lien fabriqué par script_A et affiché par
l'index.php du dossier /moto (index.php que je voudrais voir recharger),
ma commande_bash_pour_tester est bien exécutée, mais une page d'erreur
est affichée:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
+++http://deb/moto/+++
Fatal error: Call to undefined function http_redirect() in
/var/www/some_path/script_B.php on line 5
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Pourquoi cette erreur ? un problème de config php ?

attention, ceci implique que le serveur n'a rien envoyé précédemment.
pour cela, la balise <?php *doit* être la première chose rencontrée sur
script_B.php (aucun caractère avant!)



Quand j'ai essayé header("Location: $Page_Origine");, j'ai compris ce
que tu voulais dire, car j'ai un beau "warning: Cannot modify header
information" - headers already sent by...
J'avais bêtement laissé un echo de debug dans la sortie de mon script_B.


Merci de ton aide.

--
A woman, without her man, is nothing.
A woman: without her, man is nothing.
Hugo (né il y a 1 371 855 712 secondes)
Avatar
Olivier Miakinen
Le 15/10/2007 14:05, Hugolino a écrit :

8<-----------8<---------8<----------8<----------8<----------8<----------8<
+++http://deb/moto/+++
Fatal error: Call to undefined function http_redirect() in
/var/www/some_path/script_B.php on line 5
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Pourquoi cette erreur ? un problème de config php ?



Un problème de version de PHP ?

<cit. http://fr.php.net/manual/fr/ref.http.php>
La classe HttpResponse nécessite au moins PHP 5.1. Toutes les autres
classes sont disponibles depuis PHP 5.0.
</cit.>

Note que tes questions seraient plus en charte dans fr.comp.lang.php.
Avatar
Hugolino
Le Mon, 15 Oct 2007 15:53:25 +0200, Olivier Miakinen a écrit:
Le 15/10/2007 14:05, Hugolino a écrit :
>
> 8<-----------8<---------8<----------8<----------8<----------8<----------8<
> +++http://deb/moto/+++
> Fatal error: Call to undefined function http_redirect() in
> /var/www/some_path/script_B.php on line 5
> 8<-----------8<---------8<----------8<----------8<----------8<----------8<
>
> Pourquoi cette erreur ? un problème de config php ?

Un problème de version de PHP ?



J'utilise PHP5 sur une Ubuntu Edgy Eft 6.10 avec apache2:

~ $ apt-cache policy php5
php5:
Installé : 5.1.6-1ubuntu2.6
Candidat : 5.1.6-1ubuntu2.6

~ $ php5 -v
PHP 5.1.6 (cli) (built: Jul 17 2007 17:52:03)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

~ $ apt-cache policy apache2
apache2:
Installé : 2.0.55-4ubuntu4.1
Candidat : 2.0.55-4ubuntu4.1

~ $ apache2 -v
Server version: Apache/2.0.55
Server built: Aug 16 2007 22:41:15

Plus d'info : <http://roulaize.fr/php-files/phpinfo.php>
Sur la machine Cassis sous Debian Etch qui répondra peut-être, les
versions utilisées sont encore plus récentes, mais l'erreur est la même.

<cit. http://fr.php.net/manual/fr/ref.http.php>
La classe HttpResponse nécessite au moins PHP 5.1. Toutes les autres
classes sont disponibles depuis PHP 5.0.
</cit.>

Note que tes questions seraient plus en charte dans fr.comp.lang.php.



Oui, mes excuses, j'ai d'ailleurs fouillé les archives du groupe, pas
très longtemps le mot même 'http_redirect()' est introuvable.

x-post et fu2 sur fclp

--
Pas de panique ! Stabiliser le proto-moulinotron trans-parabolique ne nous
empêche pas de micro-inverser le signal binaire ni même de néo-diminuer
l'extra-multiplexeur nucléo-adaptatif.
Hugo (né il y a 1 371 902 722 secondes)