(Résolu) Séparer code php .htaccess ?

Eléphanteau du PHP | 49 Messages

15 déc. 2011, 18:35

Besoin d’une explication sur ce code, qui remplace un (.htaccess) dans un dossier….
D’ailleurs il fonctionne très bien et vous pouvez l’utiliser…. Pour ceux que ça intéresse !

Code : Tout sélectionner

1 <?php 2 @$_SERVER['PHP_AUTH_USER']; 3 @$_SERVER['PHP_AUTH_PW']; 4 5 if ((substr($_SERVER['SERVER_SOFTWARE'], 0, 9) == 'Microsoft') && 6 (!isset($_SERVER['PHP_AUTH_USER'])) && 7 (!isset($_SERVER['PHP_AUTH_PW'])) && 8 (substr($_SERVER['HTTP_AUTHORIZATION'], 0, 6) == 'Basic ') 9 ) { 10 11 list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = 12 explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); 13 } 14 if 15 // Remplacer le login (user) et le mot de pass (login) 16 ( 17 (@$_SERVER['PHP_AUTH_USER'] != 'user') || 18 (@$_SERVER['PHP_AUTH_PW'] != 'login') 19 ) 20 { 21 header('WWW-Authenticate: Basic realm="Realm-Name"'); 22 23 if (substr(@$_SERVER['SERVER_SOFTWARE'], 0, 9) == 'Microsoft') { 24 header('Status: 401 Unauthorized'); 25 } else { 26 header('HTTP/1.0 401 Unauthorized'); 27 } 28 29 echo "<h1>ACCES INTERDIT</h1>"; 30 } 31 else 32 { ?> Ici le code de ma page html et php etc….. <?php } ?>
Ma question :
Je souhaite remplacer les lignes 17 et 18 par un fichier, par exemple (user_login.php)…
Ce qui me permettrais d’avoir plusieurs page avec ce code et une seule avec les mots de pass…
Ce qui donnerais en remplacement :

Code : Tout sélectionner

<?php include("user_login.php") ?>
J’ai tout essayé, (include, include_once, require et require_once, fichier avec .inc….) bref tout…
Et ça ne fonctionne pas…
Peut-on avec php, séparer ce code tel que définie ci-dessus ?

Merci pour les explications..
Cordialement.
Modifié en dernier par brother le 18 déc. 2011, 14:34, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 déc. 2011, 22:30

Je ne comprend pas bien ce que tu veux faire... c'est tes 32 premières lignes que tu veux placer dans un fichier qui sera inclus dans tes pages ? (auquel cas tu pourras n'auras avoir qu'un seul fichier avec un login/mdp et l'inclure dans toutes tes pages)

Ou est-ce que c'est uniquement le test des lignes 17/18 que tu veux externaliser (ce qui effectivement ne peut pas se faire simplement avec un include...

Mais si c'est pour l'inclure dans toutes tes pages, pourquoi ne pas mettre un véritable fichier htaccess ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 49 Messages

15 déc. 2011, 22:45

Bonsoir,

Effectivement c'est uniquement le test des lignes 17/18 que je veux externaliser...
Pourquoi ?
Parce qu'avec la ligne 29, je peux insérer du code en fonction des différentes pages qui se trouveront dans le dossier concerné (10) pour info.
J'apprend, je découvre, encore et encore #-o ....
Alors si je ne peut pas le faire avec un include...Part quel moyen puis-je le faire ? 8-|

Merci de ton aide :oops:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 déc. 2011, 23:34

En fait, tu ne peux pas externaliser uniquement la ligne du if() ... en revanche, ce que tu peux faire, c'est tester une variable (par exemple $autoriseAcces) et externaliser l'initialisation de cette variable.

En gros, entre les lignes 13 et 14, tu inclus ta page user_login.php, puis tu remplaces tes lignes 14 à 20 par :
include ('user_login.php'); // contrôle l'autorisation d'accès

if (isSet($autoriseAcces) && $autoriseAcces===FALSE) {
Et dans ton fichier user_login.php, tu aurais donc simplement
<?php 
if ($_SERVER['PHP_AUTH_USER'] != 'user' || $_SERVER['PHP_AUTH_PW'] != 'login') {
    $autoriseAcces = FALSE;
}
?>
Et tu peux modifier ou compléter au besoin le test qui interdit l'accès :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 49 Messages

18 déc. 2011, 14:33

Bonjour Ryle,

Merci beaucoup.... :priere: