Page 1 sur 1
Ecriture dans un .htpasswd
Posté : 30 mai 2013, 17:58
par nathan
Je voudrais écrire une sorti de formulaire en l'ocurence un pseudo et un mot de passe dans un fichier .htpasswd. Cependant il m'en est impossible car celui-ci n'est pas un fichier texte.
Le code php est le suivant:
<?php
$pseudo = $_POST['login'];
$pass = $_POST['pass'];
$pass_crypte = crypt($_POST['pass']); //cryptage du pass
$File = 'hobs.txt'; // <-----ligne du fichier (emplacement)
$Mode = 'a';
$Content = $pseudo .':'. $pass_crypte."\r\n";
$fp=fopen($File, $Mode);
$w = fwrite($fp,$Content);
if(!empty($w)){
echo "Ligne écrite. Merci!";
} else {
echo "Erreur Fatale";
}
fclose($fp);
?>
J'aimerai remplace le fichier hobs.txt par .htpasswd. Je sais deja qu'il faut renommer le fichier .htpasswd en texte pour ensuite l'ouvrir puis le refermer et le renommer en .htpasswd
Merci de votre aide
Re: Ecriture dans un .htpasswd
Posté : 30 mai 2013, 21:12
par moogli
salut,
tous fichier peux être considéré comme texte.
le truc c'est p'tet surement que tu n'a pas le droit de le modifier ?
regarde le chmod (rw pour tout le monde) si tu souhaite pouvoir le modifier.
@+
Re: Ecriture dans un .htpasswd
Posté : 31 mai 2013, 13:59
par nathan
Personne ne peut m'aider a ce sujet ?
Re: Ecriture dans un .htpasswd
Posté : 31 mai 2013, 14:15
par ghost5922
Bonjour,
tu as deja le code
<?php
$pseudo = $_POST['login'];
$pass = crypt($_POST['pass']);
$File = '.htpasswd'; // <-----ligne du fichier (emplacement)
$Content = $pseudo .':'. $pass."\n";
$fp=fopen($File, "a+");
$w = fwrite($fp,$Content);
if(!empty($w)){
echo "Ligne écrite. Merci!";
} else {
echo "Erreur Fatale";
}
fclose($fp);
?>
Re: Ecriture dans un .htpasswd
Posté : 31 mai 2013, 14:37
par nathan
Merci pour vos réponses j'ai effectivement regarder. En réfléchissant je voudrai aussi mettre un code de vérification préalablement donné. Exemple:156
Dans mon formulaire j'ai mis:
<form name="Inscription" enctype="multipart/form-data" method="post" action="Pages/redirections_php/inscription.php">
<input type="hidden" name="verif_pass" value="22061998"/> <!-- Ligne de vérification du code 156 -->
<table>
<tr><td>Pseudo:*</td>
<td><input type="text" name="login" size=30/></td></tr>
<tr><td>Mot de passe:*</td>
<td><input type="password" name="pass" size=30/></td></tr>
<tr><td>Code Administrateur:</td>
<td><input type="text" name="pass_adm" size=30/></td></tr> <!-- Ligne ou l'utilisateur doit rentrer le bon code -->
</table>
<br> <input type=submit value=Inscription> -
<input type=reset value=Annuler>
</form>
En rajoutant les propriétés dans mon php j'obtiens:
<?php
$pseudo = $_POST['login'];
$pass = $_POST['pass'];
$passadm = $_POST['pass_adm']; //ligne du code rentré par l'utilisateur
$passadmverif = $_POST['verif_pass']; // Ligne du champs hidden pour convertir le champs en code
if($passadm != $passadmverif); //comparaisons des mots de passe
// cryptage du pass
$pass_crypte = crypt($_POST['pass']);
$File = '.htpasswd';
$Mode = 'a';
$Content = $pseudo .':'. $pass_crypte."\r\n";
$fp=fopen($File, $Mode);
$w = fwrite($fp,$Content);
if(!empty($w)){
echo "Bien écrit";
} else {
echo "Erreur Fatale";
}
fclose($fp);
?>
Cependant cela ne marche pas, je rentre n'importe quel code et ca écrit tout de même dans mon fichier texte sans vérifier le code. Auriez vous une solution ?
Re: Ecriture dans un .htpasswd
Posté : 31 mai 2013, 14:39
par ghost5922
faut pas mettre != mais ==
if($passadm != $passadmverif);//différent de
if($passadm == $passadmverif); la même chose
par contre aucun avantage tous le monde peu voir le code dans le hidden autant mettre
$passadmverif=='moncode'
Re: Ecriture dans un .htpasswd
Posté : 31 mai 2013, 14:43
par nathan
Même en changeant le != par == rien ne marche il m'ecrit toujours dans le ficher texte en meme marquant 'Bien Ecrit'
Peut etre faudrait-t-il une balise echo ou if quelque par pour dire que s'in n'est pas égal il ne fasse pas le changement mais ou ?
Re: Ecriture dans un .htpasswd
Posté : 31 mai 2013, 14:49
par ghost5922
et comme ceci ?
je me répète mais aucun avantage d'avoir le code dans un input hidden on peux tous l'avoir
<?php
$pseudo = $_POST['login'];
$pass = $_POST['pass'];
$passadm = $_POST['pass_adm']; //ligne du code rentré par l'utilisateur
$passadmverif = $_POST['verif_pass']; // Ligne du champs hidden pour convertir le champs en code
if($passadm == $passadmverif){ //comparaisons des mots de passe
// cryptage du pass
$pass_crypte = crypt($_POST['pass']);
$File = '.htpasswd';
$Mode = 'a';
$Content = $pseudo .':'. $pass_crypte."\r\n";
$fp=fopen($File, $Mode);
$w = fwrite($fp,$Content);
if(!empty($w)){
echo "Bien écrit";
} else {
echo "Erreur Fatale";
}
fclose($fp);
}
else{
echo'Erreur de code';
}
?>
Re: Ecriture dans un .htpasswd
Posté : 31 mai 2013, 14:58
par Shadors
Effectivement, j'ai donc rentré la ligne
$passadmverif=='156';
Le navigateur me sort une erreur a la ligne. J'ai essayer différentes façon d’écrire: ( $passadmverif='156' $passadmverif == '156' ect.. en modifiant les espaces ect..) Mais rien n'a marché..... L'erreur des comparaisons marche aussi très bien.
J'ai pu enlever le champs hidden ( J'avais pas pensé qu'il serai a la vu de tous le monde).
PS: J'ai créer un compte
Re: Ecriture dans un .htpasswd
Posté : 31 mai 2013, 14:59
par ghost5922
tu as effacer le ) a la fin mais au debut tu as if( donc faut le fermer if($passadm == 'moncode')
<?php
$pseudo = $_POST['login'];
$pass = $_POST['pass'];
$passadm = $_POST['pass_adm']; //ligne du code rentré par l'utilisateur
$passadmverif = $_POST['verif_pass']; // Ligne du champs hidden pour convertir le champs en code
if($passadm == 'moncode'){ //comparaisons des mots de passe
// cryptage du pass
$pass_crypte = crypt($_POST['pass']);
$File = '.htpasswd';
$Mode = 'a';
$Content = $pseudo .':'. $pass_crypte."\r\n";
$fp=fopen($File, $Mode);
$w = fwrite($fp,$Content);
if(!empty($w)){
echo "Bien écrit";
} else {
echo "Erreur Fatale";
}
fclose($fp);
}
else{
echo'Erreur de code';
}
?>
Re: Ecriture dans un .htpasswd
Posté : 31 mai 2013, 15:02
par Shadors
Tous marche je crois, J'ai juste supprimer la ligne du verifcode qui ne servais plus a rien.
Merci a toi.