Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/10/2011, 23h26   #1
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
Par défaut Soucis d'ajout de '\' dans les URL

Bonjour,

J'ai un soucis avec mes URL, un \ s'ajoute devant mes URL.
Citation:
<a href="\/blog/if-ifttt-com-then-9">Lire la suite →</a>
J'ai débugger ($r et $url) mais à aucun moment dans le script je ne vois qu'il y a un \ devant mes URL.

Je vous poste mon code, si vous voulez le CMS entier je peut vous l'envoyer éventuellement.

Code :
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
<?php
class Router{
 
 
	static $routes = array(); 
	static $prefixes = array(); 
 
	/**
	* Ajoute un prefix au Routing
	**/
	static function prefix($url,$prefix){
		self::$prefixes[$url] = $prefix;
	}
 
 
	/**
	* Permet de parser une url
	* @param $url Url à parser
	* @return tableau contenant les paramètres
	**/
	static function parse($url,$request){
		$url = trim($url,'/'); 
		if(empty($url)){
			$url = Router::$routes[0]['url']; 
		}else{
			$match = false; 
			foreach(Router::$routes as $v){
				if(!$match && preg_match($v['redirreg'],$url,$match)){
					$url = $v['origin'];
					foreach($match as $k=>$v){
						$url = str_replace(':'.$k.':',$v,$url); 
					} 
					$match = true;
				}
			}
		}
 
		$params = explode('/',$url);
		if(in_array($params[0],array_keys(self::$prefixes))){
			$request->prefix = self::$prefixes[$params[0]];
			array_shift($params); 
		}
		$request->controller = $params[0];
		$request->action = isset($params[1]) ? $params[1] : 'index';
		foreach(self::$prefixes as $k=>$v){
			if(strpos($request->action,$v.'_') === 0){
				$request->prefix = $v;
				$request->action = str_replace($v.'_','',$request->action);  
			}
		}
		$request->params = array_slice($params,2);
		return true; 
	}
 
 
	/**
	* Permet de connecter une url à une action particulière
	**/
	static function connect($redir,$url){
		$r = array();
 
		$r['params'] = array();
		$r['url'] = $url;  
 
		$r['originreg'] = preg_replace('/([a-z0-9]+):([^\/]+)/','${1}:(?P<${1}>${2})',$url);
		$r['originreg'] = str_replace('/*','(?P<args>/?.*)',$r['originreg']);
		$r['originreg'] = '/^'.str_replace('/','\/',$r['originreg']).'$/';
		// MODIF
		$r['origin'] = preg_replace('/([a-z0-9]+):([^\/]+)/',':${1}:',$url);
		$r['origin'] = str_replace('/*',':args:',$r['origin']);
		$params = explode('/',$url);
		foreach($params as $k=>$v){
			if(strpos($v,':')){
				$p = explode(':',$v);
				$r['params'][$p[0]] = $p[1]; 
			}
		} 
		$r['redirreg'] = $redir;
		$r['redirreg'] = str_replace('/*','(?P<args>/?.*)',$r['redirreg']);
		foreach($r['params'] as $k=>$v){
			$r['redirreg'] = str_replace(":$k","(?P<$k>$v)",$r['redirreg']);
		}
		$r['redirreg'] = '/^'.str_replace('/','\/',$r['redirreg']).'$/';
		$r['redir'] = preg_replace('/:([a-z0-9]+)/',':${1}:',$redir);
		$r['redir'] = str_replace('/*',':args:',$r['redir']); 
		self::$routes[] = $r;
	}
 
	/**
	* Permet de générer une url à partir d'une url originale
	* controller/action(/:param/:param/:param...)
	**/
	static function url($url = ''){
		trim($url,'/'); 
		foreach(self::$routes as $v){
			if(preg_match($v['originreg'],$url,$match)){
				$url = $v['redir']; 
				foreach($match as $k=>$w){
					$url = str_replace(":$k:",$w,$url);					
				}
			}
		}
 
		foreach(self::$prefixes as $k=>$v){
			if(strpos($url,$v) === 0){
				$url = str_replace($v,$k,$url);
			}
		}
		return BASE_URL.'/'.$url;
 
	}
 
	static function webroot($url){
		trim($url,'/');
		return BASE_URL.'/'.$url;
	}
 
}
OS: Windows
Serveur web: WAMP
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 23h48   #2
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
Si je modifie ça, j'ai tout qui plante.
Warning: preg_match() [
function.preg-match
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 01h09   #3
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 329
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 329
Points : 1 657
Points : 1 657
On peut voir le bout de code qui fait appel à ta fonction pour afficher l'url ?
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 02h30   #4
 
Homme
Edudiant
Inscription : octobre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Edudiant

Informations forums :
Inscription : octobre 2011
Messages : 14
Points : -1
Points : -1
Tu veut l'obj Requset ?

Code :
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
<?php
class Request{
 
 
	public $url; 				// URL appellé par l'utilisateur
	public $page = 1; 			// pour la pagination 
	public $prefix = false; 	// Prefixage des urls /prefix/url
	public $data = false; 		// Données envoyé dans le formulaire
 
	function __construct(){
		$this->url = isset($_SERVER['PATH_INFO'])?$_SERVER['PATH_INFO']:'/'; 
 
		// Si on a une page dans l'url on la rentre dans $this->page
		if(isset($_GET['page'])){
			if(is_numeric($_GET['page'])){
				if($_GET['page'] > 0){
					$this->page = round($_GET['page']); 
				}
			}
		}
		// Si des données ont été postées ont les entre dans data
		if(!empty($_POST)){
			$this->data = new stdClass(); 
			foreach($_POST as $k=>$v){
				$this->data->$k=$v;
			}
		}
	}
 
 
}
SausauRjaws est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h29.


 
 
 
 
Partenaires

Hébergement Web