Ajouter un smileys a une page via Poxy

Petit nouveau ! | 9 Messages

22 nov. 2011, 14:30

Bonjour.

Je souhaite que sur une page web (qui n'est pas forcement héberger sur mon serveur) qui contient par exemple :
:smiley:
le mot :smiley: soit remplacer par une image comme par exemple : :D

J'ai essayer de coder ca moi meme, en fessant quelque chose du genre :
/index.php?url=http://site.com/
$adresse = $_GET[url];
$page = file_get_contents ($adresse); // récupérer le contenu de la page
$page = preg_replace('#:smiley:#', '<img src=http://forum.phpfrance.com/images/smilies/icon_biggrin.gif>', $page);
echo $page ; // afficher la page
Ca marchait mais on ne pouvait pas naviguer sur le site ou ce connecter dessus. J'aurais pu essayer de le faire mais je ne m'y connais pas assez en php.

Donc j'ai essayer en utilisant un proxy http !
J'ai donc essayer d'insérer cette ligne de code quelque part dans le code source de poxy
$PHProxy = preg_replace('#:smiley:#', '<img src=http://forum.phpfrance.com/images/smilies/icon_biggrin.gif>', $PHProxy);
Mais sans succès, vous avez une idée de comment faire ?
Merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 nov. 2011, 06:17

Salut,

Je vois l'intérêt d'un proxy et surtout ton code utilise simplement une expression régulière pour un remplacement ....

Par contre pour faire e que tu veux utilise une frame ou une iframe tu gardera la navigation !


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

23 nov. 2011, 10:47

Ah et il serait possible de modifier le contenu d'une iframe pour remplacer :smiley: par une image ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 nov. 2011, 11:07

non, la va falloir aller plus loin et parser le code fournis comme tu le fait déja mais en modifiant les urls pour qu'elle aillent sur ton site afin que tu puisse récupérer la page voulue.

genre remplacer les a href="http:lesite.com/pagetruc.php" par a href="tonsiteatoi.com?pagesuivante=http:lesite.com/pagetruc.php"
tu récupère $_GET['pagesuivante'] pour récupére la page et la parser.


Par contre je m'interroge sur la "légalité" et la moralité de la chose.

si le second ne t'appartient pas demander l'autorisation de l'auteur et dans un tel cas il est surement possible d'avoir une version qui te serais plus utile et utilisable :)


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

23 nov. 2011, 11:16

non, la va falloir aller plus loin et parser le code fournis comme tu le fait déja mais en modifiant les urls pour qu'elle aillent sur ton site afin que tu puisse récupérer la page voulue.

genre remplacer les a href="http:lesite.com/pagetruc.php" par a href="tonsiteatoi.com?pagesuivante=http:lesite.com/pagetruc.php"
tu récupère $_GET['pagesuivante'] pour récupére la page et la parser.
Oui j'ai essayer de faire ca mais le problème c'est que après on ne peux plus se loguer sur le site en questions.
C'est pour avecc que je pense que le mieux est de passer par un proxy comme poxy.
En gros via ce proxy en allant sur n'importe que site (voir meme ce forum), si il y a ecrit :smiley: ce sera remplacer pas une image !
Ce qui permettrais par exemple d'ajouter des smileys a n'importe quel forum ou page web.
Par contre je m'interroge sur la "légalité" et la moralité de la chose.
Si cela est illégal alors des add-on comme add-block l'est aussi ! (sachant que c'est même intégré sur certain navigateur)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 nov. 2011, 09:30

j'ai demandé à google de l'info sur add-block, je suis tombé sur add-block plus
Adblock Plus allows you to regain control of the internet and view the web the way you want to. The add-on is supported by over forty filter subscriptions in dozens of languages which automatically configure it for purposes ranging from removing online advertising to blocking all known malware domains. Adblock Plus also allows you to customize your filters with the assistance of a variety of useful features, including a context option for images, a block tab for Flash and Java objects, and a list of blockable items to remove scripts and stylesheets.
ce qui d'après google se traduit en
Adblock Plus vous permet de reprendre le contrôle de l'Internet et afficher le web comme vous le souhaitez. L'add-on est soutenu par plus de quarante abonnements de filtre dans des dizaines de langues dont le configurer automatiquement à des fins allant de la suppression de la publicité en ligne pour bloquer tous les domaines logiciels malveillants connus. Adblock Plus vous permet également de personnaliser vos filtres avec l'aide d'une variété de fonctionnalités utiles, incluant une option de contexte pour les images, un onglet bloc pour Flash et des objets Java, et une liste d'éléments blocable pour enlever les scripts et les feuilles de style.
Bref pas de copie de site ou d'utilisation par des tiers, juste un blocage des pubs :)


Donc, dans tous les cas, soit tu simule les liens à partir de ton site (a grand coup de preg_match dans le contenus pour la modif des liens et des smileys), soit une iframe mais pas de smileys.


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

25 nov. 2011, 11:05

Bref pas de copie de site ou d'utilisation par des tiers, juste un blocage des pubs :)


Donc, dans tous les cas, soit tu simule les liens à partir de ton site (a grand coup de preg_match dans le contenus pour la modif des liens et des smileys), soit une iframe mais pas de smileys.


@+
Le but n'est pas de copier mais juste de modifier un élément d'une page :|

Voila le code de poxy :
<?php

require 'PHProxy.class.php';

$config = array
(
    'url_var_name'             => 'q',
    'flags_var_name'           => 'hl',
    'get_form_name'            => '__script_get_form',
    'proxy_url_form_name'      => 'poxy_url_form',
    'proxy_settings_form_name' => 'poxy_settings_form',
    'max_file_size'            => -1
);

$flags = 'prev';

if (isset($_GET[$config['flags_var_name']]))
{
    $flags = $_GET[$config['flags_var_name']];
}

$PHProxy = & new PHProxy($config, $flags);

if (isset($_GET[$PHProxy->config['get_form_name']]))
{
    $url = decode_url($_GET[$PHProxy->config['get_form_name']]);
    $qstr = preg_match('#\?#', $url) ? (strpos($url, '?') === strlen($url) ? '' : '&') : '?';
    $arr = explode('&', $_SERVER['QUERY_STRING']);
    if (preg_match('#^'.$PHProxy->config['get_form_name'].'#', $arr[0]))
    {
        array_shift($arr);
    }
    $url .= $qstr . implode('&', $arr);
    $PHProxy->start_transfer(encode_url($url));
	$PHProxy = preg_replace('#:troll:#', '<img src=http://www.free-community.in/upload/1/852ecedb736422e656e6a1c53a4406d2.png>', $PHProxy);
    echo $PHProxy->return_response();
    exit();
}

if (isset($_GET[$PHProxy->config['url_var_name']]))
{
    $PHProxy->start_transfer($_GET[$PHProxy->config['url_var_name']]);
    echo $PHProxy->return_response();
    exit();
}

if (isset($_GET['action'], $_GET['delete']) && $_GET['action'] == 'cookies')
{
    $PHProxy->delete_cookies($_GET['delete']);
    header("Location: $PHProxy->script_url?action=cookies");
    exit();
}

if (isset($_POST['username'], $_POST['password'], $_POST['server'], $_POST['realm'], $_POST['auth_url']))
{
    $PHProxy->request_method = 'GET';
    $PHProxy->url_segments['host'] = decode_url($_POST['server']);
    $PHProxy->set_authorization($_POST['username'], $_POST['password']);
    $PHProxy->start_transfer($_POST['auth_url']);
    echo $PHProxy->return_response();
    exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
  <title>PHProxy</title>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <link rel="stylesheet" type="text/css" href="style.css" media="all" />
  <script src="javascript.js" type="text/javascript"></script>
</head>
<body>
<div id="container">
  <div id="menu">
    <a href="<?php echo $_SERVER['PHP_SELF'] ?>">URL Form</a> | 
    <a href="?action=cookies">Manage Cookies</a>
  </div>
  <div class="title">PHProxy</div>
  <noscript><div class="error"><big>You have Javascript disabled. Please enable it to use the proxy</big></div></noscript>
<?php

if (isset($_GET['error']))
{
    echo '<div class="error"><b>Error:</b> ' . htmlspecialchars($_GET['error']) . '</div>';
    if (isset($_GET['retry']))
    {
        echo '<div class="error"><a href="'. $PHProxy->proxify_url(decode_url($_GET['retry'])) .'">Retry</a></div>';
    } 
}

if (isset($_GET['action']))
{
    if ($_GET['action'] == 'cookies')
    {
        $cookies = $PHProxy->get_cookies('COOKIE', false);

        if (!empty($cookies))
        {
            echo '<table style="width: 100%">';
            echo '<tr><td class="option" colspan="5"><a href="?action=cookies&delete=all">Clear All Cookies</a></td></tr>';
            echo '<tr><td class="head">Name</td><td class="head">Domain</td><td class="head">Path</td><td class="head">Value</td><td class="head">Action</td></tr>';

            for ($i = 0; $i < count($cookies); $i++)
            {
                $j = $i&1 ? ' class="shade"' : '';
                echo "<tr><td$j>{$cookies[$i][0]}</td><td$j>{$cookies[$i][1]}</td><td$j>{$cookies[$i][2]}</td>"
                   . "<td$j>" . wordwrap($cookies[$i][3], 15, ' ') ."</td><td$j><a href=". '"?action=cookies&delete='. md5(implode('', $cookies[$i])) . '">delete</a></td></tr>';
            }

            echo '</table>';
        }
        else
        {
            echo '<div class="error">No cookies available.</div>';
        }
    }
    else if ($_GET['action'] == 'auth' && isset($_GET['server'], $_GET['realm'], $_GET['auth_url']))
    {
        echo '<form method="post" action="' . $_SERVER['PHP_SELF'] . '">';
        echo '<input type="hidden" name="server" value="'. $_GET['server'] .'" />';
        echo '<input type="hidden" name="realm" value="'. $_GET['realm'] .'" />';
        echo '<input type="hidden" name="auth_url" value="'. $_GET['auth_url'] .'" />';
        echo '<table style="width: 100%">';
        echo '<tr><td colspan="2" class="option">Enter user name and password for <b>' . decode_url($_GET['realm']) . '</b> at <i>' . decode_url($_GET['server']) . '</i></td></tr>';
        echo '<tr><td width="30%" class="option">User name</td><td class="option"><input type="text" name="username" value="" /></td></tr>';
        echo '<tr><td width="30%" class="option">Password</td><td class="option"><input type="password" name="password" value="" /></td></tr>';
        echo '<tr><td colspan="2" style="text-align: center"><input type="submit" value="OK" /></td></tr>';
        echo '</table>';
        echo '</form>';
    }
} 
else
{
  ?>
  <form name="<?php echo $PHProxy->config['proxy_url_form_name'] ?>" method="get" action="<?php echo $_SERVER['PHP_SELF'] ?>">
  <input type="hidden" name="<?php echo $PHProxy->config['url_var_name'] ?>" value="" id="url_input" />
  <input type="hidden" name="<?php echo $PHProxy->config['flags_var_name'] ?>" value="" />
  </form>
  <form name="<?php echo $PHProxy->config['proxy_settings_form_name'] ?>" method="get" action="" onsubmit="return submit_form();">
  <table style="width: 100%">
  <tr><td class="option" style="width: 20%">URL</td><td class="option" style="width: 80%">&nbsp;<input type="text" name="url" size="70" value="" /></td></tr>
  <?php echo $PHProxy->options_list(true, true) ?>
  <tr><td class="option" style="width: 20%">New Window</td><td class="option" style="width: 80%"><input type="checkbox" name="new_window" />Open URL in a new window </td></tr>
  </table>
  <div style="text-align: center"><input type="submit" name="browse" value="Browse" onclick="return submit_form();" /></div>
  <div style="text-align: center">PHProxy <?php echo $PHProxy->version ?> &copy; 2005 <a href="http://www.whitefyre.com/">whiteFyre</a>
</div>
  </form>
  <?php
}

echo '</div></body></html>';
?>
Je cherche ou il faudrait mettre une ligne du genre :
$PHProxy = preg_replace('#:smiley:#', '<img src=http://forum.phpfrance.com/images/smilies/icon_biggrin.gif>', $PHProxy);

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 nov. 2011, 12:19

$PHProxy) est une instance de classe donc
$PHProxy->start_transfer(encode_url($url));
         $PHProxy = preg_replace('#:troll:#', '<img src=http://www.free-community.in/upload/1/852ecedb736422e656e6a1c53a4406d2.png>', $PHProxy);
     echo $PHProxy->return_response();
- utilise la classe
- écrase l'instance de classe par le retour du preg_replace sur $PHProxy qui (si elle n'a pas de méthode __tostring()) ne devrait pas retourner grand chose.
- Appel la méthode return_response() d'une instance de classe qui n'existe pas.

le return_response() doit certainement te fournir le contenu que tu souhaite et c'est sur ce contenu qu'il faut faire la modif pour les smileys.

quand au reste, si le site t'appartient je pige pas tous ce merdier, après c'est un emploi qui, normalement nécessite l'accord de l'auteur.
Après tu fait ce que tu veux, ceci dit t'est au courant :mrgreen:

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

25 nov. 2011, 19:45

Ah mince je voulais poster le code source sans modification mais j'ai oublier d'enlever cette ligne.
Enfin bref c'est ce que j'avais essayer de faire mais ca ne marche pas.

J'ai un niveau très basique en php, je n'ai pas appris les instances de classes.
Comment modifier le contenu de return_response(); (pour ensuite l'afficher) ?

La méthode du preg_replace je m'en était servis pour ajouter des smileys a un tchat en php que j'avais fait une fois, c'est pour ca que j'ai tenter de faire pareil ici mais ca ne marche pas donc ?