probleme pour modifier fichier.txt

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme pour modifier fichier.txt

par ruly » 20 mars 2006, 10:32

trouver une autre solution....

vous pouvez mettre delestage et resolu.
merci d'avance

par ruly » 16 mars 2006, 10:15

personne ne peut m'aider???

j'ai tjrs ce soucy...

merci d'avance . . .

par ruly » 09 mars 2006, 15:45

ca m'enleve le pass et login mais ca me rajoute une ligne blanche hors je voudrais pas cette ligne blanche. rien a la place....

et pourkoi il me rajoute le dernier login et pass lorsque je fais un delete??

code php:
$test = file_get_contents($fichier);

if (isset($_POST['Submit2'])) {
	$insertOk2 = true;
	
	if (empty($_POST['login'])) {
		$insertOk = false;
		echo '<div align="center" style="color:#FF0000">the login is obligatory.</div>'.'<br>';
	}
	
	if (empty($_POST['pass'])) {
		echo '<div align="center" style="color:#FF0000">the pass is obligatory.</div>'.'<br>';
		$insertOk = false;
	}
	
	if ($insertOk2) {
		
		$test = str_replace($login.':'.$pass, ' ', $test);
		$fp = fopen($fichier,"r+");
		fwrite($fp,$test);		
	}
}

if (isset($_POST['Submit'])) {
	$insertOk = true;
	
	if (empty($_POST['login'])) {
		$insertOk = false;
		echo '<div align="center" style="color:#FF0000">the login is obligatory.</div>'.'<br>';
	}
	
	if (empty($_POST['pass'])) {
		echo '<div align="center" style="color:#FF0000">the pass is obligatory.</div>'.'<br>';
		$insertOk = false;
	}
	
	if ($insertOk) {
		$text = "\r\n".trim($login).":".trim($pass);
		$handle = fopen($fichier, 'a');
		fwrite($handle, $text);
		$login = '';
		$pass = '';
		$_POST['login'] = '';
		$_POST['pass'] = '';	
	}
}

if (file_exists($fichier)) { 
	$tableau = file($fichier); 

	while(list($cle,$val) = each($tableau)) {
   		echo $val."<br>";
		$tab .= $val;
	} 
}
et mon formulaire:

Code : Tout sélectionner

<form name="form1" method="post" action=""> <table width="30%" > <tr> <td width="6%"><strong>Login:</strong></td> <td width="94%"><input type="text" name="login" value="<?php echo $login?>"></td> </tr> <tr> <td><strong>Pass:</strong></td> <td><input type="text" name="pass" value="<?php echo $pass?>"></td> </tr> <tr> <td> <div align="right"> <input type="submit" name="Submit" value="New"> </div> </td> <td> <input type="hidden" name="i" value="<?php echo $i?>"> <input type="submit" name="Submit2" value="Delete"> </td> </tr> </table> </form>
et j'aurais pas de soucy avec le codage des pass htpass lors de la suppression???

par ruly » 09 mars 2006, 15:40

yes ca marche persque nikel

juste un soucy... quand je supprime un login et un pass il me rajoute la derniere ligne en doublon....

comment ca se fait??? t comment y remedier svp???

merci

par Ripat » 09 mars 2006, 15:34

Tu ouvres ton fichier htaccess en lecture seule (r).

Essaye:
$fp = fopen($fichier,"r+"); 
J'oubliais:
$test = str_replace($login.':'.$pass, null, $test);

par ruly » 09 mars 2006, 15:08

Pour te simplifier la vie pour la suppression, je ferais:
  • mettre ton htaccess dans une chaîne (file_get_contents)
  • str_replace la ligne à supprimer par null
  • fwrite toute la chaîne (modifiée) dans htaccess
En passant, il me semble que tu mettes tes mdp en clair dans ton htaccess non? Pas très prudent ça.
merci pour ta reponse.

alors j'ai essaye ca mais ca change rien du tout.
$test = file_get_contents($fichier);

		str_replace($login.':'.$pass, ' ', $test);	
		$fp = fopen($fichier,"w+");
		fwrite($fp,$test);	
est-ce que je suis sur la bonne voie ou alors j'ai completement faux???
car rien de change...

et pour mon htacess je fait en dur pour les test apres je les coderais...

mais deja voir si ca marche comme ca ce qui n'est pas le cas

