begin process at 2012 05 31 18:28:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Tester si une url est redirigée par un header langage php


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tester si une url est redirigée par un header langage php

mercredi 17 novembre 2010 à 08:29:27 | Tester si une url est redirigée par un header langage php

ccpu

Bonjour,

Tout d'abord je souhaite m'excuser si le thème choisi n'est pas le bon.

Je vous explique mon problème qui est résumé dans le titre :

Pour faire simple, je dois ajouter un lien vers un autre site uniquement si l'équivalent existe. Il s'agit d'une traduction.

Donc par exemple si j'ai un lien http://monsite.com/blabla je dois tester si http://monsitetraduit.com/blabla existe sauf que si cette page n'existe pas elle est redirigée via header à l'index http://monsitetraduit.com/. Donc je ne sais pas si il existe une fonction ou autre permettant de savoir si la page va être redirigée ou non.

Si je n'ai pas été assez clair, je peux ré-expliquer.

En espérant avoir des réponses de votre part, je vous remercie d'avance.
mercredi 17 novembre 2010 à 10:45:30 | Re : Tester si une url est redirigée par un header langage php

cod57

Bonjour

Pour tester le site et son url ainsi que la redirection pas de problème,
Mais la traduction automatique c'est un peu plus compliqué si c'est aussi
souhaité ...

mercredi 17 novembre 2010 à 14:37:27 | Re : Tester si une url est redirigée par un header langage php

ccpu

Merci pour ta réponse rapide.

Je voudrais tester si l'adresse va être redirigée ou non en fait.. Je pensais faire passer une variable dans le header un peu comme un booléen mais je ne vois pas trop comment je pourrais faire :/.
La traduction est déjà correctement gérée.
mercredi 17 novembre 2010 à 15:40:42 | Re : Tester si une url est redirigée par un header langage php

cod57

Un truc vite bricolé et des liens pour une piste
faudra adapter

Code PHP :

<?php
/*
http://www.gamerz.be/programmation-php-/t-php-tester-url-215751.html
http://www.phpsources.org/scripts92-PHP.htm
http://perishablepress.com/press/2006/12/18/automatic-language-translation-methods/
http://www.comscripts.com/scripts/php.babelfish-translator.2039.html
*/

/* article d'origine de la fonction
http://www.pckult.net/index.php?Itemid=7&id=806&option=com_content&task=view
test que le http port 80 pas de ftp,https ...
*/

