[RESOLU] Ecriture dans un .htpasswd

nathan
Invité n'ayant pas de compte PHPfrance

30 mai 2013, 17:58

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

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

30 mai 2013, 21:12

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.


@+
Il en faut peu pour être heureux ......

nathan
Invité n'ayant pas de compte PHPfrance

31 mai 2013, 13:59

Personne ne peut m'aider a ce sujet ?

Mammouth du PHP | 619 Messages

31 mai 2013, 14:15

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); 
?>

nathan
Invité n'ayant pas de compte PHPfrance

31 mai 2013, 14:37

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 ?

Mammouth du PHP | 619 Messages

31 mai 2013, 14:39

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'

nathan
Invité n'ayant pas de compte PHPfrance

31 mai 2013, 14:43

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 ?

Mammouth du PHP | 619 Messages

31 mai 2013, 14:49

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';	
}
?>
 

Petit nouveau ! | 3 Messages

31 mai 2013, 14:58

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

Mammouth du PHP | 619 Messages

31 mai 2013, 14:59

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';	
}
?>

Petit nouveau ! | 3 Messages

31 mai 2013, 15:02

Tous marche je crois, J'ai juste supprimer la ligne du verifcode qui ne servais plus a rien.
Merci a toi.