:(

par Ripat » 09 mars 2006, 11:36

Pour te simplifier la vie pour la suppression, je ferais:
  • mettre ton htaccess dans une chaîne (file_get_contents)
  • str_replace la ligne à supprimer par null
  • fwrite toute la chaîne (modifiée) dans htaccess
En passant, il me semble que tu mettes tes mdp en clair dans ton htaccess non? Pas très prudent ça.

par ruly » 09 mars 2006, 11:02

en fait j'ai change d'avis et j'aimerais supprime carement la ligne trouvee.

voici mon code:
<?php
//initialisation:
$fichier = ".htpasswd";
$tab = ''; 	

$login = '';		if (!empty($_POST['login'])) {$login = $_POST['login'];}
$pass = '';			if (!empty($_POST['pass'])) {$pass = $_POST['pass'];}

$i = '';			if (!empty($_POST['i'])) $i = $_POST['i'];

if (isset($_POST['Submit2'])) {
	$insertOk2 = true;
	
	if (empty($_POST['login'])) {
		$insertOk = false;
		echo '<div align="center" style="color:#FF0000">the login is obligatory.</div>'.'<br>';
	}
	
	if (empty($_POST['pass'])) {
		echo '<div align="center" style="color:#FF0000">the pass is obligatory.</div>'.'<br>';
		$insertOk = false;
	}

	
	if ($insertOk2) {
		
		echo $login.':'.$pass.'<br><br>';
		
		// Supression d'une ligne		
		$fp = fopen($fichier,"r"); // Ouverture du fichier en lecture
		$fp_temp = fopen("temp.txt","w+"); // Ouverture du fichier temporaire
		
		while (!feof($fp)) { // Parcours du fichier
			$ligne = fgets($fp,4000); // On récupère le nombre de la ligne
			if ( ($ligne != $login.':'.$pass) or ($ligne != ' ') ) { // Condition de placement
				fwrite($fp_temp,$ligne);
			}
		}
		
		fclose($fp); // Fermeture du fichier
		fclose($fp_temp);
		
		copy("temp.txt",$fichier); // On recopie le fichier temporaire obtenu
		unlink("temp.txt"); // On l'efface
	}
}

if (isset($_POST['Submit'])) {
	$insertOk = true;
	
	if (empty($_POST['login'])) {
		$insertOk = false;
		echo '<div align="center" style="color:#FF0000">the login is obligatory.</div>'.'<br>';
	}
	
	if (empty($_POST['pass'])) {
		echo '<div align="center" style="color:#FF0000">the pass is obligatory.</div>'.'<br>';
		$insertOk = false;
	}
	
	if ($insertOk) {
		$text = "\r\n".trim($login).":".trim($pass);
		$handle = fopen($fichier, 'a');
		fwrite($handle, $text);
		$login = '';
		$pass = '';
		$_POST['login'] = '';
		$_POST['pass'] = '';	
	}
}

if (file_exists($fichier)) { 
	$tableau = file($fichier); 

 	$i = 0;
	while(list($cle,$val) = each($tableau)) {
   		echo $val."<br>";
		$tab .= $val;
		$i++;
	} 
}
echo $tab;
?>
et mon formulaire :

Code : Tout sélectionner

<form name="form1" method="post" action=""> <table width="30%" > <tr> <td width="6%"><strong>Login:</strong></td> <td width="94%"><input type="text" name="login" value="<?php echo $login?>"></td> </tr> <tr> <td><strong>Pass:</strong></td> <td><input type="text" name="pass" value="<?php echo $pass?>"></td> </tr> <tr> <td> <div align="right"> <input type="submit" name="Submit" value="New"> </div> </td> <td> <input type="hidden" name="i" value="<?php echo $i?>"> <input type="submit" name="Submit2" value="Delete"> </td> </tr> </table> </form>
l'insertion se passe nikel.

probleme pour la suppression.... des fois il me l'enleve des fois pas... et en plus si je supprime et je rajoute apres j'ai des ligne de blance entre les suppressions et les nouvelles insertions...

est-ce que qqn peut m'aider ou voit ou ya une erreur???

merci d'avance.

par ruly » 02 mars 2006, 09:53

personne n'a une idee de comment faire ca simplement???

par ruly » 01 mars 2006, 17:05

ok... alors comment je peux faire pour gerer 2 bouton submit sur un seul formulaire???

(ps c'est bizarre car les autres application j'ai fait comme cela et ca marche nikel.)

merci
c bon pour cette partie

mais maintenant comment me conseiller vous de faire pour pouvoir supprimer un login et un pass de ce fichier .htpasswd???

faire un tableau et rechercher dedant le bon login:pass et le supprimer et a se moment refaire le fichier .htpasswd??


ou alors une autre maniere plus simple???

merci d'avance

Re: probleme pour modifier fichier.txt

par ruly » 01 mars 2006, 17:03

c'etait moi au dessous.. desole.

Edit de Zeus : pas la peine de citer ton message précédent, surtout quand il est aussi long
ok desole j'avais pas pense a ca....

par ruly » 01 mars 2006, 16:13

ok... alors comment je peux faire pour gerer 2 bouton submit sur un seul formulaire???

(ps c'est bizarre car les autres application j'ai fait comme cela et ca marche nikel.)

merci

par Hermès » 01 mars 2006, 13:42

C'est même un peu plus fouilli que ça : là tu as une balise FORM qui s'ouvre, qui se ferme, une autre qui s'ouvre, qui se ferme et une fermeture de la première balise qui est déjà fermée.

De plus, je pense que si tu fais quelque chose comme

Code : Tout sélectionner

<FORM> <TABLE> </FORM> </TABLE>
ça ne va pas marcher (ça fout le DOM en l'air et ça doit pas plaire aux parseurs).

par Ryle » 01 mars 2006, 13:24

Peut être une piste dans ton formulaire : il ne faut pas imbriquer deux formulaires l'un dans l'autre.

Ceci est correct :

Code : Tout sélectionner

<form name="form1"> </form> <form name="form2"> </form>
Ceci ne l'est pas :

Code : Tout sélectionner

<form name="form1"> <form name="form2"> </form> </form>

par ruly » 01 mars 2006, 12:53

A première vue, je ne vois pas d'erreur... tu peux regarder le contenu de $_POST avec la méthode print_f :
echo '<pre>';
print_r($_POST);
echo '</pre>';
Place cela au début de ton script, tu pourras déjà voir ce que tu récupères de ton formulaire... :)
quand j'appuie new j'ai des donnees.

mais quand j'appuie delete j'ai absolument rien

et c ca mon probleme pas l'insertion mais le delete qui me prend aucune variable

:cry: :cry: :cry: :cry:

et je vois plus comment faire :roll:

svp besoin d'aide svp ](*,)