Inscription dans .htpasswd depuis formulaire php

Bonjour !
je suis ici pour que vous tentiez, SVP de résoudre mon problème : le voici.

J’ai protégé un répertoire de mon site grace à .htaccess et .htpasswd et je souhaiterais que les utilisateurs puissent s’inscrire via un formulaire qui enverait le pseudo et le mot de passe dans le fichier .htpasswd et à l’e-mail de l’inscrit.

Je suppose que l’on peut faire cela avec PHP mais je suis encore un peu dans les choux avec ce langage.

Merci !

Tu peux écrire à la fin du fichier oui… (fopen, fwrite, fclose ou file_put_contents sous PHP 5) et envoyer le mail si tu veux.
Le tout, ce sera de bien gérer les erreurs parce qu’écrire dans un fichier de configuration c’est toujours sensible.

merci pour ta réponse !

mais je ne sais pas à quoi tu fais allusion avec toutes ces balises, car je vais à peine de mettre un pied dans la programation php. Ne pourrais tu pas m’expliquer et/ou me faire un petit bout de code.

merci

Genre:

<?php
if (!isset($_POST['user']) || !isset($_POST['pwd'])) {
  echo 'erreur : pas d\'utilisateur', "\n";
} elseif (false === ( $fp = fopen('.htpasswd', 'ab'))) {
  echo 'erreur : impossible d\'ouvrir le fichier', "\n";
} else {
  // + encodage du mot de passe
  fprintf($fp, '%s:%s' . "\n", $_POST['user'], $_POST['pwd']);
  fclose($fp);
  echo 'succès: Sans-Nom, tu es trop un chef!', "\n";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  login: <input type="text" name="user" />
  password: <input type="password" name="pwd" />
  <input type="submit" />
</form>

Ca devrait faire l’affaire pour la base. Pour le reste, faut crypter le mot de passe sinon ça passe pas…

merci, ça marche !
à propos du cryptage, j’ai un code pour crypter les mots de passe :


<p>
<?php
if (isset($_POST['login']) AND isset($_POST['pass']))
{
    $login = $_POST['login'];
    $pass_crypte = crypt($_POST['pass']); // On crypte le mot de passe

    echo 'Ligne à copier dans le .htpasswd :<br />' . $login . ':' . $pass_crypte;
}

else // On n'a pas encore rempli le formulaire
{
?>
</p>

<p>Entrez votre login et votre mot de passe pour le crypter.</p>

<form method="post">
    <p>
        Login : <input type="text" name="login"><br />
        Mot de passe : <input type="text" name="pass"><br /><br />
    
        <input type="submit" value="Crypter !">
    </p>
</form>

<?php
}
?>

mais je ne sais pas comment dire a ton code d’utiliser pour rentrer le mot de passe dans le fichier .htaccess

merci !

Remplace juste $_POST[‘pass’] par crypt($_POST[‘pass’]) dans le code de Sans-Nom.

merci mais je ne trouve pas $_POST[‘pass’]

pourrait-tu me l’indiquer ? STP

pwd pardon.

<?php
if (!isset($_POST['user']) || !isset($_POST['pwd'])) {
 echo 'erreur : pas d\'utilisateur', "\n";
} elseif (false === ( $fp = fopen('.htpasswd', 'ab'))) {
 echo 'erreur : impossible d\'ouvrir le fichier', "\n";
} else {
 // + encodage du mot de passe
 fprintf($fp, '%s:%s' . "\n", $_POST['user'], crypt($_POST['pwd']));
 fclose($fp);
 echo 'succès: Sans-Nom, tu es trop un chef!', "\n";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
 login: <input type="text" name="user" />
 password: <input type="password" name="pwd" />
 <input type="submit" />
</form>

Merci, ça marche !
est-ce possible d’en envoyer une copie à l’e-mail "adresse@123.com" en appuyant sur ce même bouton ?

Merci !

PS: désolé de poser toutes ces questions mais je suis plus que débutant en la matière mais grace à vous, j’apprends petit à petit les balises,…

Merci !

Oui, voir fonction mail() sur php.net.

ok, je vais voir ! merci

Juste une précision, on ne parle pas de balise en PHP ni dans d’autres langages impératifs, on parle de fonctions dans ce cas.

alors le concept c’est quoi ? permettre aux gens d’accéder a une partie du site censée être privée ? :neutre:

pour aller plus vite tu devrais plutôt utiliser system et appeller htpasswd2 -b /path/to/file user password

:clap: s’il y a une méthode à retenir, c’est celle-ci !

Bonjour !
excusez-moi pour le délai de réponse.
j’ai cherché pour la fonction mail() mais je n’arrive pas à la mettre en place sur le bouton. Merci !

PS: A benj c’est quoi htpasswd2 -b /path/to/file user password ? merci!

c’est une commande système.

Bonjour !

Merci !
mais personne ne peux m’aider en ce problème ?
comment envoyer le résultat du formulaire à mon e-mail : anonymous@anonym.net
et l’inscrire en plus dans le fichier .htpasswd en le cryptant ?

Merci !

Regarde du côté de la fonction mail(), et de la fonction system() …

Sinon tu peux faire un système qui va demander à avoir l’accès, et t’enverras un mail avec les paramètres voir la commande à éxécuter.
Edité le 03/06/2007 à 23:13

merci,
mais je suis débutant en php,
et j’ai beau chercher,
à aucun endroit, on explique comment mettre ces fonction en plus,
pour qu’elles se déclenche par un clic sur le bouton.
J’ai bien trouver un petit bout de code pour envoyer un email mais je ne sais pas comment le mettre :
le voici ->

<?php mail('email_destinataire', 'sujet', 'message'); ?>

et voici le code de ma page,

<?php if (!isset($_POST['user']) || !isset($_POST['pwd'])) { echo 'erreur : pas d\'utilisateur', "\n"; } elseif (false === ( $fp = fopen('/home/f/l/o/florent73/.htpasswd', 'ab'))) { echo 'erreur : impossible d\'ouvrir le fichier', "\n"; } else { // + encodage du mot de passe fprintf($fp, '%s:%s' . "\n", $_POST['user'], crypt($_POST['pwd'])); fclose($fp); echo 'succès: Sans-Nom, tu es trop un chef!', "\n"; } ?>

login:

password:

 

Merci de m’aider !

Tu es débutant certes, mais tu sais lire quand même… si tu n’as pas la moindre idée en lisant le code qu’on t’a écrit, on n’y peut pas plus hein :slight_smile: