Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1165 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Faire croire à une include qu'elle est sur son propre serveur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire croire à une include qu'elle est sur son propre serveur

n°1496725
pouzy
Ne signe pas d'autographes..
Posté le 28-12-2006 à 17:12:44  profilanswer
 

Coucou à tous :)  
 
J'ai includé une page, et les liens de cette page sont faits comme ceci : <a href="/page.php">  
 
Donc, comme l'include se croît dans mon site, elle met : www.monsite.com/page.php
Alors que je voudrais mettre : www.siteinclude.com/page.php !  
 
Alors j'ai testé ceci :  
 

Code :
  1. $_SERVER['SERVER_NAME'] = 'www.monsite.com';

 
 
Au cas où, mais ça ne fonctionne pas...  
 
Une idée ? :)  
 
Merci,  
 
Pouzy


---------------
Hello hello super jello
mood
Publicité
Posté le 28-12-2006 à 17:12:44  profilanswer
 

n°1496732
afbilou
pouet your life
Posté le 28-12-2006 à 17:21:32  profilanswer
 

C'est le navigateur qui resout les liens relatifs comme cela et non l'include qui fait quoi que ce soit.
 
Ton include est tres mal venu dans ton cas : la page que tu demandes d'inclure va etre traitée par le serveur distant puis la page HTML générée sera envoyée a ton script. A final ton script ne voit qu'une page HTML que tu lui demandes de parser (fonction include) a la recherche de code PHP. Il est plus judicieux dans ton cas d'utiliser readfile qui a la difference d'include ne cherche pas a interpreter le code PHP qui pourrait se trouver dans une page.
 
Pour résoudre ton probleme tu vas devoir recuperer le code HTML de la page (file_get_content) puis effectuer un traitement sur les liens relatifs présent dans le document pour y concatener 'www.siteinclude.com/' avant. Tu peux t'orienter vers les expressions regulieres pour faire ce travail : preg_replace par exemple. Peut-etre sais-tu te servir des expressions regulieres ... dans le cas contraire tu viendras poser tes questions complementaires.

n°1496771
pouzy
Ne signe pas d'autographes..
Posté le 28-12-2006 à 18:43:36  profilanswer
 

En gros, ( je pense plutôt utiliser readfile, non ? ) readfile renvoie tout simplement le code HTML de la page ? à moi de tronquer où je veux ?  
 
Les expressions régulières je n'y ai touché que pour le BBCode, je reviendrai sans doute poser quelques questions.  
 
