Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Site Web > PHP > Vos Fonctions ou astuces > Lecture du sujet

Vos Fonctions ou astuces

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  ...  79  80  81  82  83  84  85  ...  93  94  95  96  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  79  80  81  82  83  84  85  ...  93  94  95  96  Suivante
Hors ligne TimeSplitters # Posté le 24/04/2008 à 12:54:52
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
oO Puissant!

Merci, je commençais à recoder ma fonction de parsage et je perdais courage. Super ta fonction!

Edit: cependant, c'est quoi <cles> ?
Édité le 24/04/2008 à 13:00:39 par TimeSplitters

Des développeurs par ci et des graphistes par là, sans oublier les recruteurs (porteurs de projets) ! | TimeSplitters Games :)
 
Hors ligne hinomi # Posté le 24/04/2008 à 13:21:40
Web developpeur
Groupe : Membres
les clés sont des valeur de parametres prédéfini tel quel bleu (blue), left (gauche).
par exemple:
<style couleur='bleu'>
comme bleu est une clé ayant pour valeur 'blue'
ca donne:
<font color='blue'>

Internet n'as pour limite que votre imagination. ^^ (et la limite du débit de votre modem :p )
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne iansus # Posté le 24/04/2008 à 14:39:15
J'adore la PHPilosophie !!!
Avatar
Groupe : Membres
Fonction pour tester si un tableau est entièrement ou partiellement vide :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
   function arrat_empty($array,$except=array())
   {
      $i = 0;
      foreach($array as $key => $value)
      {
         if(!in_array($key,$except))
         {
            $i++;
            if(!empty($value)) $j++;
         }
      }
      if($j == $i) return false;
      else return true;
   }

// EXEMPLE LORS DE LA RECEPTION DE $_POST :
// $_POST["pseudo"] = "iansus"
// $_POST["password"] = "lala"
// $_POST["mail"] = ""

$except = array();

if(array_empty($_POST,$except)) echo "1"; 
else echo "0";

// RENVOIE 1

$except = array("mail");

if(array_empty($_POST,$except)) echo "1"; 
else echo "0";

//RENVOIE 0

?>

Image utilisateur
 
Hors ligne shine-neko # Posté le 24/04/2008 à 17:37:39
Saite ita no wa My Rosy Heart
Avatar
Groupe : Membres
iansus => http://www.siteduzero.com/forum-83-173 [...] html#r2367586

Qui n'a jamais rêver d'apprendre a dessiner , Cuisiné japonnais dévorer de nouveaux manga fait par des copains et d'apprendre le japonais ?
=> La réponse se trouve ici
Image utilisateur

 
Hors ligne JaKhris # Posté le 24/04/2008 à 18:33:15
Wait & See
Avatar
Groupe : Membres
hinomi : Sympa mais vu que tu utilises les guillemets pour les instructions et les apostrophes pour les attributs, j'aime pas. :p (je suis un vrai maniaque à ce sujet, désolé ^^ )

Mes sites : JAKPRO ~ URPRO ~ page DeviantArt
XHTML, CSS, JS, PHP, MySQL, Graphics, Music & Video Games : This is living ! =D
 
Hors ligne hinomi # Posté le 24/04/2008 à 19:23:09
Web developpeur
Groupe : Membres
heu non pour les attributs on ne peut utiliser que les apostrophe...mais sinon je vois pas comment faire...si tu as une suggestion pour "encercler" les attributs je peut modifié mon code..

Internet n'as pour limite que votre imagination. ^^ (et la limite du débit de votre modem :p )
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne SRWieZ # Posté le 24/04/2008 à 20:30:13
Tout est possible!
Avatar
Groupe : Membres
hinomi, moi j'aime pas trop car j'aimerai avoir un site valide xhtml, et avec cette fonction je sais pas comment faire.

a moins que l'on peut l'utiliser de cette façon :
Code : XML
1
2
3
<balise nom="souligne">
	<nom>span class="souligne"</nom>
</balise>

car "<u>" n'est pas valide xhtml....

Bientôt Mon Portfolio
Je cherche un graphiste / Le site / Faites un petit don
Ma ville - Mon zoo - Mon animal
Suffit d'avoir de l'espoir pour réussir....

 
Hors ligne robocop # Posté le 24/04/2008 à 20:32:26
Avatar
Groupe : Membres
Citation : hinomi
heu non pour les attributs on ne peut utiliser que les apostrophe...mais sinon je vois pas comment faire...si tu as une suggestion pour "encercler" les attributs je peut modifié mon code..

