begin process at 2012 05 27 19:04:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > LIBURL / CURL / COPIE DE SITE.

LIBURL / CURL / COPIE DE SITE.


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :curl, copie, liburl, aspirer Niveau :Débutant Date de création :25/02/2011 Date de mise à jour :28/02/2011 10:23:14 Vu :2 391

Auteur : frunkp

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Il est nécessaire d'installer les librairies adéquates.

Le concept est la copie d'un site,
La lib permet de copier le site en question dans un fichier texte.
Ce fichier texte est ensuite interprété tout en ajoutant l'url du site en tant que baseurl.

Navré pour la tronche du code, j'ai fait ça en mangeant :D

N'hésite pas à critiquer !

N.

Source

  • <?php
  • # permet la gestion des erreurs pendant le Dev
  • ini_set("error_repoting",NULL);
  • ini_set('display_errors', 0);
  • ini_set('register_globals',0);
  • ini_set("magic_quotes_gpc" , 0);
  • # attribution du chemin absolu du fichier texte
  • define(FILE,'buffer.txt');
  • define(PATH,'/var/www/');
  • # cette fonction permet d'une part de parser l'url du site demandé et retourner le
  • # baseurl (afin de permet à tout les fichiers d'aller être chercher ou il faut.
  • function baseUrl($url){
  • $theUrl = parse_url($url);
  • $ret = "http://";
  • foreach ($theUrl as $k=>$v){
  • if ($k == "host")
  • $ret .= $v;
  • }
  • return "<BASE href=\"".$ret."/\"/>";
  • }
  • # effacer le fichier s'il existe puis le recréer, afin qu'il soit tjrs vide.
  • if (file_exists(PATH.FILE))
  • unlink(PATH.FILE);
  • touch(PATH.FILE);
  • $url = $_POST['url'];
  • if (isset($url) && !empty($url)){
  • # ouverture du fichier et écriture via la lib
  • $ch = curl_init($url);
  • $fp = fopen(FILE, "w");
  • curl_setopt($ch, CURLOPT_FILE, $fp);
  • curl_setopt($ch, CURLOPT_HEADER, 0);
  • curl_exec($ch);
  • curl_close($ch);
  • fclose($fp);
  • # interpretation du fichier et écriture du base url juste apres le <head>
  • $handle = @fopen(PATH.FILE, "r+");
  • if ($handle) {
  • while (($buffer = fgets($handle, 4096)) !== false) {
  • if (strtolower(rtrim($buffer)) == "<head>")
  • echo $buffer.baseUrl($url);
  • else
  • echo $buffer;
  • }
  • if (!feof($handle))
  • echo "Erreur: fgets() a &#8730;©chou&#8730;©\n";
  • fclose($handle);
  • }
  • }
  • ?>
  • <form method='post'>
  • <input type='text' name='url'/>
  • <input type='submit'/>
  • </form>
<?php
# permet la gestion des erreurs pendant le Dev
ini_set("error_repoting",NULL);
ini_set('display_errors', 0);
ini_set('register_globals',0); 
ini_set("magic_quotes_gpc" , 0);

# attribution du chemin absolu du fichier texte
define(FILE,'buffer.txt');
define(PATH,'/var/www/');

# cette fonction permet d'une part de parser l'url du site demandé et retourner le
# baseurl (afin de permet à tout les fichiers d'aller être chercher ou il faut.
function baseUrl($url){
	$theUrl = parse_url($url);
	$ret = "http://";
	foreach ($theUrl as $k=>$v){
		if ($k == "host")
    		$ret .= $v;
  }
  return "<BASE href=\"".$ret."/\"/>";
}

# effacer le fichier s'il existe puis le recréer, afin qu'il soit tjrs vide.
if (file_exists(PATH.FILE))
  unlink(PATH.FILE);
touch(PATH.FILE);

$url = $_POST['url'];


if (isset($url) && !empty($url)){
	# ouverture du fichier et écriture via la lib 
	$ch = curl_init($url);
	$fp = fopen(FILE, "w");
	
	curl_setopt($ch, CURLOPT_FILE, $fp);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_exec($ch);
	curl_close($ch);
	
	fclose($fp);

	# interpretation du fichier et écriture du base url juste apres le <head>
	$handle = @fopen(PATH.FILE, "r+");
	if ($handle) {
    	while (($buffer = fgets($handle, 4096)) !== false) {
			if (strtolower(rtrim($buffer)) == "<head>")
				echo $buffer.baseUrl($url);
      		else
				echo $buffer;
    	}
		if (!feof($handle))
			echo "Erreur: fgets() a &#8730;©chou&#8730;©\n";
		fclose($handle);
	}
}
?>

<form method='post'>
  <input type='text' name='url'/>
  <input type='submit'/>
</form>



 Historique

28 février 2011 10:23:14 :
Commentaire du texte

 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000

 Sources en rapport avec celle ci

VÉRIFICATION DES URL VALIDE AVEC PHP par dilar
Source avec Zip EXÉCUTER UN SCRIPT PHP EN TANT QUE SERVICE WINDOW par ig3
FONCTION GET EN PHP : RECUPERER UNE PAGE SUR UN SITE DISTANT par nax333
Source avec Zip TRANSFORMER UN TABLEAU PHP EN TABLEAU JAVASCRIPT par J_G
COPIE RAPIDE EN FXP par trasher

Commentaires et avis

Commentaire de phpAnonyme le 26/02/2011 03:50:17 7/10

lut,

Le code a peut être une sale tronche, sous-entendu qu'il est réduit au strict minimum, mais ça le fait ! Après l'utilité me semble douteuse :D

Commentaire de hornetbzz le 28/02/2011 08:52:05

5 petites remarques
0) heu stocker dans un txt, ça fait "moche", tu aurais pu appeler ça "site_foo.html" :-)
1) ça manque un peu de commentaires tout ça, à faire avant le dessert,
2) tipo à revoir : ini_set("error_repoting",NULL); (et il faut avoir accès au php.ini, pas possible sur certains mutualisés me semble-t-il)
3) as-tu essayé la limite de 4096 avec des sites avec de grosses images ? (je pense au fgets($handle, 4096) )
4) en bash, tu peux faire la même chose en 1 ligne  :-), se pose alors la question, quelle est l'utilité de le faire en php ?

et un commentaire:
ça ressemble à une incitation à la débauche de pomper des sites, indigne d'un codeur, sans compter qu'avec cette technique, tu pompes une "image" d'un site à un instant "t" vu que tous les sites sont dynamiques (php/python/perl etc..). Il faudrait donc p-ê mieux positionner le contexte d'utilisation.

Commentaire de frunkp le 28/02/2011 09:04:39

Afin d'éclaircir quelques points, je travaille dans la publicité et il est souvent demandé de tester des tags(de pubs) sur des sites.
Au lieu de scrapbooker le site, cela allège le travail.

0/ Oui :)
1) Je mettrai des commentaires d'ici peu si tu le souhaite :)
2) S'pas faux mais c'est pas dérangeant. Ca evite de toucher au php.ini)
3) non j'ai pas essayé sur des sites contenant d'énormes images (je n'y trouve pas trop d'intérêt)
4) avec wget ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Créer un fichier TXT [ par DEL ] j'aimerai savoir comment créer un fichier txt :/ ca peut paraitre simple mais j'ai pas trouvé mon bonheur sur php.net :/mon script ressemble a ca :if Copie de fichier [ par BirD ] Hello, j'ai un ptit prob pour copier une image, je m'explique: j'arrive parfaitement à copier l'image, mais dans le même dossier, ou un sous dossier, Copie de fichier [ par ceeno ] Bonjour,Je me suis fait un uploader de fichiers en php, il fonctionne correctement sauf lorsque le nom de fichier a envoyer comporte un ' (exemple : t Copie de fichiers distants [ par ChocoBiscuit ] Bonjour tt le mondeTout d'abord, je sais k'il y a bocoup de topics de ce type, mais je n'ai pas trouvé mon cas (trop de fichiers.... arf... fainéant k problème copie avec fonction mail [ par raoulking ] BonjourJ'utilise la fonction mail qui ne me pose pas de problèmes, sous windows, avec un easyphp et un serveur de mail en local.Par contre, si je veux problème avec imap_append [ par raoulman ] Bonjour, Je suis en train de développer un webmail et j'ai un souci avec imap_append. Je m'en sers pour faire une copie du mail envoyé et mettre la co Copie dans un fichier txt à partir d'un autre fichier .txt [ par radyonne ] Bonjour,voila !je voudrais savoir comment faire un script un peu spécial !voila il me faudra un script possible de copier ce que contient un fichier t copie des fichiers avec les sous repertoire sur disque local [ par angelx ] je voudrai copier les fichier d'un repertoire +sous repetoire vers un autre dossier local 'ex c:\temp ver c:\test'et si possible j'aimerais qu'il ne Copie fichier [ par loyousse ] Salut. J'ai une petite question. Je voudrais savoir comment faire pour copier un fichier sur un poste de travail d'un r&#233;pertoire &#224; un autre copie de donnée sql [ par Alpha911 ] j'ai une base avec comme table PREVALID contenant ident, nom, prenom, compteftpj'ai une autre table COMPTE contenant id, repertoire et je voudrais que


Nos sponsors


Sondage...

Comparez les prix

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,343 sec (4)

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