Problème fonction prepend et fopen

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème fonction prepend et fopen

Problème fonction prepend et fopen

par Invité » 20 déc. 2007, 16:57

Bonjour,

J'ai demandé à un un amis de m'écrire un script permettant d'afficher une pub sur toutes les pages affichés par un serveur.
On passe par une fonction prepend. C'était un défis que je lui ai posé, et apparament, j'ai gagne le défis puisqu'il sèche :)

Cette fonction prepend chargé par php va venir prendre l'url absolue du fichier pour l'ouvrir en local via la fonction fopen et y insérer le tag html en sortie. Ca fonctionne mieux que les obstart. Le problème est que phpBB et autres forums ou CMS n'apprécie pas trop cette mannip au niveau des fonctions header.

En effet, voici le code actuel :
        // temp se présente sous la forme : /home/loginftp/www/...

        $temp = explode('/', $_SERVER['SCRIPT_FILENAME'], 4);
        $loginFtp = $temp[2];
        $url = 'http://localhost';
        $url .= (substr($_SERVER['SERVER_NAME'],-14, 14) == 'freeheberg.com')?'':'/~'.$loginFtp;
        $url .= $_SERVER['REQUEST_URI'];
        if($stream = fopen($url, 'r')){
            $content = stream_get_contents($stream);

            // la fonction de recherche du body est très simple, on la complètera plus tard :)

            if(stripos($content, '<body>') !== false)
                echo str_replace('<body>', '<body><script type="text/javascript" src="http://www.freeheberg.com/ejs_slidein.js"></script>', $content);
            else
               echo $content.'<script type="text/javascript" src="http://www.freeheberg.com/ejs_slidein.js"></script>';
            fclose($stream);
            die();
Par exemple, sur ce site : www.mission-president.info
Si vous cliquez sur le bouton "connexion" du formulaire d'identification à gauche, le navigateur renvoit l'url : http://localhost/~missionp/signup.php

Le problème est donc là, l'url absolue est incomplète.

Le script effectue un substr car il y a plusieurs adresses possible. Les adresses du type www.domaine.info, les adresses du type site.freeheberg.com et les adresses du type http://nsX.freeheberg.com/~user/

Bref, là je mouline à mort, et j'ai besoin de votre aide si vous le voullez bien :) On voit pas trop comment régler le binz :)