{"id":48,"date":"2007-06-11T03:24:08","date_gmt":"2007-06-11T01:24:08","guid":{"rendered":"http:\/\/www.dereckson.be\/blog\/2007\/06\/11\/integrer-codeigniter-dans-un-site-existant\/"},"modified":"2012-12-30T02:54:26","modified_gmt":"2012-12-30T01:54:26","slug":"integrer-codeigniter-dans-un-site-existant","status":"publish","type":"post","link":"https:\/\/www.dereckson.be\/blog\/2007\/06\/11\/integrer-codeigniter-dans-un-site-existant\/","title":{"rendered":"Int\u00e9grer CodeIgniter dans un site existant"},"content":{"rendered":"<p>Vous avez d\u00e9j\u00e0 un site Web.<\/p>\n<p>Vous voulez garder cet acquis.<\/p>\n<p>Vous avez envie de d\u00e9velopper de nouvelles applications avec CodeIgniter.<\/p>\n<p>Don&#8217;t panic!<\/p>\n<p>Voici la solution.<\/p>\n<p><!--more--><\/p>\n<p><strong>\u00c9tape 1 &#8211; Checklist<\/strong><\/p>\n<p>Vous devez r\u00e9pondre aux questions suivantes&nbsp;:<\/p>\n<p>(1) quand appeller un <em>controller<\/em> CodeIgniter, quand appeller une page r\u00e9guli\u00e8re&nbsp;?<\/p>\n<p>(2) o\u00f9 placer CodeIgniter sur mon serveur&nbsp;?<\/p>\n<p><strong>\u00c9tape 2 &#8211; Upload de CodeIgniter<\/strong><\/p>\n<p>(1) Uploadez le dossier system \u00e0 la racine de votre serveur, renommez le CodeIgniter si vous avez d\u00e9j\u00e0 un dossier syst\u00e8me.<\/p>\n<p>(2) Uploadez index.php \u00e9galement \u00e0 la racine du serveur en l&#8217;appellant codeigniter.php<\/p>\n<p>Le cas \u00e9ch\u00e9ant, remplacer $system_folder = &#8220;system&#8221;; par le nom du dossier r\u00e9gl\u00e9 en (1).<\/p>\n<p><strong>\u00c9tape 3 &#8211; Appel de CodeIgniter<\/strong><\/p>\n<p><strong>CAS 1 &#8211; Vos pages sont include depuis index.php<\/strong><\/p>\n<p>Rassurez-moi, vous g\u00e9rez bien le cas des erreurs 404&nbsp;?<\/p>\n<p>Pour Espace Win, lorsque Pluton rencontre une url \/welcome il v\u00e9rifie si le dossier welcome existe.<\/p>\n<p>Si vous avez peu de controller, au lieu de perdre quelques millisecodnes dans le code ci-dessous, n&#8217;h\u00e9sitez pas \u00e0 les perdre en mod_rewrite (cas n\u00b0 2).<\/p>\n<p>Bon imaginons que vous stockez le sous r\u00e9pertoire de l&#8217;url, ici welcome, dans $dir&nbsp;:<\/p>\n<pre>        if ($dir &amp;&amp; !file_exists($dir)) {                 \/\/Le topic n'existe pas                 \/\/Hypoth\u00e8se n\u00b0 1 - URL CodeIgniter                 \/\/Hypoth\u00e8se n\u00b0 2 - Erreur 404                 \/\/V\u00e9rifions la premi\u00e8re hypoth\u00e8se                 $tab = split('\/', $dir);                 $c = $tab<a href=\"0\">0<\/a>;                 if (file_exists(\"system\/application\/controllers\/$c.php\")) {                         \/\/Appel de CodeIgniter                         define(\"FRAMEWORK\", \"CodeIgniter\");                         define(\"CI_URI_STRING\", $dir);                         include(\"codeigniter.php\");                 } else {                         \/\/Bon ben non, 404 alors                 }         }<\/pre>\n<p>Pour inclure, il existe plusieurs solutions, la plus simple \u00e9tant&nbsp;: include(&#8220;http:\/\/www.votresite.com\/igniter.php\/$url&#8221;);<\/p>\n<p>Oui sauf que votre framework g\u00e8re les appels db, l&#8217;authentification, &#8230; donc vous souhaitez inclure igniter.php directement.<\/p>\n<pre>$_SERVER<a href=\"&#039;PATH_INFO&#039;\">'PATH_INFO'<\/a> = $dir; include(\"igniter.php\");<\/pre>\n<p>Vous remarquez que dans notre exemple, nous avons define(&#8220;CI_URI_STRING&#8221;, $dir) au lieu de  $_SERVER<a href=\"&#039;PATH_INFO&#039;\">&#8216;PATH_INFO&#8217;<\/a> = $dir;<\/p>\n<p>Si comme nous, vous n&#8217;avez pas envie de toucher \u00e0 PATH_INFO, REQUEST_STRING &amp; consort, par exemple parce que la suite de votre application l&#8217;utilise, vous pouvez demander \u00e0 CodeIgniter de lire cette constante CI_URL_STRING en ajoutant dans la fonction _get_uri_string de libraries\/Router.php (aux alentours de la ligne 290 pour CodeIgniter 1.5)&nbsp;:<\/p>\n<pre>                        \/\/ Is there a CI_URI_STRING constant ?                         if (defined('CI_URI_STRING'))                         {                                 return CI_URI_STRING;                         }<\/pre>\n<p>Notez que rien ne vous emp\u00eache \u00e9galement d&#8217;utiliser ceci si vous ne voulez pas modifier CodeIgniter&nbsp;:<\/p>\n<pre>$backup_path_info = $_SERVER<a href=\"&#039;PATH_INFO&#039;\">'PATH_INFO'<\/a> $_SERVER<a href=\"&#039;PATH_INFO&#039;\">'PATH_INFO'<\/a> = $dir; include(\"igniter.php\"); $_SERVER<a href=\"&#039;PATH_INFO&#039;\">'PATH_INFO'<\/a> = $backup_path_info;<\/pre>\n<p><strong>CAS 2 &#8211; Vous souhaitez r\u00e9\u00e9crire les URL (mod_rewrite) <\/strong><\/p>\n<p>Imaginons que vous ayez deux controllers, Welcome et Quux.<\/p>\n<p>Leurs url respectives commencent par \/welcome et \/quux.<\/p>\n<p>R\u00e9\u00e9crivons les url en \/igniter.php\/welcome ou \/igniter.php\/quux\/&#8230;<\/p>\n<pre>RewriteEngine On<\/pre>\n<pre>#Un seul fragment RewriteRule \/quux\/? \/igniter.php\/quux RewriteRule \/welcome\/? \/igniter.php\/welcome<\/pre>\n<pre>#Plusieurs fragments RewriteRule \/welcome\/(.+) \/igniter.php\/welcome\/$1 RewriteRule \/quux\/(.+) \/igniter.php\/uux\/$1<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Vous avez d\u00e9j\u00e0 un site Web.<\/p>\n<p>Vous voulez garder cet acquis.<\/p>\n<p>Vous avez envie de d\u00e9velopper de nouvelles applications avec CodeIgniter.<\/p>\n<p>Don&#8217;t panic!<\/p>\n<p>Voici la solution.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-48","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/comments?post=48"}],"version-history":[{"count":1,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":133,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions\/133"}],"wp:attachment":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/media?parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/categories?post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/tags?post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}