Redirection automatique

Eléphanteau du PHP | 16 Messages

06 avr. 2006, 10:26

Bonjour,
j'aimerais faire un truc sympas mais ma metrise en php et hellas pas assez eleve...
je dispose d'un serveur personnel ( mon pc ) avec apache2 et php5 sous xp pro...
je dispose aussi d'un espace serveur reserve de mon FAI...
ce que je voudrais faire....
faire un index.php sur l'espace reserve de mon FAI afin que les visiteurs se connecte sur http://monFAI.fr .... le code que j'aimerais dans index.php devrais dire cela :
redirection automatique vers http://monadresseip ( donc mon pc )...
mais si http://monadresseip ( mon pc ) n'est pas connecte, redirection vers escuse.php ( ou html )(sur l'espace reserve du FAI ) qui dira pardon mais le serveur n'est pas connecte...
j'espere que ce n'est pas compliqué et que quelqu'un pourras m'aider....
merci d'avance

Mammouth du PHP | 768 Messages

06 avr. 2006, 11:15

M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphanteau du PHP | 16 Messages

06 avr. 2006, 11:46

merci...donc j'ai compris que c'etait sur cette page que cela se passe....ah oui, ais je presice que je n'etais pas tres doue en php....
comment dois je organiser mon script pour qu'il sois operationnel ? car je ne vois pas comment l'ecrire ( mon script )
merci d'avance

Mammouth du PHP | 768 Messages

06 avr. 2006, 11:58

te donner une solution toute faite ne t'aidera pas à comprendre :x
la fonction fsockopen te permet de tester un lien.

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);

* www.example.com c'est l'adresse à tester (http://ton_adresse_ip)
* 80 c'est le port (80 en général)
Si erreur il y a:
* $errno retourne un numéro d'erreur
* $errstr retourne un message d'erreur

* 30 c'est le nombre de seconde à attendre une réponse

$fp renverra TRUE (vrai) si ton site est disponible
dans ce cas là, tu utilises la fonction header() pour rediriger le visiteur
sinon tu affiches un message d'indisponibilité.
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphanteau du PHP | 16 Messages

06 avr. 2006, 12:38

ok..alors, si je fait..

Code : Tout sélectionner

<?php @session_start(); $_SESSION['test_sessions'] = 'ok'; $fp = fsockopen("http://monip", 80, $errno, $errstr, 30); if $ft = true header("http://monip") if $ft = false header("./escuse.htlm") exit ?>
c'est ca ?

Mammouth du PHP | 768 Messages

06 avr. 2006, 12:42

<?php 
if ($fp = fsockopen("http://monip", 80, $errno, $errstr, 30)){
   // TON HEADER ICI  MONIP
   exit();
}
else
{
   // TON HEADER ICI EXCUSE
   exit();
}
?> 

as tu lu la doc header() ?
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphanteau du PHP | 16 Messages

06 avr. 2006, 12:59

j'ai lu la doc en survolle....
bon voila j'ai relu plus attentivement....donc pour ma redirection j'utilise l'exemple n°4

Code : Tout sélectionner

<?php if ($fp = fsockopen("http://monip", 80, $errno, $errstr, 30)){ header("Location: http://monip") exit(); } else { header("Location: http://monfai.fr/escuse.html") exit(); } ?>
j'espere avoir bon cette fois ci....
par contre..la ou je n'ai pas compris c'est,
est ce que je dois imperativement utiliser "$_SERVER['HTTP_HOST'] " ainsi que " . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') "
et enfin" . "/" . $relative_url); " " car si j'ai bien compris ce n'est pas necessaire ( mais la j'ai un doute ) *...

Mammouth du PHP | 768 Messages

06 avr. 2006, 13:02

<?php 
$home_ok = 'http://monip'; // adresse de chez toi
$home_ko = 'http://monfai.fr/escuse.html'; // adresse sur ton F.A.I

if ( $fp = fsockopen($home_ok, 80, $errno, $errstr, 30) ){
   header("Location: ".$home_ok); // redirection
   exit(); 
} 
else 
{ 
   header("Location: ".$home_ko); // redirection
   exit(); 
} 
?>
avec ça , ça devrait suffir :D
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphanteau du PHP | 16 Messages

06 avr. 2006, 13:27

je te remercie de tes explications et de m'avoir fait bosser un peu ( cela ne peu que m'aider lol) et je vais les mettres en oeuvre dans l'apres midi......

Eléphanteau du PHP | 16 Messages

08 avr. 2006, 16:49

bon, voila j'ai eu le temp de m'en occuper et....cela ne fonctionne pas, ni quand mon serveur et actif et encore moin quand il est inactif....j'ai fait quelques recherche, et j'ai trouve ca

Code : Tout sélectionner

<?php $server = 'http://monip:80'; define('TIMEOUT', 30); $tab = parse_url($server); $tab['port'] = isset($tab['port']) ? $tab['port'] : 80; if(false !== ($fp = fsockopen($tab['host'], $tab['port'], $errno, $errstr, TIMEOUT))) { fclose($fp); header('Location: ' . $server); } else { die('Erreur #' . $errno . ' : ' . $errstr); } ?>
ca fonctionne mais je n'ai pas de redirection quand mon serveur est inactif....si quelqu'un a une idee ?
merci d'avance

Eléphant du PHP | 101 Messages

08 avr. 2006, 17:57

bon, voila j'ai eu le temp de m'en occuper et....cela ne fonctionne pas, ni quand mon serveur et actif et encore moin quand il est inactif....j'ai fait quelques recherche, et j'ai trouve ca

Code : Tout sélectionner

<?php $server = 'http://monip:80'; define('TIMEOUT', 30); $tab = parse_url($server); $tab['port'] = isset($tab['port']) ? $tab['port'] : 80; if(false !== ($fp = fsockopen($tab['host'], $tab['port'], $errno, $errstr, TIMEOUT))) { fclose($fp); header('Location: ' . $server); } else { die('Erreur #' . $errno . ' : ' . $errstr); } ?>
ca fonctionne mais je n'ai pas de redirection quand mon serveur est inactif....si quelqu'un a une idee ?
merci d'avance
y a un truc bizare au niveau de !== tu es sur de ta syntaxe !!!
Voir mes projets sur mon BLOG

Eléphanteau du PHP | 16 Messages

08 avr. 2006, 18:11

cette derniere fonctionne ( je l'ai trouvé sur un site ) donc je pense que !== c'est bien...elle me renvoie bien sur mon serveur perso, mais ce qu'il manque c'est la redirection sur une page d'escuse quand mon serveur est eteint ou mon pc redemarre ou autre....et la...je suis perdu !

Eléphanteau du PHP | 16 Messages

08 avr. 2006, 18:13

ah oui, a la place de "die...etc", j'ai remplacer la ligne par " header ("location : http://monfai/escuse.html").....et la plus rien ne fonctionne !

Eléphanteau du PHP | 16 Messages

08 avr. 2006, 19:38

j'ai modifie le script comme ca

Code : Tout sélectionner

<?php $server = 'http://monip:80'; define('TIMEOUT', 5); $tab = parse_url($server); $tab['port'] = isset($tab['port']) ? $tab['port'] : 80; if(false != ($fp = fsockopen($tab['host'], $tab['port'], $errno, $errstr, TIMEOUT))) { fclose($fp); header('Location: ' . $server); } else { header("location : http://monfai/escuse.html/") } ?>
mon serveur perso allume => ok
mon serveur perso eteint=>voir ci dessous

Code : Tout sélectionner

Warning: fsockopen(): unable to connect to monip:80 in /var/www/free.fr/9/e/fai/index.php on line 10 Erreur #110 : Connection timed out
...si cela peut aider....quoi que je fasse en modif l'erreur 110 est toujours la !

Eléphanteau du PHP | 16 Messages

09 avr. 2006, 09:58

non..personne !?!?
moi je pense de plus en plus au suicide !!!
c'est que personne ne m'aime ou que le probleme est trop chiant ?