Donc impossible de changer le site dans une include ? :(
 
EDIT :  
 
Bon le readfile fonctionne, par contre je suis dans le flou pour les expressions régulières. En gros faut que je fasse une recherche sur tous les href=" et que je les remplace par href="http://site.com ?


Message édité par pouzy le 28-12-2006 à 18:46:53

---------------
Hello hello super jello
n°1496789
pouzy
Ne signe pas d'autographes..
Posté le 28-12-2006 à 19:18:47  profilanswer
 

En fait il y a encore une chose que je ne saisis pas : Le readfile ça ne retourne pas juste le code, ça affiche tout aussi, alors comment utiliser mes expressions régulières la dedans ?  
 
Je viens de tester, mais ça ne fonctionne pas : La page en question
 
Voici ce que j'ai testé :  
 

Code :
  1. str_replace ('href="','href="http://www.google.com"',readfile ($suite));


 
Avec dans $suite l'url de la page :/
Nada, les urls restent fausses :/ ( j'ai essayé un peu dans tous les sens le str_replace )


---------------
Hello hello super jello
n°1496801
KangOl
Profil : pointeur
Posté le 28-12-2006 à 19:58:41  profilanswer
 
n°1496865
afbilou
pouet your life
Posté le 28-12-2006 à 22:55:47  profilanswer
 

Ho non ! pas bien ca :/

 

Sinon comme dit plus haut pour recuperer le contenu de la page distante et le traiter utilise file_get_content()

 

Le code magique dont tu auras besoin :

Code :
  1. $texte = file_get_contents('http://lesite.com/lapageinclude.html');
  2. $texte = preg_replace('#\b(href|src)="(?!http://)(.*)"#Ui','$1="http://lesite.com/$2"', $texte);
  3. echo $texte;


L'expression réguliere remplace les occurence de src="xxx" et de href="xxx" contenant des liens relatifs par src="http://lesite.com/xxx" href="http://lesite.com/xxx"


Message édité par afbilou le 28-12-2006 à 22:57:28
n°1497131
pouzy
Ne signe pas d'autographes..
Posté le 29-12-2006 à 15:33:05  profilanswer
 

Bon, ça progresse, ça progresse :) Je n'aurais jamais trouvé une expression régulière de ce type tout seul, alors merci beauco afbilou :) !
 
Me manque encore deux trois choses, par exemple quand on change de page, ça renvoie sur google mais ça c'est pas bien grave, mais aussi quand on fait une nouvelle recherche directement dans le formulaire qui est dans l'include ça fait une belle 404 :(


---------------
Hello hello super jello
n°1497172
sielfried
Posté le 29-12-2006 à 17:00:51  profilanswer
 

Ça renvoie sur Google ? Comment ça ?
 
Pour les formulaures, tu peux sûrement remplacer (href|src) par (href|src|action).
 
Sinon, je pense que rajouter l'option 's' à la regexp ne ferait pas de mal.

n°1497336
pouzy
Ne signe pas d'autographes..
Posté le 30-12-2006 à 16:26:20  profilanswer
 

CQuel est l'effet de l'option s ?
Et pour ce qui est de mon formulaire , j'ai une autre petite demande :  
 
Comment faire pour tronquer un texte à partir d'un certain mot ?  
 
Par exemple, si je veux enlever le style qu'il y a avant, il faudrait que je coupe jusqu'à </style> et que je n'affiche que ce qui vient après...  
J'ai tenté un substr mais bon, en fait le problème c'est que le nombre de caractère dépend de la recherche...


---------------
Hello hello super jello
n°1497337
Master p
My new cock ring :D
Posté le 30-12-2006 à 16:37:34  profilanswer
 

Vu tes compétences, utilise une frame ou penche toi sur le manuel regex


---------------
HAHAHA I M USING TEH INTERNET
mood
Publicité
Posté le 30-12-2006 à 16:37:34  profilanswer
 

n°1497352
sielfried
Posté le 30-12-2006 à 17:17:58  profilanswer
 

pouzy a écrit :

CQuel est l'effet de l'option s ?


 
http://fr.php.net/manual/fr/refere [...] ifiers.php
 

Citation :


Et pour ce qui est de mon formulaire , j'ai une autre petite demande :  
 
Comment faire pour tronquer un texte à partir d'un certain mot ?  
 
Par exemple, si je veux enlever le style qu'il y a avant, il faudrait que je coupe jusqu'à </style> et que je n'affiche que ce qui vient après...  
J'ai tenté un substr mais bon, en fait le problème c'est que le nombre de caractère dépend de la recherche...


 
Faudrait que tu donnes un exemple, c'est pas super clair comme ça. [:figti]

n°1497368
pouzy
Ne signe pas d'autographes..
Posté le 30-12-2006 à 18:10:35  profilanswer
 

Merci pour le lien sielfried. :)
 
Pour l'exemple, on va faire simple.  
 
Si j'ai :
 

Code :
  1. <title><?=$mot?> - pouet</title>
  2. <style>.toctoc { color:white }
  3. .bipbip { margin-left:2px; }
  4. </style>
  5. <table><tr><td>Hihi</td></tr></table>


 
Et que je veux prendre seulement ce qu'il y a à partir du <table>, sachant que $mot peut varier, contenir des espaces etc ?  
J'ai fait des strlen pour essayer de compter, c'est à peu près potable ce que ça rend mais ça me casse tout mon design, il doit y avoir des tables qui partent à la trappe, et puis quand il y a des espaces dans le mot ça ne fonctionne pas toujours. Vous pouvez voir le résultat sur www.aidoforum.com/rechercher.php
 
Merci :)


---------------
Hello hello super jello
n°1497704
sielfried
Posté le 01-01-2007 à 19:04:40  profilanswer
 

Je suis pas sûr de comprendre ce que tu essaies de faire après être passé voir l'url que tu as donnée, ceci dit pour ce genre de manips effectivement les regexp c'est très bien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Faire croire à une include qu'elle est sur son propre serveur

 

Sujets relatifs
Problème d'include en php 5 (marche en php 4)Probleme de code pour vérifier le statut d'un serveur
Importer fichier vers serveurDialoguer avec le shell d'un serveur en ssh
serveur/clientServeur pour surveillance de processus
Operation serveur sur BDDInclure un forum PHPBB avec include()
Serveur de chat en mode texteProbleme serveur sql
Plus de sujets relatifs à : Faire croire à une include qu'elle est sur son propre serveur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR