Redirection si serveur Alive | [26-08-2001] |
Posté par Ju
Ce petit scrip sans prétention aucune me sert à drainer les visiteurs d'un de mes sites hébergé par Free vers ma machine sous ADSL. Mais ne voulant perdre aucun visiteur, et vu que ma connexion n'est pas aussi fiable que celle de Proxad, j'ai crée ce petit script qui vérifie avant redirection que le serveur cible est 'vivant'.
Je n'ai jamais développé en PHP, il y a sûrement plus élégant ou plus propre, mais ça marche !
<META HTTP-EQUIV="expires" CONTENT="1">
<? $fp = fsockopen ("IP_DE_VOTRE_SERVEUR", 80, $errno, $errstr, 30); if (!$fp) echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL =index.html'>"; else echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL = http://VOTRE_SITE_WEB'>"; ?> |
|
|
Décomposer une adresse IP | [22-08-2001] |
Posté par Denis
Tout le monde connait la fonction parse_url() pour décomposer une url.
Mais si l'on veut faire de même pour une adresse IP obtenue à partir du $REMOTE_ADDR, ou tout simplement à partir de son numéro, il n'y a pas de fonction directe (du moins à ma connaissance) pour effectuer cette opération de décomposition.
Voici un petit script qui permet cela et ainsi de résoudre environ 90% des IP.
<? $no_ip = "195.6.160.242"; // détection de l'hôte $hote = gethostbyaddr($no_ip);
// transformation de l'hôte en serveur web $split = split(".", $hote); $nb_split = count($split); $domaine = $nb_split-2; // demande longeur pour vérifier si domaine est > 2 lettres pour éviter // les extensions du type .fr.st ou .tm.fr $long = strlen($split[$domaine]);
if ($long < 3) { $domaine = $nb_split-3; $ext1 = $nb_split-2; $ext2 = $nb_split-1; $url = "www.".$split[$domaine].".".$split[$ext1].".".$split[$ext2]; $url = "[<a href='http://$url' target='_blank'>$url</a>]"; if ($split[$ext2] > 0) { $url ="[NA]"; } } else { $ext = $nb_split-1; $url = "www.".$split[$domaine].".".$split[$ext]; $url = "[<a href='http://$url' target='_blank'>$url</a>]"; if ($split[$ext] > 0) { $url ="[NA]"; } }
print "no_ip = $no_ip<br>"; print "url = $url<br>"; print "hôte = $hote<br>";
?> |
|
Et on obtient avec cet exemple :
no_ip = 195.6.160.242 url = [www.wanadoo.fr] hôte = ca-ol-avignon-5-242.abo.wanadoo.fr
|
[1 commentaire]
|
Authentification simple | [06-05-2001] |
Posté par Raven
Un exemple de script d'authentification :
<? function auth($PHP_SELF) { header( "WWW-authenticate: basic realm='Admin'"); header( "HTTP/1.0 401 Unauthorized"); echo " <blockquote> Pour entrer dans cette section du site vous devez etre un usager authorise </blockquote>"; exit; }
// Il est possible d'aller chercher le username et le password dans une BD
if (!isset($PHP_AUTH_USER) || $PHP_AUTH_USER != "user" || $PHP_AUTH_PW != "pass") { auth($PHP_SELF); } else { /*mettre le traitement ici*/ } ?> |
|
|
[2 commentaires]
|
Forcer le téléchargement d'un fichier | [14-11-2000] |
Posté par SeB
Si vous souhaitez forcer le téléchargement d'un fichier dans une page web au lieu de laisser le navigateur choisir s'il doit l'afficher directement (pour un fichier texte par exemple) vous pouvez utiliser la fonction header comme suit :
<? // en-têtes header("Content-Type: octet-stream"); header("Content-Length: ".filesize ($langfile) ); header("Content-Disposition: attachment; filename=$langfile"); include($langfile); ?> |
|
|
[5 commentaires]
|
Vous aimez les gateaux ? | [10-11-2000] |
Un exemple de script pour savoir si le client accepte les cookies :
<? if ($action != "test") { setcookie("MonCookie", "toto"); header("Location: ".$REQUEST_URI."?action=test"); exit; } else if ($MonCookie == "toto") { echo "J'adore les cookies !"; } else { echo "Beurk, pas bon !"; } ?> |
|
|
[2 commentaires]
|
Construire une requête POST | [27-09-2000] |
Posté par Perrich
Ce script permet d'envoyer une requête POST à une page mais ne fait rien de plus. C'est à dire qu'il ne connait pas le resultat de la requete et que l'autre page n'est pas affichée.
<? // Les données envoyées en POST sous forme d'url $data = 'txt1='.urlencode($txt1).'&txt2='.urlencode($txt2).'&id='.$id_session;
// monfichier.php3 est l'URL du fichier devant recevoir la requete POST $message = "POST /monfichier.php3 HTTP/1.0\r\n"; $message .= "Content-type: application/x-www-form-urlencoded\r\n"; $message .= "Content-length: ".strlen( $data )."\r\n"; $message .= "\r\n"; $message .= $data."\r\n";
// monserveur correspond au serveur qui doit recevoir la requete $fd = fsockopen( "monserveur", 80 ); fputs($fd,$message); fclose($fd); ?> |
|
|
Rediriger proprement | [14-09-2000] |
Posté par Jérôme
Le problème souvent rencontré lors d'une redirection générée par php, par exemple avec une url extraite de mysql, est que les arguments nécessaires au script restent dans la barre d'adresse du navigateur...
Alors pour éviter la lecture d'une adresse barbare telle que index.php?a=redirection&id=458318, précisez à votre script de redirection ce header complet :
<? // redirection header("Request-URI: $url"); header("Content-Location: $url"); header("Location: $url"); ?> |
|
|
Lien valide ? | [01-08-2000] |
Posté par Idban Secandri
Voici un petit code PHP qui vous permet de vérifier qu'un lien est valide avant de l'afficher sur votre page. Attention, ce script peut rendre l'affichage de vos pages très long si celles-ci contiennent de nombreux liens !
<? $site = "www.phpinfo.net";
$actif = fsockopen($site, 80, &$errno, &$errstr, 30);
if (!$actif) { echo "<B>".$site." <FONT COLOR=\"red\">down !</FONT></B>n"; } else { echo "<A HREF=\"http://".$site."\">".$site."</A>n"; } ?> |
|
|
Envoyer autre chose que du HTML | [21-05-2000] |
On peut envoyer à un navigateur des données autres que du HTML en utilisant la fonction header() :
Exemples :
<? // Envoyer du texte brut header("Content-type: text/plain", 1); echo "<B>Cette phrase n'apparaîtra pas en gras</B>"; ?> |
|
<? // Provoquer une erreur du type 'Fichier non trouvé' header("http/1.0 404 Not Found"); ?> |
|
<? // Redirection header("Location: http://www.phpinfo.net/"); ?> |
|
On peut aussi de cette manière envoyer des images (gif, jpeg, png, ...).
|