IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Soucis d'ajout de '\' dans les URL


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Points : 5
    Points
    5
    Par défaut Soucis d'ajout de '\' dans les URL
    Bonjour,

    J'ai un soucis avec mes URL, un \ s'ajoute devant mes URL.
    <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Si je modifie ça, j'ai tout qui plante.
    Warning: preg_match() [
    function.preg-match

  3. #3
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    On peut voir le bout de code qui fait appel à ta fonction pour afficher l'url ?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Tu veut l'obj Requset ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
    			}
    		}
    	}
     
     
    }

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/11/2007, 22h00
  2. Comment cacher les 4DACTION dans les urls?
    Par longomarc dans le forum 4D
    Réponses: 3
    Dernier message: 05/10/2007, 15h01
  3. problème d'ajout de \' dans l'url
    Par sebdu dans le forum Langage
    Réponses: 6
    Dernier message: 23/08/2007, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo