PDA

Voir la version complète : Créer un .htaccess pour protéger son AdminCP (par exemple)


Allan
22/01/2006, 20h55
"Créer un .htaccess"


De nos jours, il est presque essentiel de protéger certain accès à nos sites et forums contre les hackers, l'un des moyens les plus efficace et connu est le .htaccess.

Les fichiers .htaccess peuvent être utilisés dans n'importe quel répertoire virtuel ou sous-répertoire.
Les principales raisons d'utilisation des fichiers .htaccess sont :

Gérer l'accès à certains fichiers.
Ajouter un mime-type.
Protéger l'accès à un répertoire par un mot de passe.
Protéger l'accès à un fichier par un mot de passe.
Définir des pages d'erreurs personnalisées.Il existe plusisur moyen d'utiliser cette protection, dans cette exemple, je vais vous indiquer la plus simple car les plus complexe sont rarement utiliser.


1- Première étape: Créer un fichier "htaccess.txt"

Sous windows, créer un fichier texte (.txt) et nommer-le "htaccess.txt", metter y a l'intérieur:


AuthUserFile /home/xxxxxxxxxxxx/xxxxxxxxx/.htpasswd
AuthGroupFile /dev/null
AuthName "Up Up Up ..."
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>

Description des lignes:

- AuthUserFile /home/xxxxxxxxxxxx/xxxxxxxxx/.htpasswd (définit le chemin d'accès absolu vers le fichier de mot de passe.)
- AuthGroupFile /dev/null (définit le chemin d'accès absolu vers le fichier de groupe)
- AuthName "Up Up Up ..." (entraîne l'affichage dans le navigateur Internet de : « Tapez votre nom d'utilisateur et votre mot de passe. Domaine: "Accès protégé" »)
- AuthType Basic ( précise qu'il faut utiliser AuthUserFile pour l'authentification.)
- Le reste contient la définition des conditions d'accès



2- Seconde étape: Créer un fichier "htpasswd .txt"

Ce fichier contient le mot de passe crypté !

Le fichier de mot de passe est un fichier texte devant contenir sur chacune des ses lignes le nom de chaque utilisateur suivi des deux points (:), puis du mot de passe crypté (solution recommandée) ou en clair.
Voici un exemple de fichier de mot de passe non crypté (ici .FichierDeMotDePasse)
JFPillou:Toto504

Damien:Robert(32)

Comma:Joe[leTaxi] Voici le même fichier contenant des mots de passe cryptés : JFPillou:$apr1$Si0.....$teyL5Y7BR4cHj0sX309Jj0

Damien:$apr1$TD1.....$sfPTHjoufoNsda4HsD1oL0

Comma:$apr1$zF1.....$wYKqRu2aVYlAEQnxVkly8.

Pour crypter vos mots de passe, vous pouvez utiliser cette adresse:
=> http://www.toutwebmaster.be/home/dossiers/crypt_pass.php (http://www.toutwebmaster.be/home/dossiers/crypt_pass.php)



3- Dernière étape: Uploader les fichier "htpasswd .txt" et "htaccess.txt" sur votre ftp

Il ne vous reste plus qu'a uploader vos 2 fichiers "htpasswd.txt" et "htaccess.txt" sur votre ftp, à l'endroit ou vous souhaiter l'accès (par exemple votre AdminCP)

Dans notre exemple, vous avez uploader vos 2 fichiers dans le votre dossier ".../forum/admincp/".

Il ne vous reste plus qu'a renomer nos fichiers pour que cela fonctionne, renomer:
- htaccess.txt en .htaccess
et
- htpasswd.txt en .htpasswd

Pourquoi les renomer sur le ftp ?
Sous Windows, il est logiquement impossible de créer un fichier .htaccess, puisque Windows ne vous autorisera pas à sauvegarder le fichier tel quel.

Voila, c'est assez simple et très efficace pour protéger certains de vos accès dit "sensible" byby

G@MER
22/01/2006, 21h29
Merci Allan pour ce tuto

C'est vrai que c'est pratique pour proteger admin cp avec un htacces car son mot de passe n'est pas suffisant si il est facile a devinez et si on met le meme sur tout les forum

panik
23/01/2006, 03h00
Merci pour ce beau tutorial , le côté obscur devient plus clair tout à coup ........:delicious:

Christounet
05/04/2006, 11h49
bien comme tuto !

le mieux je trouve est d'interdire carrément l'accès par http au dossier includes
qui contient le mot de passe dans config.php !

pour ça il suffit d'y placer le .htaccess suivant:

AuthType Basic
<Limit GET POST>
deny from all
</Limit>

on à dés lors une erreur 403 quand on essaye d'y accèder !

WrestleMania
05/04/2006, 16h18
mh merci mais bien compliquer alors que les hébergeurs proposent une création de ht automatique

Rom56
05/04/2006, 17h46
mh merci mais bien compliquer alors que les hébergeurs proposent une création de ht automatique

Merci allan tout d'abord, mais c'est clair vive directadmin et compagnie qui le font en deux temps trois mouvements :)

Allan
05/04/2006, 18h37
Oui, j'ai remarquer que beaucoup d'hébergeurs s'y mettent et fournissent de petits outils comme celui-ci bien pratique ;)

0a$!s
04/05/2006, 13h00
Lorsque je met le fichier .htacess dans /forums/adminCP/ ... j'ai cette erreur si je veux aller dans mon Panel Admin :

" Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request.
Apache/ProXad [Mar 28 2006 05:05:41] Server at hug.fofu10.free.fr Port 80 " .

Mon .htacess :

AuthUserFile /forums/admincp/.htpasswd
AuthGroupFile /dev/null
AuthName "Up Up Up ..."
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>

Et je n'ai pas très bien compris l'utilité de mettre un .htacess dans /forums/includes/ ...

Merci d'avance !

++

0a$!s
05/05/2006, 21h52
Help ! Svp !

Dark-Angel
06/05/2006, 00h21
j'ai fait une petite recherche et il semblerais que chez free la maniére de faire un htaccess soit un peu differente de celle des autres hebergeurs tu trouveras la solution ici http://www.aidoforum.com/tutoriaux-234-fichier-htaccess-chez-freefr.html ;)

0a$!s
06/05/2006, 09h53
Ca marche mais j'ai un problème, et ce, avec tous les htacess : je rentre le bon mdp + login, mais ça me redemande à chaque fois de taper mdp + login, ça revient en arrière quoi !

Rom56
06/05/2006, 09h55
Ca marche mais j'ai un problème, et ce, avec tous les htacess : je rentre le bon mdp + login, mais ça me redemande à chaque fois de taper mdp + login, ça revient en arrière quoi !

oui ca fais souvent ca quand le patch dans le hta est mal renseigné... moi perso j'arrive jamais à bien faire j'utilise l'assistant de mon hébergeur qui me le fais tout seul :)

0a$!s
06/05/2006, 10h17
Huh ? Je comprends pas trop , j'ai mis un .htaccess dans le dossier password ("deny from all") , un fichier .htaccess dans Admincp ("PerlSetVar AuthFile forums/admincp/password/.htpasswd
AuthName "Acces Restreint"
AuthType Basic
require valid-user") et un fichier .htpasswd avec mdp non crypté .

Ca me demande à chaque fois de retaper mdp + login, et j'ai mm pas de msg derreurs !

lagrace
06/05/2006, 15h24
Salut

Sais ton chemin pour arriver au fichier des pass qui est mal renseigné
Dans la plupart des cas ca doit commencé comme /home/public-html/xxx
un truc dans le genre mais ca doit surement pas commencer par la racine de ton forum :)

0a$!s
06/05/2006, 16h47
Je viens de le modifier ça marche ;)

Sasuke31
25/05/2006, 19h04
Moi je comprends pas je fais tout comme il faut et quand je veut aller sur L'adminCp l'Htaccess se lance mais quand je tape mon ident + le pass ca marche pas.

Voila mon htaccess
AuthUserFile /home/Spirit-Download/admincp/.htpasswd
AuthName "Up Up Up ..."
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
P.S je suis heberger sur ohost

Allan
25/05/2006, 20h05
A tu cryter ton mot de passe ?
ou a tu mis le fichier: .htpasswd ?

0a$!s
25/05/2006, 20h56
Est-ce que ça te renvoie sur le HTACCESS ? Peut être que ton chemin pour le htpasswd est mauvais, j'avais aussi ce problème .

Allan
25/05/2006, 21h45
Oui, le chemin du fichier HTPASSWD se trouve dans le fichier HTACCESS, à vérifier ..

Mennen
05/06/2006, 10h29
bien comme tuto !

le mieux je trouve est d'interdire carrément l'accès par http au dossier includes
qui contient le mot de passe dans config.php !

pour ça il suffit d'y placer le .htaccess suivant:

AuthType Basic
<Limit GET POST>
deny from all
</Limit>

on à dés lors une erreur 403 quand on essaye d'y accèder !
La ligne AuthType Basic est superflue ;)







Sinon pour créer un htaccess sans se prendre la tête voici un générateur de fichiers htaccess :




GENERATEUR DE FICHIERS
.htaccess - .htpasswd
Outils pour webmaster. (http://www.toulouse-renaissance.net/nowaylink.htm) Trucs et astuces en code HTML, JavaScript, PHP : améliorer son site internet
Descriptif : fini les galères sur la conception des fichiers htaccess / .htpasswd. Ce générateur va résoudre tous vos problèmes. Il se présente comme une interface administrateur qui va vous permettre d'ajouter des utilisateurs et leurs mots de passe, de les effacer, de les modifier etc. L'interface est en plusieurs langues.
- Une fois téléchargé le fichier htaccess_cod.zip, décompressez le fichier zip.
- Celui-ci porte l'extension .txt. Vous pourrez alors travailler simplement avec le Bloc-Notes.
- Le login et le mot de passe de cette interface administrateur sont tous les deux toto. Vous pouvez les changer à la ligne :
$adminloginname = "toto"; /*admin de votre choix */
$adminloginpass = "toto"; /* password de votre choix */
- Vous pouvez changer la langue par défaut à la ligne :
$standardlanguage = 0; et remplacer le 0 par 4 pour l'avoir automatiquement en français.
- Sauvegardez ce fichier avec l'extension .php
- Transférez-le sur votre site dans le répertoire qui est à protéger.
- Le répertoire à protéger doit avoir un CHMOD 777
- Le fichier générateur de mots de passe htaccess_cod.php doit avoir un CHMOD 775
- Il ne vous reste plus qu'à l'appeler, à répondre simplement aux questions, à introduire un ou plusieurs utilisateur et les deux fichiers htaccess / .htpasswd se génèreront et s'enregistreront automatiquement sur votre serveur.

Remarques :
Pour vos essais
- Le répertoire à protéger doit avoir un CHMOD 777
- Le fichier générateur doit avoir un CHMOD 775
Après essais
- Les fichiers .htaccess et htpasswd doivent avoir un CHMOD 644. C'est fait automatiquement mais une vérification est prudente.
- Pour raison de sécurité, N'oubliez pas d'effacer htaccess_cod.php une fois les fichiers htaccess / .htpasswd générés.
- Certains hébergeurs sous UNIX (Amen, par exemple) demanderont d'ajouter une ligne supplémentaire en début de code du fichier .htaccess
Cette ligne est :
AuthPAM_Enabled off
- Renseignez-vous auprès du vôtre.
Téléchargez le script (http://www.toulouse-renaissance.net/c_outils/htaccess_cod.zip)



source : http://www.toulouse-renaissance.net/c_outils/c_generateur_htaccess.htm





<!-- DEBUT DU SCRIPT GENERATEUR htaccess/htpasswd -->
<!-- Script provenant de http://www.toulouse-renaissance.net/c_outils/ -->
<!-- Copyright Yann d'ALAURY http://www.cyberworker-france.com/ -->
<!-- Utilisation libre de ce script uniquement pour un service gratuit -->
<!-- et à condition de laisser ces commentaires -->
<?php

/**********************/
/* FILE-PERMISSIONS */
/**********************/
/* Directory : 0777 */
/* Script : 0775 */
/**********************/

$adminloginname = "toto"; /*admin de votre choix */
$adminloginpass = "toto"; /* password de votre choix */


/*****************************/
/* Selection Language */
/*****************************/
/* 0 = English (standard) */
/* 1 = German */
/* 2 = Trad. Chinese (BIG 5) */
/* 3 = Brazilian-Portuguese */
/* 4 = French */
/* 5 = Italian */
/* 6 = Spanish */
/* 7 = Japanese (EUC-JP) */
/* 8 = Dutch */
/* 9 = Arabic */
/*****************************/

/* Selection du language, phpaccess démarre avec*/

$standardlanguage = 0;


/*********************/
/* Read-Only */
/*********************/
/* Définition de read only pour les utilisateurs. */
/* Impossible de modifier avec phpaccess! */
/* Attention utilisation sensible cela supprime les deux fichiers"" */

/* note: pour décommenter = supprimer les deux slashes*/

//$readonlyusers[] = "test";
//$readonlyusers[] = "admin";


/***********************/
/* DISABLE Functions */
/***********************/
$disable['deleteall'] = 0; /* positionner sur 1 pour désactiver la fonction 'DeleteAll' */


/***************/
/* CONSTANTS */
/***************/
define("AUTHNAME", "Protected Area");
define("PASSWDFILE", ".htpasswd");
define("ACCESSFILE", ".htaccess");
define("SCRIPTVERSION","1.03");
define("SERVERNAME", getenv("SERVER_NAME"));


/******************/
/* Language-Packs */
/******************/

if (!isset($HTTP_POST_VARS['languageselect'])) {

$languageselect = $standardlanguage;

} else { /* set standard language */

$languageselect = $HTTP_POST_VARS['languageselect'];

} //endif

if($languageselect == 1) { /* German Language Pack */

$languagearray = array (

1 => "Leere Eingabe für 'Passwort' nicht erlaubt.\n",
2 => "Leere Eingabe für 'Benutzer' nicht erlaubt.\n",
3 => "Passwortbestätigung stimmt nicht mit Passwort überein.\n",
4 => "Dieser Benutzer ist schreibgeschützt.\n",
5 => "Keine \"".PASSWDFILE."\"-Datei vorhanden.\n",
6 => "Keine \"".ACCESSFILE."\"-Datei vorhanden.\n",
7 => "Keine Benutzer in \"".PASSWDFILE."\" eingetragen.\n",
8 => "Vorhandene Benutzer erfolgreich eingelesen.\n",
9 => "Noch keine Benutzer vorhanden.\n",
10 => ACCESSFILE."\" erfolgreich erstellt.\n",
12 => "Diese Funktion wurde deaktiviert.\n",
14 => "Passwortschutz deaktiviert.\n",
15 => "Sie haben keine Datei gewählt.\n",
18 => "Upload der Datei ist gescheitert.\n",

16 => "Benutzer \"",
17 => "\" ist bereits vorhanden.\n",

19 => "Löschen von \"",
20 => "\" auf dem Webserver gescheitert - bitte manuell entfernen.\n",

11 => "Erfolgreiches Hinzufügen von \"",
13 => "Erfolgreiches Löschen des Benutzers \"",
21 => "Update des Kennwortes von \"",
22 => "\".\n",

100 => "Status :",
101 => "Server-Information und -Pfad :",
102 => "Vorhandene Benutzer :",
103 => "Neuen Benutzer anlegen :",
104 => "Bestätigung :",
105 => "Passwort ändern :",
106 => "Benutzer löschen :",
107 => "Alle Benutzer löschen :",
108 => "Server:",
109 => "Pfad:",
110 => "Benutzer aus Datei importieren :",
112 => "[ Format: Benutzer,Kennwort ]",
111 => "Datei :",

200 => "Anlegen",
201 => "Ändern",
202 => "Löschen",
203 => "Alle löschen",
204 => "Importieren",

300 => "PHPAccess-Login",
301 => "Login-Name",
302 => "Login-Kennwort",
303 => "Login"

); //endarray

} elseif($languageselect == 2) { /* BIG5 Language Pack */

$languagearray = array (

1 => "??????.\n",
2 => "??????.\n",
3 => "??????.\n",
4 => "??????.\n",
5 => "??? \"".PASSWDFILE."\"?????.\n",
6 => "??? \"".ACCESSFILE."\"?????.\n",
7 => "??? \"".PASSWDFILE."\"?????.\n",
8 => "???????.\n",
9 => "???????.\n",
10 => "??? \"".ACCESSFILE."\"?????.\n",
12 => "????????\n",
14 => "??????????.\n",
15 => "??????.\n",
18 => "??????.\n",

16 => "??? \"",
17 => "\" ????.\n",

19 => "??????? \"",
20 => "\" ?? - ???????.\n",

11 => "?????????? \"",
13 => "?????????? \"",
21 => "?????????? \"",
22 => "\".\n",

100 => "?? :",
101 => "???? & ???? :",
102 => "??????? :",
103 => "?????? :",
104 => "?????? :",
105 => "???? :",
106 => "????????? :",
107 => "??????? :",
108 => "????:",
109 => "????:",
110 => "????????? :",
112 => "[ ??: ??,?? ]",
111 => "?? :",

200 => "??",
201 => "??",
202 => "??",
203 => "????",
204 => "??",

300 => "PHPAccess-??",
301 => "????:",
302 => "????:",
303 => "??"

); //endarray

} elseif($languageselect == 3) {

$languagearray = array (

1 => "Campo não preenchido 'pass' isto não é permitido.\n",
2 => "Campo não preenchido 'user' isto não é permitido.\n",
3 => "Senha e Confirmação não são iguais.\n",
4 => "Este usuário já esta cadastrado.\n",
5 => "Sem \"".PASSWDFILE."\"-arquivo disponivel.\n",
6 => "Sem \"".ACCESSFILE."\"-arquivo disponivel.\n",
7 => "Sem lista de usuários internos \"".PASSWDFILE."\".\n",
8 => "Sucesso em importar os usuários cadastrados.\n",
9 => "Sem usuários cadastrados.\n",
10 => "Criado com sucesso \"".ACCESSFILE."\".\n",
12 => "Esta função está desativada\n",
14 => "Segurança de senha desabilitada.\n",
15 => "Você não selecionou o arquivo.\n",
18 => "Envio do arquivo falhou.\n",

16 => "Usuário \"",
17 => "\" já existe.\n",

19 => "Deletando \"",
20 => "\" no servidor falhou - por favor, remova manualmente.\n",

11 => "Usuário adicionado com sucesso \"",
13 => "Usuário deletado com sucesso \"",
21 => "Senha do usuário alterada com sucesso \"",
22 => "\".\n",

100 => "Status :",
101 => "Informação do Servidor e o caminho padrão :",
102 => "Usuários existentes :",
103 => "Criar novo usuário :",
104 => "Confirmação :",
105 => "Alterar Senha :",
106 => "Usuário existente deletado :",
107 => "Deletar todos usuários :",
108 => "Servidor:",
109 => "Caminho:",
110 => "Importar usuários de um arquivo de texto :",
112 => "[ formatar: usuário,senha ]",
111 => "Arquivo :",

200 => "Criar",
201 => "Alterar",
202 => "Deletar",
203 => "Deletar todos",
204 => "Importar",

300 => "PHPAccess-Login",
301 => "Nome de usuário",
302 => "Senha",
303 => "Entrar"

); //endarray

} elseif($languageselect == 4) { //Français by PM3

$languagearray = array (

1 => "Mot de passe vide non autorisé.\n",
2 => "utilisateur vide non autorisé.\n",
3 => "confirmation du mot de passe non valide.\n",
4 => "Utilisateur en lecture seule.\n",
5 => "Pas de fichier \"".PASSWDFILE."\" disponible.\n",
6 => "Pas de fichier \"".ACCESSFILE."\" disponible.\n",
7 => "Aucun utilisateur dans \"".PASSWDFILE."\".\n",
8 => "Utilisateurs importés avec succés.\n",
9 => "Pas d'utilisateurs disponibles.\n",
10 => "Fichier \"".ACCESSFILE."\" créé avec succés.\n",
12 => "Cette fonction a été désactivée\n",
14 => "Password-safety désactivé.\n",
15 => "Aucun fichier selectionné.\n",
18 => "Problême d'upload.\n",

16 => "L'utilisateur \"",
17 => "\" existe déjà.\n",

19 => "Effacement \"",
20 => "\" sur le serveur non-effectué - Supprimer le fichier manuellement.\n",

11 => "Utilisateur ajouté avec succés \"",
13 => "Utilisateur supprimé avec succés \"",
21 => "Utilisateur mis à jour avec succés \"",
22 => "\".\n",

100 => "Status :",
101 => "Infos sur le serveur :",
102 => "Utilisateurs :",
103 => "Ajouter un utilisateur :",
104 => "Confirmation :",
105 => "Changer le mot de passe :",
106 => "Effacer un utilisateur :",
107 => "Effacer tous les utilisateurs :",
108 => "Serveur:",
109 => "Chemin:",
110 => "Importer depuis un fichier :",
112 => "[ format: user,pass ]",
111 => "Fichier :",

200 => "Créér",
201 => "Changer",
202 => "Effacer",
203 => "Tout effacer",
204 => "Importer",

300 => "PHPAccess-Login",
301 => "Login",
302 => "Mot de passe",
303 => "login"

); //endarray

} elseif($languageselect == 5) { /* Italian Language Pack by Giuseppe Buttafuoco */

$languagearray = array (

1 => "È necessario inserire 'pass'.\n",
2 => "È necessario inserire 'user'.\n",
3 => "Password e conferma password non sono uguali.\n",
4 => "Utente in sola lettura.\n",
5 => "Nessun \"".PASSWDFILE."\"-file disponibile.\n",
6 => "Nessun \"".ACCESSFILE."\"-file disponibile.\n",
7 => "Nessun utente in \"".PASSWDFILE."\".\n",
8 => "Utenti attuali importati con successo.\n",
9 => "Nessun utente disponibile.\n",
10 => "Creato con successo: \"".ACCESSFILE."\".\n",
12 => "Questa funzione è stata disattivata\n",
14 => "Password-sicurezza disabilitata.\n",
15 => "Non hai selezionato il file.\n",
18 => "Upload del file fallito.\n",

16 => "Utente \"",
17 => "\" già esistente.\n",

19 => "Cancellazione \"",
20 => "\" sul webserver fallita - rimuovere manualmente.\n",

11 => "Utente aggiunto con successo \"",
13 => "Utente cancellato con successo \"",
21 => "Password aggiornata con successo \"",
22 => "\".\n",

100 => "Stato :",
101 => "Server-info e posizione attuale :",
102 => "Utenti attuali :",
103 => "Crea un nuovo utente :",
104 => "Conferma :",
105 => "Modifica Password :",
106 => "Cancella utente attuale :",
107 => "Cancella tutti gli utenti :",
108 => "Server:",
109 => "Posizione:",
110 => "Importa utenti da file di testo :",
112 => "[ formato: user,pass ]",
111 => "File :",

200 => "Crea",
201 => "Modifica",
202 => "Cancella",
203 => "Cancella tutti",
204 => "Importa",

300 => "PHPAccess-Login",
301 => "Login-Name",
302 => "Login-Pass",
303 => "login"

); //endarray

} elseif($languageselect == 6) { /* Spanish Language Pack by José Luis Oliveros */

$languagearray = array (

1 => "Campo vacío para 'pass' no es permitido.\n",
2 => "Campo vacío para 'user' no es permitido.\n",
3 => "Contraseña y Confirmación no son iguales.\n",
4 => "Usuario de solo lectura.\n",
5 => "Archivo \"".PASSWDFILE."\"-no disponible.\n",
6 => "Archivo \"".ACCESSFILE."\"-no disponible.\n",
7 => "Sem lista de usuários internos \"".PASSWDFILE."\".\n",
8 => "Usuarios importados satisfactoriamente.\n",
9 => "Sin usuários creados.\n",
10 => "Creado \"".ACCESSFILE."\" satisfactoriamente.\n",
12 => "Esta función está desactivada\n",
14 => "Seguridad de contraseña deshabilitada.\n",
15 => "No se ha selecionado ningún archivo.\n",
18 => "Envío de archivo falló.\n",

16 => "Usuário \"",
17 => "\" ya existe.\n",

19 => "Borrado \"",
20 => "\" en el servidor falló - por favor, borre manualmente.\n",

11 => "Usuário adicionado satisfactoriamente \"",
13 => "Usuário borrado com satisfactoriamente \"",
21 => "Contraseña cambiada satisfactoriamente \"",
22 => "\".\n",

100 => "Estado :",
101 => "Información de Servidor y o ruta :",
102 => "Usuarios existentes :",
103 => "Crear usuário nuevo :",
104 => "Confirmación :",
105 => "Cambiar contraseña :",
106 => "Borrar usuario :",
107 => "Borrar todos los usuarios :",
108 => "Servidor:",
109 => "Ruta:",
110 => "Importar usuários de un archivo texto :",
112 => "[ formato: usuario,contraseña ]",
111 => "Archivo :",

200 => "Crear",
201 => "Modificar",
202 => "Borrar",
203 => "Borrar todos",
204 => "Importar",

300 => "PHPAccess-Login",
301 => "Usuario",
302 => "Contraseña",
303 => "Entrar"

); //endarray

} elseif($languageselect == 7) { /* Japanese Language Pack by Yui Sugawara */

$languagearray = array (

1 => "¥Ñ¥¹¥ï¡¼¥É¤¬ÆþÎϤµ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n",
2 => "¥æ¡¼¥¶¡¼Ì¾¤¬ÆþÎϤµ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n",
3 => "¥Ñ¥¹¥ï¡¼¥É¤È³ÎǧÍѥѥ¹¥ï¡¼¥É¤¬°ìÃפ·¤Þ¤»¤ó¡£\n",
4 => "¤³¤Î¥æ¡¼¥¶¡¼¤ÏÆÉ¤ß¼è¤ê¤Î¤ß¤Ç¤¹¡£\n",
5 => "¤³¤Î \"".PASSWDFILE."\"-file ¤Ï»ÈÍѤǤ*¤Þ¤»¤ó¡£\n",
6 => "¤³¤Î \"".ACCESSFILE."\"-file ¤Ï»ÈÍѤǤ*¤Þ¤»¤ó¡£\n",
7 => "\"".PASSWDFILE."\"¤Ë¥æ¡¼¥¶¡¼¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n",
8 => "¥æ¡¼¥¶¡¼¤¬Àµ¾ï¤Ë¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤Þ¤·¤¿¡£\n",
9 => "¸½ºßÍøÍѲÄǽ¤Ê¥æ¡¼¥¶¡¼¤Ï¤¤¤Þ¤»¤ó¡£\n",
10 => "\"".ACCESSFILE."\"¤ÏÀµ¾ï¤ËÄɲ䵤ì¤Þ¤·¤¿¡£\n",
12 => "¤³¤Îµ¡Ç½¤Ï̵¸ú¤Ë¤Ê¤ê¤Þ¤·¤¿¡£\n",
14 => "¥Ñ¥¹¥ï¡¼¥É¤¬°ÂÁ´¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n",
15 => "¥Õ¥¡¥¤¥ë¤ò¤ªÁª¤Ó²¼¤µ¤¤¡£\n",
18 => "¥Õ¥¡¥¤¥ë¤Î¥¢¥Ã¥×¥í¡¼¥É¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£\n",

16 => "¥æ¡¼¥¶¡¼ \"",
17 => "\"´û¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\n",

19 => "¾Ãµî¤·¤Þ¤¹¡£\"",
20 => "\" ¥¦¥§¥Ö¥µ¡¼¥Ð¡¼¾å¤Ç¼ºÇÔ¤·¤Þ¤·¤¿¡£ - ¼êư¤Çºï½ü¤·¤Æ¤¯¤À¤µ¤¤¡£\n",

11 => "¥æ¡¼¥¶¡¼¤ÎÅÐÏ¿¤¬´°Î»¤·¤Þ¤·¤¿¡£ \"",
13 => "¥æ¡¼¥¶¡¼¤Îºï½ü¤¬´°Î»¤·¤Þ¤·¤¿¡£ \"",
21 => "¤³¤Î¥æ¡¼¥¶¡¼¤Î¥Ñ¥¹¥ï¡¼¥É¹¹¿·¤¬´°Î»¤·¤Þ¤·¤¿¡£ \"",
22 => "\".\n",

100 => "¥¹¥Æ¡¼¥¿¥¹ :",
101 => "¥µ¡¼¥Ð¡¼¾ðÊó ¤È¸½ºß¤Î¥Ñ¥¹ :",
102 => "´û¸¤Î¥æ¡¼¥¶¡¼ :",
103 => "¿·µ¬¥æ¡¼¥¶¡¼ :",
104 => "¥Ñ¥¹¥ï¡¼¥É³Îǧ :",
105 => "¥Ñ¥¹¥ï¡¼¥É¹¹¿· :",
106 => "´û¸¤Î¥æ¡¼¥¶¡¼¤òºï½ü :",
107 => "Á´¤Æ¤Î¥æ¡¼¥¶¡¼¤òºï½ü :",
108 => "¥µ¡¼¥Ð¡¼:",
109 => "¥Ñ¥¹:",
110 => "¥Æ¥*¥¹¥È·Á¼°¤Î¥æ¡¼¥¶¡¼¤ò¥¤¥ó¥Ý¡¼¥È¤¹¤ë¡£ :",
112 => "[ ½é´ü²½: user,pass ]",
111 => "¥Õ¥¡¥¤¥ë :",

200 => "ºîÀ®",
201 => "¹¹¿·",
202 => "ºï½ü",
203 => "Á´¤Æºï½ü",
204 => "¥¤¥ó¥Ý¡¼¥È",

300 => "PHPAccess¤Ø¥í¥°¥¤¥ó",
301 => "¥í¥°¥¤¥ó̾",
302 => "¥Ñ¥¹¥ï¡¼¥É",
303 => "¥í¥°¥¤¥ó"

); //endarray

} elseif($languageselect == 8) { /* Dutch Language Pack by Grossard Werner, http://www.bstart.be */

$languagearray = array (

1 => "Lege invoer voor 'pass' is niet toegelaten.\n",
2 => "Lege invoer voor 'user' is niet toegelaten.\n",
3 => "Wachtwoord en bevestiging zijn niet hetzelfde.\n",
4 => "Deze gebruiker is Alleen-lezen.\n",
5 => "Geen \"".PASSWDFILE."\"-bestand beschikbaar.\n",
6 => "Geen \"".ACCESSFILE."\"-bestand beschikbaar.\n",
7 => "Geen gebruiker lijst in \"".PASSWDFILE."\".\n",
8 => "Succesvol huidige gebruikers ingevoerd.\n",
9 => "Geen huidige gebruikers beschikbaar.\n",
10 => "Succesvol \"".ACCESSFILE."\" aangemaakt.\n",
12 => "Deze functie is uitgeschakeld\n",
14 => "Wachtwoord beveiliging uitgeschakeld.\n",
15 => "U hebt geen bestand geselecteerd.\n",
18 => "Upload van bestand is mislukt.\n",

16 => "Gberuiker \"",
17 => "\" bestaat al.\n",

19 => "Verwijderen \"",
20 => "\" op de webserver mislukt - verwijder het manueel a.u.b.\n",

11 => "Succesvol gebruiker toegevoegd \"",
13 => "Succesvol gebruiker verwijderd \"",
21 => "Succesvol gebruiker wachtwoord gewijzigd \"",
22 => "\".\n",

100 => "Status :",
101 => "Server-info en huidig pad:",
102 => "Bestaande Gebruikers :",
103 => "Nieuwe gebruiker aanmaken :",
104 => "Bevestiging :",
105 => "Wijzig Wachtwoord:",
106 => "Verwijder bestaande gebruikers :",
107 => "Verwijder alle gebruikers :",
108 => "Server:",
109 => "Pad:",
110 => "Gebruikers uit tekstbestand importeren :",
112 => "[ formaat: gebruiker,wachtwoord ]",
111 => "Bestand :",

200 => "Aanmaken",
201 => "Wijzigen",
202 => "Verwijderen",
203 => "Verwijder Alles",
204 => "Importeren",

300 => "PHPAccess-Inloggen",
301 => "Login-Naam",
302 => "Login-Wachtwoord",
303 => "login"

); //endarray

} elseif($languageselect == 9) { /* Arabic Language Pack by amry */

$languagearray = array (

1 => "áã ÊÏÎá ÈíÇäÇÊ Ýí ÍÞá ÇáÈÇÓæÑÏ ÛíÑ ãÓãæÍ ÈÉ.\n",
2 => "áã ÊÏÎá Çí ÈíÇäÇÊ Ýí ÍÞá ÇÓã ÇáãÓÊÎÏã ÛíÑ ãÓãæÍ ÈÉ.\n",
3 => "ÊÇßíÏ ßáãÉ ÇáÓÑ ÛíÑ ãÊæÇÝÞ ãÚ ßáãÉ ÇáÓÑ ÇáÇÓÇÓíÉ.\n",
4 => "åÐÇ ÇáãÓÊÎÏã íÓãÍ áÉ ÈÇ áÞÑÇÆÉ ÝÞØ.\n",
5 => "áÇ íæÌÏ \"".PASSWDFILE."\"-ãáÝ ãÊæÝÑ.\n",
6 => "áÇíæÌÏ \"".ACCESSFILE."\"-ãáÝ ãÊæÝÑ.\n",
7 => "áÇ íæÌÏ ÇÓãÇÁ ãÓÊÎÏãíä ãÊæÝÑ Ýí \"".PASSWDFILE."\".\n",
8 => "Êã ÈäÌÇÍ ÇÓÊÑÌÇÚ ÇáÈÇß ÇÈ ááãÓÊÎÏãíä.\n",
9 => "áÇ íæÌÏ ÇÓãÇÁ ãÓÊÎÏãíä ÍÊì ÇáÇä.\n",
10 => "Êã ÈäÌÇÍ ÇäÔÇÁ \"".ACCESSFILE."\".\n",
12 => "åÐÉ ÇáÎÇÕíÉ Êã ÇáÛÇÆåÇ ãä ÞÈÇ ÇáãÔÑÝ ÇáÚÇã\n",
14 => "ÇáÍãÇíÉ áßÇãÉ ÇáÓÑ ÛíÑ ãÝÚáÉ Çí áÇ ÊÚãá.\n",
15 => "áã ÊÎÊÇÑ ÇÓã ãáÝ.\n",
18 => "ÝÔá Ýí ÑÝÚ ÇáãáÝ.\n",

16 => "ÇáãÓÊÎÏã \"",
17 => "\" íæÌÏ áÏíäÇ åÐÇ ÇáÇÓã ßãÓÊÎÏã ÈÑÌÇÁ ÊÛíÑÉ.\n",

19 => "ãÓÍ \"",
20 => "\" ÚäÏ ÝÔá ÇáãÓÊÚÑÖ Ýí ãÓÍ ÇáãáÝ ÈÑÌÇÁ ãÓÍÉ íÏæíÇ ãä ÇáÇÝÊÈí.\n",

11 => "Êã ÈäÌÇÍ ÇÖÇÝÉ ÇáãÓÊÎÏã \"",
13 => "Êã ÈäÌÇÍ ãÓÍ ÇÓã åÐÇ ÇáãÓÊÎÏã \"",
21 => "Êã ÈäÌÇÍ ÊÛíÑ ßáãÉ ÇáÓÑ ááãÓÊÎÏã\"",
22 => "\".\n",

100 => "ÇáæÖÚ ÇáÍÇáì :",
101 => "ÈíÇäÇÊ ÇáÓíÑÝÑ æÇáãßÇä ÇáãæÌæÏ ÈÉ :",
102 => "ÇÓãÇÁ ÇáãÓÊÎÏãíä ÇáÍÇáíä :",
103 => "ÇäÔÇÁ ÇÓã ãÓÊÎÏã ÌÏíÏ :",
104 => "ÊÇßíÏ :",
105 => "ÛíÑ ßáãÉ ÇáÓÑ :",
106 => "ãÓÍ ÇÓãÇÁ ÇáãÓÎÏã ÇáÍÇáí :",
107 => "ãÓÍ ÇÓãÇÁ ßá ÇáãÓÊÎÏãíä :",
108 => "ÇáÓíÑÝÑ ÇáÎÇÕ Èß:",
109 => "ÇáãßÇä:",
110 => "ÇÓÊÑÌÚ ãä ãáÝ äÕì txt :",
112 => "[ ÇáÔßá Óíßæä: ÇáãÓÊÎÏã,ßáãÉ ÇáÓÑ ]",
111 => "File :",

200 => "ÇäÔÇÁ",
201 => "ÊÍÏíË",
202 => "ãÓÍ",
203 => "ãÓÍ ÇáÌãíÚ",
204 => "ÇÓÊÑÌÇÚ áÈíÇäÇÊ Çæ ÇÖÇÝÉ ãä",

300 => "PHPAccess-ÕÝÍÉ ÏÎæá",
301 => "ÇáãÓÊÎÏã",
302 => "ßáãÉ ÇáÓÑ",
303 => "ÇÏÎá ÇáÇä"

); //endarray

} else { /* English Language Pack (=standard) */

$languagearray = array (

1 => "Empty input for 'pass' isn't allowed.\n",
2 => "Empty input for 'user' isn't allowed.\n",
3 => "Pass and confirmation aren't equal.\n",
4 => "This user is read-only.\n",
5 => "No \"".PASSWDFILE."\"-file available.\n",
6 => "No \"".ACCESSFILE."\"-file available.\n",
7 => "No user listed in \"".PASSWDFILE."\".\n",
8 => "Successfully imported current users.\n",
9 => "No current users available.\n",
10 => "Successfully created \"".ACCESSFILE."\".\n",
12 => "This function has been deactivated\n",
14 => "Password-safety disabled.\n",
15 => "You didn't select a file.\n",
18 => "Upload of file failed.\n",

16 => "User \"",
17 => "\" already exists.\n",

19 => "Deleting \"",
20 => "\" on the webserver failed - please remove it manually.\n",

11 => "Successfully added user \"",
13 => "Successfully deleted user \"",
21 => "Successfully updated pass of user \"",
22 => "\".\n",

100 => "Status :",
101 => "Server-info and current path :",
102 => "Existing users :",
103 => "Create new user :",
104 => "Confirmation :",
105 => "Update Password :",
106 => "Delete existing user :",
107 => "Delete all users :",
108 => "Server:",
109 => "Path:",
110 => "Import users from textfile :",
112 => "[ format: user,pass ]",
111 => "File :",

200 => "Create",
201 => "Update",
202 => "Delete",
203 => "Delete all",
204 => "Import",

300 => "PHPAccess-Login",
301 => "Login-Name",
302 => "Login-Pass",
303 => "login"

); //endarray

} // endif


/*************/
/* VARIABLES */
/*************/

$status = "";

$existingusers = getusers($status);

$newusers = "";

$language_array[0] = "English";
$language_array[1] = "Deutsch";
$language_array[2] = "Traditional Chinese (BIG-5)";
$language_array[3] = "Brazilian Portuguese";
$language_array[4] = "French";
$language_array[5] = "Italian";
$language_array[6] = "Spanish";
$language_array[7] = "Japanese (EUC-JP)";
$language_array[8] = "Dutch";
$language_array[9] = "Arabic";

if (!isset($PHP_SELF)) { $PHP_SELF = $_SERVER['PHP_SELF']; } /* if register_globals = Off (in php.ini) */

/********************/
/* FUNCTIONS */
/********************/

function getusers(&$status) {

global $languagearray;

if (file_exists(PASSWDFILE)){ /* .htpasswd existiert im Verzeichnis */

$fp = fopen(PASSWDFILE, "r");

while ($zeile = fgets($fp, 4096)) { /* htpasswd zeilenweise einlesen */

ereg ("(.*)(:)(.*)", $zeile, $passelements); /* Zeile in User, ":", Pass zerlegen */

$singleuser = $passelements[1];
$singlepass = $passelements[3];

$users[] = array('user' => $singleuser, 'pass' => $singlepass);

} //endwhile

fclose ($fp);

clearstatcache();

if (file_exists(PASSWDFILE) and filesize(PASSWDFILE)<3) { /* Passwortdatei < 3 Byte */

$status .= $languagearray[7];

disablepasses($status);

return false;

} //endif

$status .= $languagearray[8];

return $users;

} else { /* htpasswd existiert NICHT im Verzeichnis */

$status .= $languagearray[9];

return false; /* FALSE, wenn keine .htpasswd-Datei */

} //endif

$useranz = count ($users); /* Benutzer-Anzahl bestimmen */

if ($useranz == 0) {

$status .= $languagearray[7];

return false; /* FALSE, wenn keine Benutzer definiert */

} //endif

} //EndOfFunction


function importcommaseparateddata($textfile, $textfile_name, &$status, &$newusers, $existingusers) {

global $languagearray;

if($textfile=="none" OR $textfile=="") { //No file selected

$status .= $languagearray[15];

} else { /* File was selected correctly */

if(move_uploaded_file ($textfile, "./".$textfile_name)==true) { /* Upload okay */

createhtaccess($status); /* .htaccess anlegen */

$textfilehandle = fopen ($textfile_name, "r"); /* open transferred textfile */

while ($data = fgetcsv ($textfilehandle, 1000, ",")) { /* read and parse commaseparated data */

$newuser = $data[0];
$newpass = $data[1];

if (checkimports($newuser, $newpass, $status, $existingusers) == true) { /* Importierte Daten prüfen */

adduser($newuser, $newpass, $status, $newusers); /* Userinfo in $newusers ablegen */

} //endif

} //endwhile

createhtpasswd($newusers, $status, $existingusers); /* user in .htpasswd eintragen */

fclose ($textfilehandle);

if(unlink($textfile_name)==false ) {

$status .= $languagearray[19].$textfile_name.$languagearray[20];

} //endif


} else {

$status .= $languagearray[18];

} //endif


} //endif

} //EndOfFunction


function checkupdates($updatepass, $updatepass2, &$status)
{

global $languagearray;

if ($updatepass == ""){

$status .= $languagearray[1];

return false;

} //endif

if ($updatepass2 != $updatepass) { /* Passwortbestätigung scheitert */

$status .= $languagearray[3];

return false;

} //endif

return true;

} //EndOfFunction


function checkimports($newuser, $newpass, &$status, $existingusers)
{

global $languagearray;

$users = $existingusers;

if ($newuser == "") { /* kein Benutzer eingegeben */

$status .= $languagearray[2];

return false;

} //endif

if ($newpass == "") { /* kein Passwort eingegeben */

$status .= $languagearray[1];

return false;

} //endif

if(is_array($users)) {

while (list($key, $singleuser) = each($users)) {

if ($singleuser['user'] == $newuser){ /* Benutzer schon vorhanden */

$status .= $languagearray[16].$newuser.$languagearray[17];

return false;

} //endif

} //endwhile

} //endif

return true;

} //EndOfFunction


function checkinputs($newuser, $newpass, $newpass2, &$status, &$existingusers) /* Benutzereingaben prüfen */
{

global $languagearray;

$users = $existingusers;

if ($newuser == "") { /* kein Benutzer eingegeben */

$status .= $languagearray[2];

return false;

} //endif

if ($newpass == "") { /* kein Passwort eingegeben */

$status .= $languagearray[1];

return false;

} //endif

if ($newpass2 != $newpass) { /* Passwortbestätigung scheitert */

$status .= $languagearray[3];

return false;

} //endif

if (is_array($users))
{

while (list($key, $singleuser) = each($users)) {

if ($singleuser['user'] == $newuser){ /* Benutzer schon vorhanden */

$status .= $languagearray[16].$newuser.$languagearray[17];

return false;

} //endif

} //endwhile

} //endif

return true;

} //EndOfFunction


function checkfiles(&$status)
{

global $languagearray;

if (!file_exists(PASSWDFILE)){ /* .htpasswd existiert nicht */

$status .= $languagearray[5];

} //endif

if (!file_exists(ACCESSFILE)){ /* .htaccess existiert nicht */

$status .= $languagearray[6];

} //endif

if (file_exists(PASSWDFILE) and filesize(PASSWDFILE)<3) { /* .htpasswd < 3 Byte */

$status .= $languagearray[7];

disablepasses($status);

} //endif

} //EndOfFunction


function getpath(&$status)
{

global $languagearray;

$rawpath = getcwd();

$path = strtr($rawpath, "\\", "/");

return $path;

} //EndOfFunction


function parsepathforoutput($path) {

$path = str_replace ("/", " / ", $path);

Return $path;

} //EndOfFunction


function createhtaccess(&$status) {

global $languagearray;

if (!file_exists(ACCESSFILE)){ /* .htaccess existiert nicht, muss angelegt werden */

$path = getpath($status);

$htaccess = "AuthName \"".AUTHNAME."\"\n";
$htaccess.= "AuthType Basic\n";
$htaccess.= "AuthUserFile ".$path."/.htpasswd\n";
$htaccess.= "require valid-user";

$filehandle = fopen(ACCESSFILE, "w");

fputs($filehandle, $htaccess);

fclose($filehandle);

$status .= $languagearray[10];

} //endif

} //EndOfFunction


function createhtpasswd(&$newusers, &$status, &$existingusers) {

global $languagearrray;

$filehandle = fopen(PASSWDFILE, "a");

fputs ($filehandle, $newusers);

fclose($filehandle);

$existingusers = getusers($status, 1);

} //EndOfFunction


function adduser($user, $pass, &$status, &$newusers) {

global $languagearray;

$cryptedpass = crypt($pass);

$newline = $user.":".$cryptedpass."\n";

$newusers .= $newline;

$status .= $languagearray[11].$user.$languagearray[22];

} //EndOfFunction


function updatepass($user2update, $newpass, &$status, &$existingusers) {

global $languagearray;

$pwfilecontent = "";

$users = $existingusers;

$filehandle = fopen(PASSWDFILE, "w"); /* Passwortdatei öffnen */

while (list($key, $singleuser) = each($users)){

if ($singleuser['user'] != $user2update) { /* Pass dieses Benutzers soll nicht geändert werden */

$pwfilecontent .= $singleuser['user'].":".$singleuser['pass'];

} else { /* Pass des aktuellen Benutzers soll geändert werden */

$cryptedpass = crypt($newpass);

$pwfilecontent .= $singleuser['user'].":".$cryptedpass."\n"; /* neues PW eintragen */

} //endif

} //endwhile

fputs ($filehandle, $pwfilecontent);

fclose($filehandle);

$status .= $languagearray[21].$user2update.$languagearray[22];

} //EndOfFunction


function deleteuser($user2delete, &$status, &$existingusers)
{

global $languagearray;

$users = $existingusers;

$filehandle = fopen(PASSWDFILE, "w"); /* Passwortdatei öffnen */

$pwfilecontent = "";

while (list($key, $singleuser) = each($users)){

if ($singleuser['user'] != $user2delete) { /* User soll nicht gelöscht werden */

$pwfilecontent .= $singleuser['user'].":".$singleuser['pass'];

} //endif

} //endwhile

fputs ($filehandle, $pwfilecontent);

fclose($filehandle);

$status .= $languagearray[13].$user2delete.$languagearray[22];

} //EndOfFunction


function printuserscombobox($boxname, $cssclass, $width, &$existingusers) {

global $status;

$users = $existingusers;

echo "<select name='$boxname' size='1' class='$cssclass' width='$width'>";

while(list(,$singleuser) = each($users)) {

print ("<option value='".$singleuser['user']."'>".$singleuser['user']."</option>");

} //endwhile

echo "</select>";

} //EndOfFunction


function printoptionbox($boxname, $cssclass, $elementsarray, $kataktiv=1) {

echo "<select name='$boxname' class='$cssclass'>";

while (list($key,$value) = each($elementsarray)) {

if ($key == $kataktiv) { /* Kategorie ist aktiv */

$SELECTED = "SELECTED";

} else {

$SELECTED = "";

} //endif

echo "<option $SELECTED value='$key'>$value</option>";

} //endwhile

echo "</select>";

} //EndOfFunction


function disablepasses(&$status)
{

global $languagearray;

if (file_exists(ACCESSFILE)) {

chmod (ACCESSFILE, 0777);
clearstatcache();
unlink(ACCESSFILE);

} //endif

if (file_exists(PASSWDFILE)) {

chmod (PASSWDFILE, 0777);
clearstatcache();
unlink(PASSWDFILE);

} //endif

$status .= $languagearray[14];

} //EndOfFunction

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>PHPAccess <?php echo SCRIPTVERSION; ?> on <?php echo SERVERNAME; ?></title>

<?php

/* Zeichensatz für die Darstellung auswählen */

if($languageselect == 2) { /* BIG5 */

echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=big5\">";

} elseif($languageselect == 7) { /* EUC-JP */

echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">";

} elseif($languageselect == 9) { /* Arabic */

echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-6\">";

} else { /* europäisch */

echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">";

} //endif

?>

<style type="text/css">
<!--
.headline { font-family: Arial, Helvetica, sans-serif; font-size: 24px; font-weight: bold; color: #FFFFFF}
.arial2bold { font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; color: #000000 }
.arial12 { font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; color: #000000 }
.inputwidth150 { font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; color: #000000 ; width: 150px; border : 1px solid black}
.arial12weiss { font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; color: #FFFFFF; font-style: normal; text-decoration: none}

BODY {
scrollbar-face-color: #999999;
scrollbar-highlight-color: white;
scrollbar-shadow-color: white;
scrollbar-3dlight-color: #CCCCCC;
scrollbar-arrow-color: white;
scrollbar-track-color: white;
scrollbar-darkshadow-color: #CCCCCC;
}

.languageselect {
font-family: Arial, Helvetica, sans-serif; font-size: 10px; font-weight: normal; color: #000000; width: 205px; border: 1px solid black
}

.inputwidth200 {
font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; color: #000000 ; width: 200px; scrollbar-face-color: #999999; scrollbar-highlight-color: white; scrollbar-shadow-color: white; scrollbar-3dlight-color: #CCCCCC; scrollbar-arrow-color: white; scrollbar-track-color: white; scrollbar-darkshadow-color: #CCCCCC; border : 1px solid black
}

.inputwidth300 {
font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; color: #000000 ; width: 305px; scrollbar-face-color: #999999; scrollbar-highlight-color: white; scrollbar-shadow-color: white; scrollbar-3dlight-color: #CCCCCC; scrollbar-arrow-color: white; scrollbar-track-color: white; scrollbar-darkshadow-color: #CCCCCC; border : 1px solid black
}

.submitbutton {
font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #999999; color : white; border : 1px solid black; width: 80px
}
.arial10weiss { font-family: Arial, Helvetica, sans-serif; font-size: 10px; font-weight: normal; color: #FFFFFF}
.arial2boldweiss { font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; color: #FFFFFF}

-->
</style>

<script language="JavaScript" type="text/JavaScript">
function InputKeypress() {
if ("13" == window.event.keyCode) return false;
}
</script>

</head>

<body bgcolor="#CCCCCC" text="#000000" link="#FFFFFF" scroll="auto" leftmargin="10" topmargin="10" vlink="#FFFFFF" alink="#FFFFFF" marginwidth="10" marginheight="10">

<?php

/**********************/
/* ADMIN-LOGIN */
/**********************/
if (isset($HTTP_POST_VARS['loginname'])) { $loginname = $HTTP_POST_VARS['loginname']; }
if (isset($HTTP_POST_VARS['loginpass'])) { $loginpass = $HTTP_POST_VARS['loginpass']; }

$logok = FALSE;

if(isset($loginname) AND isset($loginpass)) {

if(($loginname == $adminloginname) AND ($loginpass == $adminloginpass)) {

$logok = TRUE;

} //endif

} //endif

if($logok == false) {

?>

<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%">
<tr>
<td valign="middle" align="center">
<form name="adminlogin" method="post" action="<?php echo $PHP_SELF; ?>">
<table width="300" border="0" cellspacing="0" cellpadding="6" align="center" bgcolor="#999999">
<tr>
<td>
<table width="300" border="0" cellspacing="0" cellpadding="2" align="center" bgcolor="#FFFFFF">
<tr>
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-weight: bold; color: #FFFFFF" bgcolor="#666666" width="300" align="center">
<?php echo $languagearray[300]; ?>
</td>
</tr>
<tr>
<td height="20" bgcolor="#999999" class="arial10weiss"> </td>
</tr>
<tr>
<td height="20" bgcolor="#999999" class="arial10weiss">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="arial10weiss" width="60">Language:</td>
<td class="arial10weiss" width="210"><?php printoptionbox("languageselect", "languageselect", $language_array, $kataktiv=$languageselect); ?></td>
<td class="arial10weiss" align="right" width="30">
<input type="submit" name="languageselectsubmit" value="OK" width="30" style= "width: 30px; font-size:10px" class="submitbutton">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="20" bgcolor="#999999" class="arial10weiss"> </td>
</tr>
<tr>
<td height="20">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000000" bgcolor="#CCCCCC" width="300" valign="middle">
<?php echo $languagearray[301]; ?>
</td>
<td class="arial2boldweiss" bgcolor="#CCCCCC" width="300" valign="middle" align="right">
<input type="text" name="loginname" class="inputwidth150">
</td>
</tr>
<tr>
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000000" bgcolor="#CCCCCC" valign="middle">
<?php echo $languagearray[302]; ?>
</td>
<td class="arial12" bgcolor="#CCCCCC" valign="middle" align="right">
<input type="password" name="loginpass" class="inputwidth150">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="20" bgcolor="#999999" align="right">
<input type="submit" name="loginsubmit" value="<?php echo $languagearray[303]; ?>" width="80" class="submitbutton">
</td>
</tr>
<tr>
<td class="arial12weiss" bgcolor="#999999" align="center" valign="bottom" height="30">
<table width="100%" border="0" cellspacing="0" cellpadding="2" height="15">
<tr>
<td class="arial12weiss" align="center" bgcolor="#666666">PhP-Access
by <a href="http://www.cyberworker-france.com/" class="arial12weiss" style="text-decoration: underline">CW-internet</a></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>

<?php

} //endif

if($logok==true) :

/************************/
/* PROGRAMMABLAUF */
/************************/

if (isset($HTTP_POST_VARS['importtextfilesubmit'])) { /* Schaltfläche IMPORT wurde aktiviert */

importcommaseparateddata($HTTP_POST_FILES['textfile']['tmp_name'], $HTTP_POST_FILES['textfile']['name'], $status, $newusers, $existingusers);

} //endif


if (isset($HTTP_POST_VARS['delusersubmit'])) { /* Schaltfläche DELETE wurde gedrückt */

if (isset($readonlyusers) AND is_array($readonlyusers) AND in_array($HTTP_POST_VARS['delusroptionbox'], $readonlyusers)) {

$status .= $languagearray[4];

} else {

deleteuser($HTTP_POST_VARS['delusroptionbox'],$status, $existingusers);

} //endif

} //endif


if (isset($HTTP_POST_VARS['updatepasssubmit'])) { /* Schaltfläche UPDATE wurde gedrückt */

if (isset($readonlyusers) AND is_array($readonlyusers) AND in_array($HTTP_POST_VARS['updatepassoptionbox'], $readonlyusers)) {

$status .= $languagearray[4];

} else { //Benutzer ist NICHT schreibgeschützt

if (checkupdates($HTTP_POST_VARS['updatepass'],$HTTP_POST_VARS['updatepass2'],$status) == true) { /* Benutzereingaben prüfen */

updatepass($HTTP_POST_VARS['updatepassoptionbox'], $HTTP_POST_VARS['updatepass'], $status, $existingusers);

} //endif

} //endif

} //endif


if (isset($HTTP_POST_VARS['newpasssubmit'])) { /* Schaltfläche CREATE wurde gedrückt */

if (checkinputs($HTTP_POST_VARS['newuser'],$HTTP_POST_VARS['newpass'],$HTTP_POST_VARS['newpass2'],$status, $existingusers) == true) { /* Benutzereingaben prüfen */

createhtaccess($status); /* .htaccess anlegen */

adduser($HTTP_POST_VARS['newuser'],$HTTP_POST_VARS['newpass'], $status, $newusers); /* Userinfo in $newusers ablegen */

createhtpasswd($newusers, $status, $existingusers); /* user in .htpasswd eintragen */

} //endif

} //endif


if (isset($HTTP_POST_VARS['disablepassessubmit'])) { /* Schaltfläche DISABLE wurde gedrückt */

if($disable['deleteall'] != 1) { /* deleteall ist NICHT deaktiviert */

disablepasses($status); /* ht...-files löschen */

$existingusers = getusers($status);

} //endif

} //endif


if (isset($existingusers) AND is_array($existingusers) AND count($existingusers)>0) {/* Benutzer sind vorhanden */

$currentusers = true; /* Benutzer vorhanden */

} else {

$currentusers = false; /* Keine Benutzer vorhanden */

} //endif

checkfiles($status); /* Existenz von ht...-files prüfen */


/****************************/
/* Graphical User Interface */
/****************************/

?>

<form enctype="multipart/form-data" name="form1" method="post" action="<?php echo $PHP_SELF; ?>">
<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%" align="center">
<tr>
<td align="center" valign="middle">
<table width="300" border="0" cellspacing="0" cellpadding="6" align="center" bgcolor="#999999">
<tr>
<td>
<table width="300" border="0" cellspacing="0" cellpadding="2" align="center" bgcolor="#FFFFFF">
<tr>
<td class="headline" bgcolor="#666666" width="300" align="center">phpaccess
<?php echo SCRIPTVERSION; ?>
</td>
</tr>
<tr>
<td height="20" bgcolor="#CCCCCC">
<input type="hidden" name="loginname" value="<?php echo($loginname); ?>">
<input type="hidden" name="loginpass" value="<?php echo($loginpass); ?>">
</td>
</tr>
<tr>
<td height="20" bgcolor="#999999">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="arial10weiss" width="60">Language:</td>
<td class="arial10weiss" width="210">
<?php printoptionbox("languageselect", "languageselect", $language_array, $kataktiv=$languageselect); ?>
</td>
<td class="arial10weiss" align="right" width="30">
<input type="submit" name="languageselectsubmit2" value="OK" width="30" style= "width: 30px; font-size:10px" class="submitbutton">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="20" bgcolor="#CCCCCC"> </td>
</tr>
<tr>
<td height="20">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="arial12weiss" bgcolor="#999999" width="300" valign="middle">
<?php echo $languagearray[100]; ?>
</td>
</tr>
<tr>
<td class="arial12" bgcolor="#CCCCCC" valign="middle" align="center">
<textarea name="statusbox" rows="4" class="inputwidth300" width="305"><?php echo trim($status); ?></textarea>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="20" bgcolor="#CCCCCC"> </td>
</tr>
<tr>
<td class="arial2bold">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="arial12weiss" bgcolor="#999999" width="300" valign="middle">
<?php echo $languagearray[101]; ?>
</td>
</tr>
<tr>
<td class="arial12" bgcolor="#CCCCCC" valign="middle">
<table width="100%" border="0" cellspacing="2" cellpadding="0">
<tr align="left" valign="top">
<td class="arial12" width="75">
<?php echo $languagearray[108]; ?>
</td>
<td class="arial12">
<?php echo SERVERNAME; ?>
</td>
</tr>
<tr align="left" valign="top">
<td class="arial12">
<?php echo $languagearray[109]; ?>
</td>
<td class="arial12">
<?php echo parsepathforoutput(getpath($status)); ?>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="arial2bold" width="20" bgcolor="#CCCCCC"> </td>
</tr>
<?php

if ( $currentusers == true ) { /* User sind vorhanden */

?>
<tr>
<td class="arial2bold">
<table width="100%" border="0" cellspacing="0" cellpadding="2" name="currentuserstable">
<tr bgcolor="#CCCCCC">
<td class="arial12weiss" width="300" bgcolor="#999999" valign="middle">
<?php echo $languagearray[102]; ?>
</td>
</tr>
<tr>
<td class="arial12" bgcolor="#CCCCCC" valign="middle" align="center">
<?php

$useranz = count($existingusers);

if ($useranz<=4) {

$textareaheight = $useranz;

} else {

$textareaheight = 4;

}

$textareauserlist = "";

while (list($key, $singleuser) = each($existingusers)) {

$textareauserlist .= $singleuser['user']."\n";

} //endwhile

$textareauserlist = trim($textareauserlist); /* Spaces am Ende entfernen */

?>
<textarea name="userbox" rows="<?php echo $textareaheight; ?>" class="inputwidth300" width="300"><?php echo $textareauserlist; ?></textarea>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="arial2bold" bgcolor="#CCCCCC"> </td>
</tr>
<?php

} // endif

?>
<tr>
<td class="arial2bold">
<table width="100%" border="0" cellspacing="0" cellpadding="2" name="newusertable">
<tr bgcolor="#999999" valign="middle">
<td class="arial12weiss">
<?php echo $languagearray[103]; ?>
</td>
<td class="arial2boldweiss"> </td>
</tr>
<tr bgcolor="#CCCCCC" valign="middle" align="center">
<td class="arial2bold">user </td>
<td class="arial2bold">pass </td>
</tr>
<tr bgcolor="#CCCCCC" valign="middle">
<td class="arial12">
<input type="text" name="newuser" value="user" class="inputwidth150" WIDTH="150" ONKEYPRESS="return InputKeypress();">
</td>
<td class="arial12" align="right">
<input type="password" name="newpass" class="inputwidth150" WIDTH="150" ONKEYPRESS="return InputKeypress();">
</td>
</tr>
<tr bgcolor="#CCCCCC" valign="middle">
<td class="arial12" align="right">
<?php echo $languagearray[104]; ?>
</td>
<td class="arial12" align="right">
<input type="password" name="newpass2" class="inputwidth150" WIDTH="150" ONKEYPRESS="return InputKeypress();">
</td>
</tr>
<tr bgcolor="#CCCCCC" valign="middle">
<td> </td>
<td align="right" class="arial12">
<input type="submit" name="newpasssubmit" value="<?php echo $languagearray[200]; ?>" WIDTH="80" class="submitbutton">
</td>
</tr>
</table>
</td>
</tr>
<?php

if ( $currentusers == true ) { /* User sind vorhanden */

?>
<tr>
<td class="arial12" height="20" bgcolor="#CCCCCC"> </td>
</tr>
<tr>
<td class="arial12" height="20">
<table width="100%" border="0" cellspacing="0" cellpadding="2" name="newusertable">
<tr bgcolor="#999999" valign="middle">
<td class="arial12weiss">
<?php echo $languagearray[105]; ?>
</td>
<td class="arial2boldweiss"> </td>
</tr>
<tr bgcolor="#CCCCCC" valign="middle" align="center">
<td class="arial2bold">user </td>
<td class="arial2bold">pass </td>
</tr>
<tr bgcolor="#CCCCCC" valign="middle">
<td class="arial12">
<?php printuserscombobox("updatepassoptionbox", "inputwidth150", 150, $existingusers); ?>
</td>
<td class="arial12" align="right">
<input type="password" name="updatepass" class="inputwidth150" ONKEYPRESS="return InputKeypress();">
</td>
</tr>
<tr bgcolor="#CCCCCC" valign="middle">
<td class="arial12" align="right">
<?php echo $languagearray[104]; ?>
</td>
<td class="arial12" align="right">
<input type="password" name="updatepass2" class="inputwidth150" ONKEYPRESS="return InputKeypress();">
</td>
</tr>
<tr bgcolor="#CCCCCC" valign="middle">
<td class="arial12"> </td>
<td align="right" class="arial12">
<input type="submit" name="updatepasssubmit" value="<?php echo $languagearray[201]; ?>" WIDTH="80" class="submitbutton">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="arial12" height="20" bgcolor="#CCCCCC"> </td>
</tr>
<?php

} //endif


if ( $currentusers == true ) { /* User sind vorhanden */

?>
<tr>
<td class="arial12">
<table width="100%" border="0" cellspacing="0" cellpadding="2" name="deleteusertable">
<tr bgcolor="#999999" valign="middle">
<td class="arial12weiss" width="300">
<?php echo $languagearray[106]; ?>
</td>
<td class="arial2boldweiss" width="300"> </td>
</tr>
<tr valign="middle">
<td class="arial12" bgcolor="#CCCCCC" align="left">
<?php printuserscombobox("delusroptionbox", "inputwidth200", 200, $existingusers); ?>
</td>
<td class="arial12" bgcolor="#CCCCCC" align="right">
<input type="submit" name="delusersubmit" value="<?php echo $languagearray[202]; ?>" WIDTH="80" class="submitbutton">
</td>
</tr>
</table>
</td>
</tr>
<?php

} //endif

?>
<tr>
<td class="arial12" height="20" bgcolor="#CCCCCC"> </td>
</tr>
<tr>
<td class="arial2bold">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr valign="middle" bgcolor="#999999">
<td class="arial12weiss">
<?php echo $languagearray[110]; ?>
</td>
<td class="arial2boldweiss" align="right">
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr bgcolor="#CCCCCC" valign="middle">
<td class="arial12" align="center">
<input name="textfile" type="file" class="arial12" style="width: 305px; border : 1px solid black;">
</td>
</tr>
<tr valign="middle" bgcolor="#CCCCCC">
<td class="arial2boldweiss" align="right">
<input type="submit" name="importtextfilesubmit" value="<?php echo $languagearray[204]; ?>" width="80" class="submitbutton">
</td>
</tr>
</table>
</td>
</tr>
<?php

if($disable['deleteall'] != 1) {

?>
<tr>
<td class="arial12" height="20" bgcolor="#CCCCCC"> </td>
</tr>
<tr>
<td class="arial2bold">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr valign="middle" bgcolor="#999999">
<td class="arial12weiss">
<?php echo $languagearray[107]; ?>
</td>
<td class="arial2boldweiss" align="right">
<input type="submit" name="disablepassessubmit" value="<?php echo $languagearray[203]; ?>" WIDTH="80" class="submitbutton">
</td>
</tr>
</table>
</td>
</tr>
<?php

} //endif

?>
<tr>
<td class="arial12weiss" bgcolor="#CCCCCC" align="center" valign="bottom" height="30">
<table width="100%" border="0" cellspacing="0" cellpadding="2" height="15">
<tr>
<td class="arial12weiss" align="center" bgcolor="#666666">PhPAccess
by <a href="http://www.cyberworker-francer.com/">CW-Internet</a></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>

<?php

endif;

?>

</body>
</html>
<!-- FIN DU SCRIPT GENERATEUR htaccess/htpasswd -->

Nba13
01/09/2006, 10h13
Salut,
Dans cette ligne :
AuthUserFile /home/xxxxxxxxxxxx/xxxxxxxxx/.htpasswd

Où doit commencer le lien ? svp
/forum/Admincp/.htacces

OU
Je sais pas autre chose car l'exemple précédent en fonctionne pas.

Le lien de mon forum pour plus de détail sur le lien : http://www.pcconsoles.tonsite.biz/forum/

Merci d'avance de votre aide. :)

sony
01/09/2006, 21h27
logiuement ça dois commencer par home, donc

/home/h*ttp://ton adresse/

ensuite tu ajoute suivant l'emplacement ou tu veux le mettre, pour admincp ça donnerait

/home/h*ttp://ton adresse/forum/admincp/.htpasswd ;)

Allan
01/09/2006, 22h00
Change l'endroit du fichier.htpasswd également ;)

Ne le met pas au même endroit que l'autre fichier.

Nba13
11/09/2006, 21h09
J'ai suivi tous vos conseils et tous ceux de mon hebergeur et ça fonctionnent toujours pas. :S

Nicolas
19/12/2006, 13h37
voila ma question est peut etre bete, mais je vous la pause, voila j'ai realiser mon .htaccess sa marche bien, mais j'aurai voulu savoir comment est il possible de faire un renvoi sur une page d'erreur perso en cas de mauvais code .

(http://windows-Unattended.fr/erreur/Autorisation.htm)

Netsurfer
19/12/2006, 14h05
Change l'endroit du fichier.htpasswd également ;)

Ne le met pas au même endroit que l'autre fichier.

On le met où alors l'autre fichier? Et si on en a plusieurs différents?

D3s3rT
20/12/2006, 14h26
Bon moi, j'ai mis mon login et pass, ca marche bien et tt mais quand je veux ajouté un autre user, ca veux pas marche ? pk ?

j'ai rien dis c'est bon :)

Allan
20/12/2006, 16h23
Bon moi, j'ai mis mon login et pass, ca marche bien et tt mais quand je veux ajouté un autre user, ca veux pas marche ? pk ?

j'ai rien dis c'est bon :)
Ca devrait fonctionner :p

Tu peux nous montrer ce que tu a mis stp ? (en changeant les log et pass bien sur ^^)

Nicolas
20/12/2006, 17h10
Et pour moi:blush2: :blush2:

Pas eu ma solution:p

Allan
20/12/2006, 18h06
Et pour moi:blush2: :blush2:

Pas eu ma solution:p
Voici un dossier complet (http://www.commentcamarche.net/apache/apacht.php3) sur les htaccess ;)

Nicolas
20/12/2006, 20h04
Merci Allan j'ai la solution a mon probleme, joyeux noel a toi et ton equipe

Allan
20/12/2006, 20h16
Merci Allan j'ai la solution a mon probleme, joyeux noel a toi et ton equipe
De rien, merci à toi aussi ;)

Netsurfer
20/12/2006, 21h41
On le met où alors l'autre fichier? Et si on en a plusieurs différents?

Je me permet de reposer ma question.

Allan
20/12/2006, 22h48
Je me permet de reposer ma question.
Tu le met ou tu souhaite ^^

Je te conseille de créer un dossier a l'intérieur d'un dossier existant, et d'y mettre se fichier, renome le dossier créer de facon "anodine", pour ne pas attirer l'attention vers ce dossier et ce qui contient.

Rikle_S
25/01/2007, 13h52
C'est le 4e tuto sur lequel j'espers faire un hta, et non...je n'y arrive toujours pas :/

neodenis
01/02/2007, 23h14
besoin d'un petit t'aide ! voila j'ai ceci comme erreur

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

et je tape mon login et mots pass il ne trouve pas !!!

que faire ? merci de votre reponse

Oum Aïcha
26/12/2007, 11h28
Ca marche mais j'ai un problème, et ce, avec tous les htacess : je rentre le bon mdp + login, mais ça me redemande à chaque fois de taper mdp + login, ça revient en arrière quoi !


jai exactement le meme problem. j'ai verifier le chemin et il est correcte, comment remedier a ce probleme?

merci