function test_url($url){
    $url = @parse_url($url);

    if (!$url)
    {
        return false;
    }

    $url = array_map('trim', $url);
    $url['port'] = (!isset($url['port'])) ? 80 : (int)$url['port'];
    $path = (isset($url['path'])) ? $url['path'] : '';

    if ($path == '')
    {
        $path = '/';
    }

    $path .= (isset($url['query'])) ? "?$url[query]" : '';

    if (isset($url['host']) AND $url['host'] != gethostbyname($url['host']))
    {
        if (PHP_VERSION >= 5)
        {
            $headers = get_headers("$url[scheme]://$url[host]:$url[port]$path");
        }
        else
        {
            $fp = @fsockopen($url['host'], $url['port'], $errno, $errstr, 30);

            if (!$fp)
            {
                return false;
            }
            fputs($fp, "HEAD $path HTTP/1.1\r\nHost: $url[host]\r\n\r\n");
            $headers = fread($fp, 4096);
            fclose($fp);
        }
        $headers = (is_array($headers)) ? implode("\n", $headers) : $headers;
        return (bool)preg_match('#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers);
    }
    return false;
}



if(isset($_POST['url_test']) && !empty($_POST['url_test']) &&  $_POST['submit_bt']=="Tester" ){
$url='http://'.$_POST['url_test'];

    if (test_url($url)) {
    
    echo $url.' est valide !<br />';
    echo '<a href="javascript:history.back();">Recommencer un test</a>';
    
    /* choisir un type de redirection
    
    /* immediat
    header( 'Location:'.$url);
    */
    
    
    /* attendre 3 secondes
    header( 'refresh: 3; url='.$url);
    echo '<h1>Bonne viste attendre 3 secondes...</h1>';
    */
    
    /*
    header( 'refresh: 0; url='.$url);
    echo '<h1>Bonne viste !</h1>';
    */
    
    /* attendre 2 secondes
    echo '<meta http-equiv="refresh" content="2;url='.$url.'">';
    */
    
    } else {
    
    echo 'Url inconnue !<br />';
    echo '<a href="javascript:history.back();">Recommencer un test</a>';
   
    }

} else {

echo '


<form action="" method="post">
http://<input type="text" name="url_test" size="100">
<input type="submit" name="submit_bt" value="Tester">
</form>

';

}
?>
mercredi 17 novembre 2010 à 20:06:22 | Re : Tester si une url est redirigée par un header langage php

kohntark

Membre Club
Salut,

Je ne comprends pas :
http://monsite.com/blabla
http://monsitetraduit.com/blabla

Puisque les deux sites t'appartiennent tu dois bien savoir si la page existe, non ?
Ceux sont des pages trop dynamiques peut être ? Autre chose ?

Si il ne s'agit que de rediriger vers l'index de la racine du site traduit un simple htaccess devrait suffire.


Cordialement,



Kohntark -
jeudi 18 novembre 2010 à 08:36:53 | Re : Tester si une url est redirigée par un header langage php

ccpu

Merci cod57, je regarderais ça en détails et je te tiendrais au courant.


Oui je suis chargé des deux sites, et je sais également quelles pages n'existent pas mais comme toutes ces pages sont générées dynamiquement, je ne peux pas les traiter au cas par cas, il faut que je teste.

Il ne s'agit de rediriger, les htaccess sont déjà au point. En fait il faut vérifier si l'adresse va être redirigée ou non ( car j'ai un header qui s'occupe de ça si la page n'existe pas..)

jeudi 18 novembre 2010 à 18:58:17 | Re : Tester si une url est redirigée par un header langage php

kohntark

Membre Club

car j'ai un header qui s'occupe de ça si la page n'existe pas..


Désolé mais je ne comprends toujours pas.
Si je reprends ce que tu disais :

par exemple si j'ai un lien http://monsite.com/blabla je dois tester si http://monsitetraduit.com/blabla existe sauf que si cette page n'existe pas elle est redirigée via header à l'index http://monsitetraduit.com/



En quoi un htaccess sur le site monsitetraduit.com, qui redirigerait toutes les pages introuvables vers sa racine, ne conviendrait pas ???

Menfin je comprends sans doute de travers, et peut être cherches tu à afficher ce lien uniquement si il est valide.

Le code gentiment recopié par Cod57 est à mon avis bien trop lourd et ne réponds sans doute pas à ta problématique puisque ne tenant pas compte des redirections (j'ai lu en diagonale, je dis peut être une connerie, ... comme toujours en fait )

Un truc simple dans le genre devrait fonctionner, à condition que allow_url_fopen soit activé (sinon il faut peut être voir du côté des sockets):

Code PHP :
$url = 'http://monsitetraduit.com/blabla';

$rContext = stream_context_create(array(
                    'http' => array(
                        'timeout' => 1,
                        'max_redirects' => 1
                    )
                )
);

if(false === @fopen($url, 'r', null, $rContext)) {
    // la page existe
} else {
    // la page n'existe pas
}


Bon, sans dire que ce soit du bricolage je trouve dommage que tu ne mettes pas à profit le fait que tu ais la main sur les 2 sites. Tu y gagnerai sans doute en performance, mais tout ça dépends grandement du contexte (nb de fois où sont testées les pages, fréquence des mises à jour des traductions et comment elles sont effectuées, etc ... etc ...)

Cordialement,

Kohntark -


Cette discussion est classée dans : tester, http, existe, header, redirigée


Répondre à ce message

Sujets en rapport avec ce message

Header Location [ par BirD ] Hello, dans mon site, j'utilise la fonction header, le code se présente comme suit:$page=2 //exempleheader('location:http://www.monsite.com/mapage.php tester l'url de la page affichée [ par pierrot_D ] après uen bonne journée de recherche infrutueuse ;(je pose ma question ici :il y a t il une fontion qui permette de récuprer l'url de la page affichée Tester si une variable existe [ par ICIoBRa ] Salut a tous :)J'aimerai savoir comment faire pour tester si une variable existe merci :)ICIoBRa [astuce] tester un lien, pour savoir s'il est mort [ par franco_se ] salutVoila, j'ai une petite fonction qui traine depuis qlq temps ds mes scripts. Elle permet de tester tout simplement si un lien est mort ou non.Mais header et les fonctions [ par rich25200 ] bonjour,je veux utiliser header avec une fonction..je fais ainsi :header ("Location: ".detect_language("index.php")."");detect_language est une foncti Tester pour voir si un fonction existe sur le serveur ... [ par simbabarbier ] Bonjour, j'aimerais savoir s'il était possible de savoir si une fonction existe sur mon hébergement ... Pouvez-vous m'aider ??? Header Sous http://www.radioblogclub.com [ par Toutoul ] bonjour, je suis en train de créer un programme php pour radioblogclub... Mon problème viens actuellement du fait que je doit retrouver l'url qui sera Tester lien [ par wbr ] Bonjour, j'ai besoin d'un script pour tester si un lien http est valide ou pas. Ex. Je tape http://phpcs.com dans une champ de texte et ilme retourne Incompréhension sur les Headers [ par jdaviaud ] Bonjour à tous,Pour un des sites de mon entreprise, j'ai voulu le passer une fois terminé dans la moulinette W3C ( http://validator.w3.org/ ) qui m'a Tester si un fichier local existe [ par converse ] Bonjour à tous,Dans le cadre d'un site intranet j'aimerais protéger l'accès aux pages de l'intranet en testant si un fichier existe sur un des disques


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,218 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales