Liburl / curl / copie de site.

Contenu du snippet

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 / Exemple :


<?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>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.