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

PHP & Base de données Discussion :

mauvaise création d'url : Comment le résoudre ?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 131
    Par défaut mauvaise création d'url : Comment le résoudre ?
    Bonjour,

    Dans mon application j'ai un problème au niveau de la génération des url.
    Merci

    url normal

    Quand je change de langue j'ai pas de problème au niveau des url

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    http://localhost/test/boutique/index.php
    http://localhost/test/boutique/index.php?language=fr
    http://localhost/test/boutique/index.php?language=en
    Quand je choisi un langue à partir de l'index, et je vais dans produit par exemple, pas de problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/test/boutique/index.php?Products&Description&products_id=1
    Mais cela se corse quand je suis dans un produit et que je change de langue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    localhost/test/boutique/index.php?Products=&Description=&products_id=1&language=en
    La il y a un problème d'écritur d'url mais qui n'a pas d'incidence sur le site, cela concerne uniquement le changement de langue sur la page.


    Voici les éléments de traitement et de génération

    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
       public static function link($page, $parameters = null, $add_session_id = true, $search_engine_safe = true)  {
     
          $page = HTML::sanitize($page);
     
          $site = $req_site = static::$site;
     
          if ((strpos($page, '/') !== false) && (preg_match('/^([A-Z][A-Za-z0-9-_]*)\/(.*)$/', $page, $matches) === 1) && OSCOM::siteExists($matches[1], false)) {
              $req_site = $matches[1];
              $page = $matches[2];
          }
     
          if (!is_bool($add_session_id)) {
            $add_session_id = true;
          }
     
          if (!is_bool($search_engine_safe)) {
            $search_engine_safe = true;
          }
     
          if (($add_session_id === true) && ($site !== $req_site)) {
            $add_session_id = false;
          }
     
          $link = static::getConfig('http_server', $req_site) . static::getConfig('http_path', $req_site) . $page;
     
          if (!empty($parameters)) {
            $p = HTML::sanitize($parameters);
     
    // pb lien
            $p = str_replace([
                              "\\", // apps
                              '{', // product attributes
                              '}' // product attributes
                              ], [
                                '%5C',
                                '%7B',
                                '%7D'
                              ], $p);
     
     
            $link .= '?' . $p;
            $separator = '&';
          } else {
            $separator = '?';
          }
     
          while((substr($link, -1) == '&') || (substr($link, -1) == '?')) {
            $link = substr($link, 0, -1);
          }
     
    // Add the session ID when moving from different HTTP and HTTPS servers, or when SID is defined
          if (($add_session_id === true) && Registry::exists('Session')) {
            $OSCOM_Session = Registry::get('Session');
     
            if ($OSCOM_Session->hasStarted() && ($OSCOM_Session->isForceCookies() === false)) {
              if ((strlen(SID) > 0) || (((HTTP::getRequestType() == 'NONSSL') && (parse_url(static::getConfig('http_server', $req_site), PHP_URL_SCHEME) == 'https')) || ((HTTP::getRequestType() == 'SSL') && (parse_url(static::getConfig('http_server', $req_site), PHP_URL_SCHEME) == 'http')))) {
                $link .= $separator . HTML::sanitize(session_name() . '=' . session_id());
              }
            }
          }
     
          while(strpos($link, '&&') !== false) {
            $link = str_replace('&&', '&', $link);
          }
     
          if ($search_engine_safe === true && defined('SEARCH_ENGINE_FRIENDLY_URLS') && (SEARCH_ENGINE_FRIENDLY_URLS == 'true' && SEFU::start()) && static::getSite() != 'ClicShoppingAdmin') {
    //        $link = str_replace(['?', '&', '='], '/', $link);
            $link = str_replace(['?', '&', '='], ['/', '/', ','], $link);
          }
     
          return $link;
        }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       public static function link($url, $element, $parameters = null) {
          return '<a href="' . $url . '"' . (!empty($parameters) ? ' ' . $parameters : '') . '>' . $element . '</a>';
        }



    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
     
       public function getFlag() {
          if (!isset($_GET['Checkout'])) {
            $content = '';
     
            $get_params = [];
     
            foreach ( $_GET as $key => $value ) {
              if (($key != 'language') && ($key != Registry::get('Session')->getName()) && ($key != 'x') && ($key != 'y')) {
                $get_params[] = $key . '=' . $value;
              }
            }
     
            $get_params = implode($get_params, '&');
     
     
            if ( !empty($get_params) ) {
              $get_params .= '&';
            }
     
            foreach ($this->getAll() as $value) {
              $content .= ' ' . HTML::link(OSCOM::link('index.php', $get_params . 'language=' . $value['code']), $this->getImage($value['code'])) . ' ';
            }
          }
     
          return $content;
        }

    les éléments à propos $_GET de la fonction getFlag
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      'Products' => string '' (length=0)
      'Description' => string '' (length=0)
      'products_id' => string '1' (length=1)
      'language' => string 'en' (length=2)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Alors, problème ou pas problème ??
    On ne comprend rien...

    Merci d'expliquer clairement ce qui ne va pas, et dans quelles conditions.

    N.B. Quand tu mets des bouts de code, le minimum est AUSSI d'en donner des explications.

Discussions similaires

  1. Problème sur la création d'un trigger
    Par Kwads dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/04/2015, 03h00
  2. [AC-2010] Problème sur la création d'une base de données
    Par celia122 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 25/11/2014, 07h36
  3. [XL-2010] Problème sur la création de menu (menumakr)
    Par Poussecafe dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/11/2013, 12h08
  4. Problème sur la création de partition
    Par dom23 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/08/2008, 16h58
  5. Problème sur une création de table !
    Par pierre24 dans le forum SAS Base
    Réponses: 3
    Dernier message: 21/05/2008, 13h58

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