Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
doc /
apache2-doc /
manual /
fr /
programs /
Delete
Unzip
Name
Size
Permission
Date
Action
ab.html
22.33
KB
-rw-r--r--
2026-06-12 05:08
apachectl.html
13.82
KB
-rw-r--r--
2026-06-12 05:08
apxs.html
22.02
KB
-rw-r--r--
2026-06-12 05:08
configure.html
42.83
KB
-rw-r--r--
2026-06-12 05:08
dbmmanage.html
14.76
KB
-rw-r--r--
2026-06-12 05:08
fcgistarter.html
6.52
KB
-rw-r--r--
2026-06-12 05:08
htcacheclean.html
16.8
KB
-rw-r--r--
2026-06-12 05:08
htdbm.html
22.29
KB
-rw-r--r--
2026-06-12 05:08
htdigest.html
9.57
KB
-rw-r--r--
2026-06-12 05:08
htpasswd.html
23.64
KB
-rw-r--r--
2026-06-12 05:08
httpd.html
13.59
KB
-rw-r--r--
2026-06-12 05:08
httxt2dbm.html
8.18
KB
-rw-r--r--
2026-06-12 05:08
index.html
8.64
KB
-rw-r--r--
2026-06-12 05:08
log_server_status.html
6.41
KB
-rw-r--r--
2026-06-12 05:08
logresolve.html
7.28
KB
-rw-r--r--
2026-06-12 05:08
other.html
5.22
KB
-rw-r--r--
2026-06-12 05:08
rotatelogs.html
20.99
KB
-rw-r--r--
2026-06-12 05:08
split-logfile.html
6.21
KB
-rw-r--r--
2026-06-12 05:08
suexec.html
6.94
KB
-rw-r--r--
2026-06-12 05:08
Save
Rename
<!DOCTYPE html SYSTEM "about:legacy-compat"> <html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta content="width=device-width, initial-scale=1" name="viewport"> <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX This file is generated from xml source: DO NOT EDIT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --> <title>htpasswd - Gestion des fichiers d'utilisateurs pour l'authentification de base - Serveur HTTP Apache Version 2.4</title> <link href="../../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet"> <link href="../../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size"> <link href="../../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../../style/css/prettify.css"> <script src="../../style/scripts/prettify.min.js"> </script> <link href="../../images/favicon.png" rel="shortcut icon"></head> <body id="manual-page"><div id="page-header"> <p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p> <p class="apache">Serveur HTTP Apache Version 2.4</p> <img alt="" src="../../images/feather.png"></div> <div class="up"><a href="./index.html"><img title="<-" alt="<-" src="../../images/left.gif"></a></div> <div id="path"> <a href="https://www.apache.org/">Apache</a> > <a href="https://httpd.apache.org/">Serveur HTTP</a> > <a href="https://httpd.apache.org/docs/">Documentation</a> > <a href="../index.html">Version 2.4</a> > <a href="./index.html">Programmes</a></div><div id="page-content"><div id="preamble"><h1>htpasswd - Gestion des fichiers d'utilisateurs pour l'authentification de base</h1> <button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button> <div class="toplang"> <p><span>Langues Disponibles: </span><a href="../../en/programs/htpasswd.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../../fr/programs/htpasswd.html" title="Français"> fr </a> | <a href="../../ko/programs/htpasswd.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | <a href="../../tr/programs/htpasswd.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> </div> <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> permet de créer et de maintenir les fichiers textes où sont stockés les noms d'utilisateurs et mots de passe pour l'authentification de base des utilisateurs HTTP. Si <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> rencontre un problème d'accès à un fichier, que ce soit pour écrire dans le fichier de sortie, ou pour lire le fichier d'entrée dans le but de le mettre à jour, il renvoie un code d'erreur et n'effectue aucune modification.</p> <p>Il est possible de limiter l'accès aux ressources du serveur HTTP Apache aux seuls utilisateurs présents dans les fichiers créés par <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. Ce programme ne sait gérer les noms d'utilisateurs et mots de passe que s'ils sont stockés dans des fichiers textes. Il peut cependant hasher et afficher les mots de passe à des fins d'utilisation dans d'autres types de bases de données. Pour utiliser une base de données DBM, voir le programme <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code> ou <code class="program"><a href="../programs/htdbm.html">htdbm</a></code>.</p> <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> hashe les mots de passe en utilisant soit bcrypt, une version de MD5 modifiée pour Apache, soit SHA1, soit la routine <code>crypt()</code> du système. Les hashes basés sur SHA-2 (SHA-256 et SHA-512) sont supportés pour <code>crypt()</code>. Les fichiers gérés par <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> peuvent contenir deux types de mots de passe ; certaines entrées peuvent contenir des mots de passe hashés en MD5 ou bcrypt, alors que d'autres entrées du même fichier contiendront des mots de passe hashés avec <code>crypt()</code>.</p> <p>Cette page de manuel ne décrit que les arguments de la ligne de commande. Pour plus de détails à propos des directives nécessaires à la configuration de l'authentification des utilisateurs dans <code class="program"><a href="../programs/httpd.html">httpd</a></code>, voir le manuel Apache qui est fourni avec la distribution ou peut être consulté à <a href="http://httpd.apache.org">http://httpd.apache.org/</a>.</p> </div> <div id="quickview"><ul id="toc"><li><img alt="" src="../../images/down.gif"> <a href="#synopsis">Syntaxe</a></li> <li><img alt="" src="../../images/down.gif"> <a href="#options">Options</a></li> <li><img alt="" src="../../images/down.gif"> <a href="#exit">Valeur renvoyée</a></li> <li><img alt="" src="../../images/down.gif"> <a href="#examples">Exemples</a></li> <li><img alt="" src="../../images/down.gif"> <a href="#security">Considérations à propos de sécurité</a></li> <li><img alt="" src="../../images/down.gif"> <a href="#restrictions">Restrictions</a></li> <li><img alt="" src="../../images/down.gif"> <a href="#files">Fichiers</a></li> </ul><h3>Voir aussi</h3><ul class="seealso"><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li><li><code class="program"><a href="../programs/htdbm.html">htdbm</a></code></li><li>Les scripts fournis avec la distibution d'Apache et situés dans support/SHA1.</li></ul></div> <div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="synopsis">Syntaxe <a title="Lien permanent" href="#synopsis" class="permalink">¶</a></h2> <p><code><strong>htpasswd</strong> [ -<strong>c</strong> ] [ -<strong>i</strong> ] [ -<strong>m</strong> | -<strong>B</strong> | -<strong>2</strong> | -<strong>5</strong> | -<strong>d</strong> | -<strong>s</strong> | -<strong>p</strong> ] [ -<strong>r</strong> <var>rounds</var> ] [ -<strong>C</strong> <var>cost</var> ] [ -<strong>D</strong> ] [ -<strong>v</strong> ] <var>fichier-mots-de-passe</var> <var>nom-utilisateur</var></code></p> <p><code><strong>htpasswd</strong> -<strong>b</strong> [ -<strong>c</strong> ] [ -<strong>m</strong> | -<strong>B</strong> | -<strong>2</strong> | -<strong>5</strong> | -<strong>d</strong> | -<strong>s</strong> | -<strong>p</strong> ] [ -<strong>r</strong> <var>rounds</var> ] [ -<strong>C</strong> <var>cost</var> ] [ -<strong>D</strong> ] [ -<strong>v</strong> ] <var>fichier-mots-de-passe</var> <var>nom-utilisateur</var> <var>mot-de-passe</var></code></p> <p><code><strong>htpasswd</strong> -<strong>n</strong> [ -<strong>i</strong> ] [ -<strong>m</strong> | -<strong>B</strong> | -<strong>2</strong> | -<strong>5</strong> | -<strong>d</strong> | -<strong>s</strong> | -<strong>p</strong> ] [ -<strong>r</strong> <var>rounds</var> ] [ -<strong>C</strong> <var>cost</var> ] <var>nom-utilisateur</var></code></p> <p><code><strong>htpasswd</strong> -<strong>nb</strong> [ -<strong>m</strong> | -<strong>B</strong> | -<strong>2</strong> | -<strong>5</strong> | -<strong>d</strong> | -<strong>s</strong> | -<strong>p</strong> ] [ -<strong>r</strong> <var>rounds</var> ] [ -<strong>C</strong> <var>cost</var> ] <var>nom-utilisateur</var> <var>mot-de-passe</var></code></p> </div><div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="options">Options <a title="Lien permanent" href="#options" class="permalink">¶</a></h2> <dl> <dt><code>-b</code></dt> <dd>Utilise le mode batch ; c'est à dire, extrait le mot de passe de la ligne de commande au lieu de le demander à l'opérateur. Cette option doit être utilisée avec la plus grande prudence, car <strong>le mot de passe est visible en clair</strong> dans la ligne de commande. Pour utiliser un script, voir l'option <code>-i</code>. Disponible à partir de la version 2.4.4 du serveur HTTP Apache.</dd> <dt><code>-i</code></dt> <dd>Lit le mot de passe depuis stdin sans vérification (à utiliser dans les scripts).</dd> <dt><code>-c</code></dt> <dd>Crée le <var>fichier-mots-de-passe</var>. Si <var>fichier-mots-de-passe</var> existe déjà, il est réécrit et tronqué. Cette option ne peut pas être combinée avec l'option <code>-n</code>.</dd> <dt><code>-n</code></dt> <dd>Affiche le résultat du traitement sur la sortie standard au lieu de mettre à jour le fichier. Ceci peut s'avérer utile pour générer des enregistrements de mots de passe qu'Apache pourra utiliser à des fins d'inclusion dans des fichiers de données au format autre que texte. Cette option modifie la syntaxe de la ligne de commande, car l'argument <var>fichier-mots-de-passe</var> (en général le premier) est omis. Elle ne peut pas être combinée avec l'option <code>-c</code> option.</dd> <dt><code>-m</code></dt> <dd>Utilise le hashage MD5 pour les mots de passe. C'est le comportement par défaut (depuis la version 2.2.18).</dd> <dt><code>-2</code></dt> <dd>Utilise des hashes basés sur SHA-256 <code>crypt()</code> pour les mots de passe. Supporté par la plupart des plateformes de style Unix.</dd> <dt><code>-5</code></dt> <dd>Utilise des hashes basés sur SHA-512 <code>crypt()</code> pour les mots de passe. Supporté par la plupart des plateformes de style Unix.</dd> <dt><code>-B</code></dt> <dd>Utilise bcrypt pour hasher les mots de passe. c'est un algorythme de chiffrement actuellement considéré comme sûr.</dd> <dt><code>-C</code></dt> <dd>Ce drapeau n'est autorisé qu'en conjonction avec le drapeau <code>-B</code> (hashage bcrypt). Il permet de définir la durée de traitement pour l'algorytme bcrypt (plus elle est longue, meilleure sera la sécurité, mais inférieure la rapidité). La valeur par défaut est 5 et les valeurs autorisées vont de 4 à 17.</dd> <dt><code>-r</code></dt> <dd>Ce drapeau n'est autorisé qu'en combinaison avec un des drapeaux <code>-2</code> ou <code>-5</code>. Il permet de définir le nombre de passes de hash utilisées pour l'algorithme SHA-2 (plus ce nombre est élevé, plus la sécurité est élevée, mais plus les performances se dégradent ; la valeur par défaut est 5000).</dd> <dt><code>-d</code></dt> <dd>Utilise le hashage <code>crypt()</code> pour les mots de passe. Cette option n'est pas supportée par le serveur <code class="program"><a href="../programs/httpd.html">httpd</a></code> sous Windows ou Netware. Cet algorithme limite la longueur des mots de passe à 8 caractères ; il est considéré comme <strong>non sur</strong> du point de vue des standards actuels. C'était l'algorithme par défaut jusqu'à la version 2.2.17.</dd> <dt><code>-s</code></dt> <dd>Utilise le hashage SHA-1 (160 bits) pour les mots de passe. Facilite la migration vers/depuis les serveurs Netscape qui utilisent le format LDAP Directory Interchange (ldif). Cet algorithme est considéré comme <strong>non sur</strong> du point de vue des standards actuels.</dd> <dt><code>-p</code></dt> <dd>Enregistre les mots de passe en clair. Bien que <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> supporte la création des mots de passe en clair sur toutes les plates-formes, le démon <code class="program"><a href="../programs/httpd.html">httpd</a></code> n'accepte les mots de passe en clair que sous Windows et Netware.</dd> <dt><code>-D</code></dt> <dd>Supprime un utilisateur, sous réserve qu'il existe dans le fichier spécifié par htpasswd.</dd> <dt><code>-v</code></dt> <dd>Vérifie si le mot de passe fourni correspond au mot de passe de l'utilisateur enregistré dans le fichier de mots de passe spécifié. Disponible à partir de la version 2.4.5 du serveur HTTP Apache.</dd> <dt><code><var>fichier-mots-de-passe</var></code></dt> <dd>Le nom du fichier contenant les noms d'utilisateurs et mots de passe. Avec l'option <code>-c</code>, le fichier est créé s'il n'existe pas, ou réécrit et tronqué s'il existe déjà.</dd> <dt><code><var>nom-utilisateur</var></code></dt> <dd>Le nom d'utilisateur à créer ou mettre à jour dans le <var>fichier-mots-de-passe</var>. Si <var>nom-utilisateur</var> n'existe pas, une nouvelle entrée est ajoutée. Dans le cas contraire, le mot de passe est modifié.</dd> <dt><code><var>mot-de-passe</var></code></dt> <dd>Le mot de passe en clair et destiné à être hashé puis stocké dans le fichier. Cet argument ne s'utilise qu'avec l'option <code>-b</code>.</dd> </dl> </div><div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="exit">Valeur renvoyée <a title="Lien permanent" href="#exit" class="permalink">¶</a></h2> <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> renvoie 0 ("true") si le nom d'utilisateur et le mot de passe ont été enregistrés ou mis à jour avec succès dans le <var>fichier-mots-de-passe</var>. <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> renvoie <code>1</code> s'il a rencontré un problème d'accès aux fichiers, <code>2</code> si la ligne de commande comportait une erreur de syntaxe, <code>3</code> si le mot de passe entré interactivement ne correspondait pas au nom d'utilisateur, <code>4</code> si l'opération a été interrompue, <code>5</code> si une valeur était trop longue (nom-utilisateur, nom-fichier, mot-de-passe, ou l'enregistrement résultant), <code>6</code> si le nom d'utilisateur contenait des caractères illégaux (voir la section <a href="#restrictions">Restrictions</a>), et <code>7</code> si le fichier spécifié n'était pas un fichier de mots de passe valide.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="examples">Exemples <a title="Lien permanent" href="#examples" class="permalink">¶</a></h2> <div class="example"><p><code> htpasswd /usr/local/etc/apache/.utilisateurs-htpasswd jsmith </code></p></div> <p>Ajoute ou modifie le mot de passe de l'utilisateur <code>jsmith</code>. Le mot de passe est demandé à l'opérateur. Le mot de passe sera hashé en utilisant l'algorithme MD5 modifié pour Apache. Si le fichier spécifié n'existe pas, <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> renverra un code d'erreur.</p> <div class="example"><p><code> htpasswd -c /home/doe/public_html/.htpasswd jane </code></p></div> <p>Crée un nouveau fichier de mots de passe et y enregistre une entrée pour l'utilisateur <code>jane</code>. Le mot de passe est demandé à l'opérateur. Si le fichier existe et ne peut être ni lu ni écrit, il n'est pas modifié et <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> affichera un message et renverra un code d'erreur.</p> <div class="example"><p><code> htpasswd -db /usr/web/.htpasswd-tous jones Pwd4Steve </code></p></div> <p>Chiffre le mot de passe spécifié dans la ligne de commande (<code>Pwd4Steve</code>) en utilisant l'algorithme <code>crypt()</code>, et le stocke dans le fichier spécifié.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="security">Considérations à propos de sécurité <a title="Lien permanent" href="#security" class="permalink">¶</a></h2> <p>Les fichiers de mots de passe Web comme ceux que gère <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> ne doivent <em>pas</em> être situés dans l'espace d'URI du serveur Web -- en d'autres termes, il ne doit pas être possible d'y accéder à partir d'un navigateur.</p> <p>En tant qu'exécutable setuid, ce programme n'est pas sûr, et il ne faut par conséquent <em>pas</em> lui attribuer de permissions setuid.</p> <p>L'utilisation de l'option <code>-b</code> est déconseillée, car avec elle, les mots de passe apparaissent en clair dans la ligne de commande.</p> <p>Notez qu'avec l'algorithme <code>crypt()</code>, seuls les huit premiers caractères du mot de passe spécifié sont pris en compte. Si le mot de passe spécifié est plus long, les caractères supplémentaires sont ignorés.</p> <p>Le format de hashage SHA-1 n'utilise pas d'amorçage aléatoire (salting) : à un mot de passe donné correspond une seule représentation hashée. Les formats <code>crypt()</code> et MD5 permutent la représentation en la préfixant par une chaîne d'amorce aléatoire, afin de rendre les attaques de mots de passe à base de dictionnaires plus difficiles.</p> <p>Les algorithmes de chiffrement SHA-1 et <code>crypt()</code> sont considérés comme <strong>non surs</strong> du point de vue des standards actuels.</p> <p>Les algorithmes de chiffrement SHA-2 (SHA-256 et SHA-512) sont supportés par la plupart des systèmes de style Unix modernes et respectent la spécification <a href="https://www.akkadia.org/drepper/SHA-crypt.txt">https://www.akkadia.org/drepper/SHA-crypt.txt</a>.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="restrictions">Restrictions <a title="Lien permanent" href="#restrictions" class="permalink">¶</a></h2> <p>Sur les plates-formes Windows, la taille des mots de passe hashés avec <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> est limitée à <code>255</code> caractères. Les mots de passe dont la taille est supérieure seront tronqués.</p> <p>L'algorithme MD5 utilisé par <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> est spécifique à Apache ; les mots de passe hashés en utilisant cet algorithme seront inutilisables sur d'autres serveurs Web.</p> <p>La taille des noms d'utilisateurs est limitée à <code>255</code> octets et ceux-ci ne doivent pas contenir de caractère <code>:</code>.</p> <p>Le coût en performances de la génération de la valeur de hashage d'un mot de passe bcrypt augmente avec le nombre de passes spécifié par l'option <code>-C</code>. A partir de sa version <code>1.6.0</code>, la bibliothèque <code>apr-util</code> limite le nombre de passes à 17.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../../images/up.gif"></a></div> <div class="section"> <h2 id="files">Fichiers <a title="Lien permanent" href="#files" class="permalink">¶</a></h2> <p>Le chemin du fichier des mots de passe est spécifié en tant qu’argument de la ligne de commande et il peut correspondre à n’importe quel emplacement du système de fichiers.</p> <dl> <dt><var>fichier des mots de passe</var></dt> <dd>Le fichier plat contenant les noms utilisateur et les mots de passe. Il peut contenir des lignes vides et des lignes de commentaire commençant par un (<code>#</code>).</dd> </dl> </div></div> <div class="bottomlang"> <p><span>Langues Disponibles: </span><a href="../../en/programs/htpasswd.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../../fr/programs/htpasswd.html" title="Français"> fr </a> | <a href="../../ko/programs/htpasswd.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | <a href="../../tr/programs/htpasswd.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> </div><div id="footer"> <p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autorisé sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> <p class="menu"><a href="../mod/index.html">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!-- if (typeof(prettyPrint) !== 'undefined') { prettyPrint(); } var langToggle = document.querySelector('.lang-toggle'); var topLang = document.querySelector('.toplang'); if (langToggle && topLang) { langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); }); } var qv = document.getElementById('quickview'); if (qv) { document.body.appendChild(qv); var qvBtn = document.createElement('button'); qvBtn.className = 'qv-toggle'; qvBtn.setAttribute('aria-label', 'Toggle page navigation'); qvBtn.innerHTML = '☰'; document.body.appendChild(qvBtn); qvBtn.addEventListener('click', function() { var isOpen = qv.classList.toggle('open'); if (isOpen) { qv.style.top = window.scrollY + 10 + 'px'; } }); window.addEventListener('scroll', function() { qv.classList.remove('open'); }); } //--><!]]></script> </body></html>