Oué, avec DOM, tu peux récupérer les attributs.
 
Hors ligne hinomi # Posté le 24/04/2008 à 20:35:02
Web developpeur
Groupe : Membres
ouai mais dom coté attribut ca marche pas avec tous les hebergeur...par exemple 1 and 1 si tu vois ce que je veut dire :D

Internet n'as pour limite que votre imagination. ^^ (et la limite du débit de votre modem :p )
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne iansus # Posté le 24/04/2008 à 21:39:37
J'adore la PHPilosophie !!!
Avatar
Groupe : Membres
Citation : shine-neko

Je l'ai vu mais il ne prend pas en compte des exceptions, utiles lors d'un champ facultatif pour une inscription !

Image utilisateur
 
Hors ligne S0pra # Posté le 24/04/2008 à 22:24:53
Avatar
Groupe : Membres
Salut,
Bien que tu puisse faire autrement, voici une fonction dans le même style qui permet de gérer les exceptions.
Code : PHP
1
2
3
4
5
6
7
8
9
<?php
function is_array_empty($array, $except)
{
	
        foreach ($array as $value) {
            if(!empty($value) && !in_array($value, $except)) return false;
        }
}
?>
 
Hors ligne Jerry Wham # Posté le 25/04/2008 à 11:48:58
1castorMangé,1arbreSauvé
Avatar
Groupe : Membres
Citation : eserdu27
hinomi, moi j'aime pas trop car j'aimerai avoir un site valide xhtml, et avec cette fonction je sais pas comment faire.

a moins que l'on peut l'utiliser de cette façon :
Code : XML
1
2
3
<balise nom="souligne">
	<nom>span class="souligne"</nom>
</balise>

car "<u>" n'est pas valide xhtml....


J'ai peut-être une solution. Dites moi ce que vous en pensez, merci.

Dans le Mcode, tu remplaces
Code : PHP
1
2
3
4
5
6
7
8
9
<?php
//--------------------------//
	//Initialisation des clés//
	//--------------------------//
	preg_match_all("#<cle nom=\"(\w*)\">(\w*)</cle>#isU", $xml, $cle);
	for ($x = 0 ; $x < count($cle[1]) ; $x++) {
		$cles[$cle[1][$x]] = $cle[2][$x];
	}
?>

Par
Code : PHP
1
2
3
4
5
6
7
8
9
<?php
//--------------------------//
	//Initialisation des clés//
	//--------------------------//
	preg_match_all("#<cle nom=\"(\w*)\">(.*)</cle>#isU", $xml, $cle);
	for ($x = 0 ; $x < count($cle[1]) ; $x++) {
		$cles[$cle[1][$x]] = $cle[2][$x];
	}
?>


Et dans MCode.xml, tu mets
Code : XML
1
2
3
4
5
6
7
8
<balise nom="style">
	<nom>span</nom>
	<param nom="decoration">style</param>
</balise>

<cles>
	<cle nom="souligne">text-decoration:underline;</cle>
</cles>


Tu peux ainsi l'utiliser et c'est valide.
Par exemple :
Code : PHP
1
2
3
4
<?php 
require('MCode.php');
echo MCode("<style decoration='souligne'>Plouf</style>"); 
?>


Donne
Citation
Plouf


Et au niveau du xhtml :
Code : HTML
1
<span style="text-decoration:underline;">Plouf</span>
 
Hors ligne Lynix # Posté le 25/04/2008 à 18:35:34
Graphiste 3D
Avatar
Groupe : Membres
J'attends confirmation d'un "pro" avant d'utiliser ce code

Je sais qu'on peut l'optimiser avec les ' a la place des " déjà
 
Hors ligne SRWieZ # Posté le 25/04/2008 à 18:57:26
Tout est possible!
Avatar
Groupe : Membres
J'avoue que le Mcode au quel je penser ne se présenter pas de cette forme, mais bon de toute façon je vais d'abord essayer de faire le mien et si il y des points au quel je n'y arrive pas je m'aiderai de tes codes ^^

