Je rencontre un problème extrêmement bizarre.
J'ai une page en index.php (en php7) qui exécute un certain nombre de script de mise à jour et lorsque il termine ses instructions je fais un "header location" pour le rediriger vers une autres pages qui va faire une connexion SSH2 qui a pour seul but de redémarrer la session du client qui se situe sur un autres serveur distant.
Je ne rencontre aucun problème sur les scripts UPDATE ou INSERT.
De ce côté tous ce passe bien.
Une fois que toutes les instructions sont traitées, je fais donc un "header location en PHP" pour me diriger vers le fichier index2.php pour lancer la connexion SSH2 sur le serveur distant. (index2.php est sur le même serveur que index.php)
########################
header('Location:index2.php?redirect=ok&mac_pc='.$mac_pc.'&ip_ant='.$ip_ant.'&ssid_ant='.$ssid_ant.'&orig_url='.$orig_url.'');
La redirection se fait d'un point de vue machine.
C'est à dire que les scripts contenue sur la page index2.php sont bien traités (mon script SSH2 se connecte bien sur le serveur distant et fait bien sont travail immédiatement) dans la seconde, mais d'un point de vue "humain" la page index.php reste figée à l'écran pendant bien 1 minute avant de passer enfin au visuel de la page index2.php
Maintenant si je fais par exemple un header location vers un index3.php mais que sur le fichier index3.php, je ne mettent pas une connexion SSH2, alors la redirection "header location" fonctionne parfaitement est immédiatement.
Si je commente le script SSH2 sur index2.php ou si je lui passe une variable erronée le "HEADER LOCATION" fonctionne parfaitement également.
Mon script SSH2 qui va se connecter sur le serveur distant, fonctionne parfaitement, mais il fige le visuel du client (IE, FIRFOX, CHROME, SAFARI,etc) quand le "HEADER LOCATION" de index.php appel index2.php
##################################
$connecssh = ssh2_connect($ip_ant, $port_device);
ssh2_auth_password($connecssh, $log_device, $pass_device);
$cmdssh="no wireless client $mac_pc";
$stream = ssh2_exec($connecssh, $cmdssh);
fclose($stream);
Je précise que le client est derrière une AUTHENTIFICATON RADIUS, mais toutes ces URL sont dans la WHITE LIST mais que de toutes façons tous fonctionne sauf le fait que la page index.php ne fait pas son refresh vers index2.php correctement mais avec bien 1 minute de retard et visuellement uniquement, car les script de index2.php sont bel et bien traité de suite !!!!
J'ai également fait des essais en regroupant sur index.php les instruction de index2.php
Mais j'ai toujours besoins de faire un "HEADER LOCATION" vers une page indiquant au client qu'il peut reprendre son activité.
(PORTAIL CAPTIF)
Le plus étonnant est que le script SSH2 est sur la page index2.php et que j'ai essayé avec des "sleep(5)" pour retarder son execution est laisser le temps à la page index2.php de se s'afficher, mais rien à faire.
Il est très facile de reproduire mon problème.
- Deux fichiers.
index.php avec un header location vers index2.php
ma connexion ssh2 sur index2.php et du script HTML pour afficher une info au client.
Je précise que index.php n'a pas de code HTML, c'est une page de transition avant d'afficher index2.php qui fait son SSH2 et affiche l'info au client.
Cordialement
Francesco