Bientôt Mon Portfolio
Je cherche un graphiste / Le site / Faites un petit don
Ma ville - Mon zoo - Mon animal
Suffit d'avoir de l'espoir pour réussir....

 
Hors ligne hinomi # Posté le 25/04/2008 à 19:25:45
Web developpeur
Groupe : Membres
J'ai testé en local, avec ajax, tout fonctionne parfaitement.
Et le conseil donné par Jerry Wham fonctionne aussi.
Après vous pouvez toujours optimiser ma fonction comme bon vous semble.

Internet n'as pour limite que votre imagination. ^^ (et la limite du débit de votre modem :p )
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne strucky # Posté le 25/04/2008 à 20:43:05
Je suis tombé par terre ...
Avatar
Modérateurs
Ta fonction est d'une lourdeur pas possible...

J'ai pas vraiment regardé en détail, mais à 1ère vue y'a des failles de sécurité, on ne met pas n'importe quoi dans les attributs d'une balise html.
 
Hors ligne Jerry Wham # Posté le 26/04/2008 à 00:39:17
1castorMangé,1arbreSauvé
Avatar
Groupe : Membres
Y a pas n'importe quoi. Il y a juste ce qui est mis dans le fichier xml (ou alors j'ai pas compris :-° )
 
Hors ligne Jeremie78 # Posté le 26/04/2008 à 01:46:18
Powered by GNU/Linux
Groupe : Membres
Le problème c'est que la valeur des attributs autorisés n'est pas vérifiée ;)

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne Tracker # Posté le 26/04/2008 à 10:02:48
Avatar
Groupe : Membres
En fait, où est le but de recréer un "langage" aussi imbuvable qu'(x)HTML avec comme simple objectif de ne faire que du (x)HTML ??


Tracker.
Édité le 26/04/2008 à 11:00:37 par Tracker

Un peu de lecture: PHP // MySQL // JavaScript // w3schools // SQL
 
Hors ligne hinomi # Posté le 26/04/2008 à 10:24:25
Web developpeur
Groupe : Membres
Citation : strucky
Ta fonction est d'une lourdeur pas possible...

J'ai pas vraiment regardé en détail, mais à 1ère vue y'a des failles de sécurité, on ne met pas n'importe quoi dans les attributs d'une balise html.


Bah désolé mais ça je peut rien y faire... Je vais pas faire en sorte que la fonction analyse toutes les possibilité d'attribut et exclure ce qui va pas. C'est aux utilisateur de voir quels attributs ils decident de rendre utilisable (car les attributs autorisés sont seulement ceux indiqué dans le fichier xml).

Donc a part si celui qui utilise cette fonction autorise les attributs telle que 'onclick' il n'y a aucun problême de sécurité.

tracker=> c'est la même utilité que le bbcode. Après le choix du fait que la syntaxe est identique à celle du html est strictement personnel.

Internet n'as pour limite que votre imagination. ^^ (et la limite du débit de votre modem :p )
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne strucky # Posté le 26/04/2008 à 10:52:49
Je suis tombé par terre ...
Avatar
Modérateurs
Si tu ne peux rien y faire ta fonction est à jeter direct.

Le problème ne se situe pas dans les attributs que l'on autorise mais dans les valeurs de ceux-ci...

Enfin de toute façon, le tout est à revoir.
 
Hors ligne Tracker # Posté le 26/04/2008 à 11:13:35
Avatar
Groupe : Membres
Citation : hinomi
tracker=> c'est la même utilité que le bbcode. Après le choix du fait que la syntaxe est identique à celle du html est strictement personnel.


Le but du bbcode est de mettre à dispo une syntaxe ultra pauvre pour formater basiquement un contenu. Sous-entendu l'utilisateur ne connait pas html et veut quand même faire un peu de mise en page...

Dans ton exemple, vu le merdier que l'utilisateur a à saisir pour faire le moindre truc, j'aurais tendance à dire: "autant qu'il apprenne html, ça lui servira toujours"...


Tracker.

Un peu de lecture: PHP // MySQL // JavaScript // w3schools // SQL
 
Hors ligne etaty # Posté le 26/04/2008 à 11:48:00
Avatar
Groupe : Membres
je sais pas si c'est connu ou pas (ou si c'est le bon topic)
mais free laisse à la base de ses serveurs pour les pages persos des fichiers phpinfo()
exemple : http://perso155-g5.free.fr/
Édité le 26/04/2008 à 11:49:39 par etaty
Hors ligne Artefact2 # Posté le 26/04/2008 à 13:10:20
C'est toi le bouc !
Avatar
Groupe : Membres
Citation : strucky
Si tu ne peux rien y faire ta fonction est à jeter direct.

Le problème ne se situe pas dans les attributs que l'on autorise mais dans les valeurs de ceux-ci...

Enfin de toute façon, le tout est à revoir.


J'avais aussi pensé à autoriser le xHTML pour la mise en forme, à la place du BBcode. Résultat : j'ai abandonné car c'était trop lourd à mettre en oeuvre (et certainement beaucoup trop laxiste face aux failles).

Image utilisateur
Mes tutoriels : Bien utiliser les fonctions de hachage / La 2D en C# / Utilisez les bases de données dans vos programmes C#

"Imaginez un monde ou chacun est libre de s'exprimer à tout sujet..."
Venez tous sur Freenet 0.7 ! Comment ? Pourquoi ?
 
Hors ligne robocop # Posté le 26/04/2008 à 13:13:27
Avatar
Groupe : Membres
Et puis faire apprendre le html à ses visiteurs...
C'est inconcevable en production !
 
Hors ligne Artefact2 # Posté le 26/04/2008 à 13:16:47
C'est toi le bouc !
Avatar
Groupe : Membres
Citation : robocop
Et puis faire apprendre le html à ses visiteurs...
C'est inconcevable en production !


Je ne suis pas tout à fait d'accord.

Sur un site comme celui-ci, la majorité des utilisateurs connaissent le xHTML (tout du moins la mise en forme basique). Plus généralement, quelle est la différence entre <strong> et [b] ?

Deuxièmement, avec une bonne interface JS qui insère les balises, ca passe tout seul. :)

Image utilisateur
Mes tutoriels : Bien utiliser les fonctions de hachage / La 2D en C# / Utilisez les bases de données dans vos programmes C#

"Imaginez un monde ou chacun est libre de s'exprimer à tout sujet..."
Venez tous sur Freenet 0.7 ! Comment ? Pourquoi ?
 
Hors ligne Lynix # Posté le 27/04/2008 à 00:25:58
Graphiste 3D
Avatar
Groupe : Membres
Pour la faille de sécurité, ne suffit-il pas de ne pas autoriser la balise si ça commence par javascript: ? C'est la seule faille que je vois
 
Hors ligne Bilbax # Posté le 27/04/2008 à 00:32:51
www.bilbax.eu
Avatar
Groupe : Membres
Citation : Artefact2
Plus généralement, quelle est la différence entre <strong> et [b] ?


La balise [b] mets en gras, et <strong> indique une forte insistance. Ne pas confondre balise de mise en forme et balise de sémantique XHTML. :)
Hors ligne Jeremie78 # Posté le 27/04/2008 à 00:40:09
Powered by GNU/Linux
Groupe : Membres
La mise en gras n'est-elle pas là pour indiquer une insistance sémantique ? ^^

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne Talus # Posté le 27/04/2008 à 01:07:58
タルス
Avatar
Groupe : Membres
Dans les esprits... Imagine si, par défaut, strong faisait juste une couleur rose :-°
 
Hors ligne Dutiona # Posté le 27/04/2008 à 01:45:06
Vis pour être heureux !
Avatar
Groupe : Membres
Bon, je propose 2 lib de "compatibilité" pour émuler file_get_contents sur des url quand ya pas allow_url_fopen et pour emuler http_post_fiels quand ya pas pecl (< php 5 par exemple).

rFile_get_contents :
Code : PHP
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
if(strtolower(ini_get('allow_url_fopen')) == 'off'){
	if(extension_loaded('curl') || (!extension_loaded('curl') && dl('curl'))){
			function rFile_get_contents($url){
				$crlf = "\r\n";
			    $ch = curl_init();
			
			    curl_setopt ($ch, CURLOPT_URL, $url);
			    curl_setopt ($ch, CURLOPT_HEADER, true);
			
			    ob_start();
			
			    curl_exec ($ch);
			    curl_close ($ch);
			    $string = ob_get_contents();
			    ob_end_clean();
		    	// split header and body
				$pos = strpos($string, $crlf . $crlf);
				if($pos === false) return($string);
				$header = substr($string, 0, $pos);
				$body = substr($string, $pos + 2 * strlen($crlf));
				
				// parse headers
				$headers = array();
				$lines = explode($crlf, $header);
				foreach($lines as $line) if(($pos = strpos($line, ':')) !== false) $headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos+1));
			    
				if(isset($headers['location'])){
					return(rFile_get_content($headers['location']));
				}else{
					return $body;
				}
			}
	}else{
		class HTTPRequest{
			private $_fp;        // HTTP socket
			private $_url;        // full URL
			private $_host;        // HTTP host
			private $_protocol;    // protocol (HTTP/HTTPS)
			private $_uri;        // request URI
			private $_port;        // port
			
			// scan url
			private function _scan_url(){
				$req = $this->_url;
				
				$pos = strpos($req, '://');
				$this->_protocol = strtolower(substr($req, 0, $pos));
				
				$req = substr($req, $pos+3);
				$pos = strpos($req, '/');
				if($pos === false) $pos = strlen($req);
				$host = substr($req, 0, $pos);
				
				if(strpos($host, ':') !== false){
					list($this->_host, $this->_port) = explode(':', $host);
				}else{
					$this->_host = $host;
					$this->_port = ($this->_protocol == 'https') ? 443 : 80;
				}
				
				$this->_uri = substr($req, $pos);
				if($this->_uri == '') $this->_uri = '/';
			}
			
			// constructor
			public function __construct($url){
				$this->_url = $url;
				$this->_scan_url();
			}
			
			// download URL to string
			public function DownloadToArray(){
				$crlf = "\r\n";
				
				// generate request
				$req = 'GET '.$this->_uri.' HTTP/1.0'.$crlf.'Host: '.$this->_host.$crlf.$crlf;
				
				// fetch
				$this->_fp = fsockopen(($this->_protocol == 'https' ? 'ssl://' : '').$this->_host, $this->_port);
				fwrite($this->_fp, $req);
				while(is_resource($this->_fp) && $this->_fp && !feof($this->_fp))
				$response .= fread($this->_fp, 1024);
				fclose($this->_fp);
				
				// split header and body
				$pos = strpos($response, $crlf . $crlf);
				if($pos === false) return($response);
				$header = substr($response, 0, $pos);
				$body = substr($response, $pos + 2 * strlen($crlf));
				
				// parse headers
				$headers = array();
				$lines = explode($crlf, $header);
				foreach($lines as $line) if(($pos = strpos($line, ':')) !== false) $headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos+1));
				
				// redirection?
				if(isset($headers['location'])){
					$http = new HTTPRequest($headers['location']);
					return($http->DownloadToArray($http));
				}else{
					return(array($body, $headers));
				}
			}
		}
		function rFile_get_contents($url){
			$http = new HTTPRequest($url);
			$res = $http->DownLoadToArray();
			return $res[0];
		}
	}
}else{
	function rFile_get_contents($url){
		return file_get_contents($url);
	}
}
?>


http_post_fields : nécessite curl si ya pas pecl.

Code : PHP
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?php
if(!function_exists('http_post_fields')){
	function post_data_encode($data, $keyprefix = "", $keypostfix = "") {
		$vars = null;
		foreach($data as $key => $value){
			if(is_array($value))
				$vars .= post_data_encode($value, $keyprefix.$key.$keypostfix.urlencode("["), urlencode("]"));
			else
				$vars .= $keyprefix.$key.$keypostfix."=".urlencode(utf8_encode($value))."&";
		}
		return $vars;
	}
	
	function cookie_data_encode($cookiearr){
		$cookievars = '';
		foreach($cookiearr as $key=>$value) $cookievars .= $key.'='.utf8_encode($value).'; ';
		return $cookievars;
	}
	
	class CurlRequest{
		var $ch;
		/**
		* Init curl session
		*
		* $params = array('url' => '',
		*                    'host' => '',
		*                   'header' => '',
		*                   'method' => '',
		*                   'referer' => '',
		*                   'cookie' => '',
		*                   'post_fields' => '',
		*                    ['login' => '',]
		*                    ['password' => '',]     
		*                   'timeout' => 0
		*                   );
		*/               
		function CurlRequest($params){
			$this->ch = curl_init();
			$user_agent = 'Mozilla/5.0 (Windows; U;
			Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9';
			$header = array(
			"Accept: text/xml,application/xml,application/xhtml+xml,
			text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
			"Accept-Language: ru-ru,ru;q=0.7,en-us;q=0.5,en;q=0.3",
			"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7",
			"Keep-Alive: 300");
			if(isset($params['host']) && $params['host'])		$header[]="Host: ".$host;
			if(isset($params['header']) && is_array($params['header']))	array_merge($header, $params['header']);
			
			@curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1 );
			@curl_setopt($this->ch, CURLOPT_VERBOSE, 1 );
			@curl_setopt($this->ch, CURLOPT_HEADER, 1 );
			
			if($params['method'] == "HEAD") @curl_setopt($this->ch, CURLOPT_NOBODY, 1);
			@curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1);
			@curl_setopt($this->ch, CURLOPT_HTTPHEADER, $header);
			if ($params['referer']) @curl_setopt($this->ch, CURLOPT_REFERER, $params['referer']);
			@curl_setopt($this->ch, CURLOPT_USERAGENT, $user_agent);
			if($params['cookie']) @curl_setopt($this->ch, CURLOPT_COOKIE, $params['cookie']);
			
			if($params['method'] == "POST" ){
				curl_setopt($this->ch, CURLOPT_POST, true );
				curl_setopt($this->ch, CURLOPT_POSTFIELDS, $params['post_fields']);
			}
			@curl_setopt($this->ch, CURLOPT_URL, $params['url']);
			@curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);
			@curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);
			if(isset($params['login']) & isset($params['password']))
			@curl_setopt($this->ch, CURLOPT_USERPWD, $params['login'].':'.$params['password']);
			@curl_setopt($this->ch, CURLOPT_TIMEOUT, $params['timeout']);
		}
		
		/**
		* Make curl request
		*
		* @return array  'header','body','curl_error','http_code','last_url'
		*/
		function exec(){
			$response = curl_exec($this->ch);
			$error = curl_error($this->ch);
			$result = array('header' => '',
							'body' => '',
							'curl_error' => '',
							'http_code' => '',
							'last_url' => ''
							);
			if($error != ""){
				$result['curl_error'] = $error;
				return $result;
			}
			
			$header_size = curl_getinfo($this->ch, CURLINFO_HEADER_SIZE);
			$result['header'] = substr($response, 0, $header_size);
			$result['body'] = substr( $response, $header_size);
			$result['http_code'] = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);
			$result['last_url'] = curl_getinfo($this->ch, CURLINFO_EFFECTIVE_URL);
			return $result;
		}
	}
	
	function http_post_fields($url, $postarray, $options = null){
		$postvar = substr(post_data_encode($postvar), 0, -1);
		$params = array('url' => $url,
						'host' => '',
						'header' => array(),
						'method' => 'GET', //POST HEAD
						'referer' => '',
						'cookie' => '',
						'post_fields' => $postvar,
						'login' => '',
						'password' => '',
						'timeout' => 0
		                   );
		if(is_array($options)){
			foreach($options as $option => $val){
				switch($options){
					case 'host':
						$params['host'] = $val;
						break;
					case 'header':
						foreach($val as $hn => $hv){
							$param['header'][] = $hn.': '.$hv;
						}
						break;
					case 'method':
						$params['method'] = $val;
						break;
					case 'referer':
						$params['referer'] = $val;
						break;
					case 'cookie':
						$params['cookie'] = cookie_data_encode($val);
						break;
					case 'login':
						$param['login'] = $val;
						break;
					case 'password':
						$params['password'] = $val;
						break;
					case 'timeout':
						$params['timeout'] = $val;
				}
			}
		}
		$conn = new CurlRequest($params);
		$result = $conn->exec();
		if($result['curl_error']) trigger_error($result['curl_error'], E_USER_WARNING);
		if($result['http_code']!='200') trigger_error("HTTP Code = ".$result['http_code'], E_USER_WARNING);
		if(!$result['body']) trigger_error("Pas de corps du document", E_USER_WARNING);
		return array($result['body'], $result['header']);
	}
}
?>



J'ai reconstitué ces lib grâce à quelques bouts de code des commentaires utilisateurs de la doc et surtout grâce à la doc elle-même.
Maintenant, faut tester pour trouver tous les bug (certains m'ont sans doute échapés).


Bisous, Nyu

Défiez ma brute !
Eclipse user | Ubuntu (KDE) user | php/sql/xhtml/css/xml/xsl/javascript/java/python/perl/c/scheme coder.
Framework in use: Seraframework (my own one).
In Microeisti staff.
 

Retour au forum "PHP" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 35 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.4452s (0.4305s)