[RESOLU] [Qst] - Lecture/Ecriture via un form dans un 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 : [RESOLU] [Qst] - Lecture/Ecriture via un form dans un fichier TXT

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par casio » 03 janv. 2015, 19:36

(...)
Comme LOCK_EX est uniquement pour les fichiers locaux, il faut peut-être remplacer LOCK_EX par 0 (zéro).
YES ! ;-)

Merci, en effet, cela semble maintenant fonctionner à merveille.

Voici mon code actuel :
<?php
include "ls-data.php";

// Définition des accents :
$accents = array("é", "è", "ê", "à", "ô");
$correct = array("e", "e", "e", "a", "o");

// Contenu du message du formulaire :
$ls = $_POST["listing"];

// on remplace les accents
$ls = str_replace($accents, $correct, $ls);
?>
</head>

<body>

<?php
// Ouverture du fichier pour écriture
error_reporting(E_ALL);

// Debugg
// print "$ls";
// Envoi du nouveau listing...
echo "Mis &agrave; jour du listing ("; ?>"<a href="<?php echo $lectdons; ?>" target="_blank"><?php echo $fichier; ?></a>"<?php echo ") ... ";
$opts = array('ftp' => array('overwrite' => true));
$context = stream_context_create($opts);
$strwri = file_put_contents($wridons,$ls,0,$context);
?>
eff&eacute;ctu&eacute; <font color="#009933"><strong>!</strong></font><br />

<br />
<?php die ("<br>Vous pouvez fermer cette fen&ecirc;tre, ou onglet..."); ?>
Merci. Si vous ne voyez pas d'autres erreurs, je peux passer en résolu.

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par tesmet » 02 janv. 2015, 17:19

Salut
$strwri = file_put_contents($wridons,$ls,LOCK_EX,$context);
Me donne :
Warning: file_put_contents(): Exclusive locks may only be set for regular files in /Destock/Dons/ls-envoi.php on line 39
Mis à jour du dernier listing ("dons.txt") ...
Comme LOCK_EX est uniquement pour les fichiers locaux, il faut peut-être remplacer LOCK_EX par 0 (zéro).

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par casio » 02 janv. 2015, 13:34

J'ai passé les 48 dernières heures à essayer de trouver un code palliatif, mais cela ne donne rien.

Voici donc mon code (écriture) actuel :
<?php
// Ouverture du fichier pour écriture
error_reporting(E_ALL);

// $handle = fopen($wridons,"w+") or die("Connexion en &eacute;criture impossible au serveur !");
// ftp_pasv($handle, true);
// Debugg
// print "$ls";
// Envoi du nouveau listing...
// fwrite($handle,$ls);
echo "Mis &agrave; jour du dernier listing ("; ?>"<a href="<?php echo $lectdons; ?>" target="_blank"><?php echo $fichier; ?></a>"<?php echo ") ... ";
$opts = array('ftp' => array('overwrite' => true));
$context = stream_context_create($opts);
$strwri = file_put_contents($wridons,$ls,LOCK_EX,$context);
// Rembobinage du fichier et fermeture du pointeur de fichier
// rewind($handle);
// fclose($handle);
?>
Néanmoins, je viens de me rendre compte qu'un fichier nommé "$wridons" est arrivé à la racine du dossier.
Capture d'écran 2015-01-02 12.33.52.png

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par casio » 31 déc. 2014, 18:27

Pour info. je ne suis pas le posteur anonyme précédent.
<?php
// Ouverture du fichier pour écriture
error_reporting(E_ALL);

// Debugg
// print "$ls";
$opts = array('ftp' => array('overwrite' => true));
$context = stream_context_create($opts);
$strwri = file_put_contents($wridons,$ls,LOCK_EX,$context);
echo "Mis &agrave; jour du dernier listing ("; ?>"<a href="<?php echo $lectdons; ?>" target="_blank"><?php echo $fichier; ?></a>"<?php echo ") ... ";
?>
Me donne :
Warning: file_put_contents(): Exclusive locks may only be set for regular files in /Destock/Dons/ls-envoi.php on line 39
Mis à jour du dernier listing ("dons.txt") ...

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par Invité » 31 déc. 2014, 04:10

J'ai vu ces liens,mais il y a des questions que je comprends pas,si quelqu'un qui peut m'aider?

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par sirakawa » 30 déc. 2014, 19:20

oui, ca; avec le overwrite

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par casio » 30 déc. 2014, 18:10

regarde :
http://php.net/manual/fr/wrappers.ftp.php
User Contributed Notes
2
(...)

Code : Tout sélectionner

<? $str ="replace all contenents"; $filew="ftp://gufo:[email protected]:21/jj.php"; $opts = array('ftp' => array('overwrite' => true)); $context = stream_context_create($opts); $strwri = file_put_contents($filew,$str,LOCK_EX,$context); ?>
?

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par sirakawa » 30 déc. 2014, 18:05

regarde :
http://php.net/manual/fr/wrappers.ftp.php
User Contributed Notes
2
et pourquoi ne pas mettre sans quotes du tout?

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par casio » 30 déc. 2014, 15:18

(fopen('$wridons','w+') pourquoi des simples quotes alors que tu mets des doubles dans la lecture?
Alors, justement, j'ai essayé de normaliser l'ensemble, mais si je mets des "" au lieu des '', et/ou reciproquement selon le script (lecture/ecriture), cela me mets l'erreur qu'il n'arrive pas à établir la cnx.
(...)
ce n'est pas les mêmes droits, par ftp et par un script php.
Du coups, on touche peut-être la solution... :
Capture d'écran 2014-12-30 14.17.57.png

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par tof73 » 30 déc. 2014, 15:03

Actuellement, j'édite, à travers ce même compte, le fichier TXT directement depuis un client FTP, et ce depuis plus d'un an.
ce n'est pas les mêmes droits, par ftp et par un script php.

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par sirakawa » 30 déc. 2014, 15:00

(fopen('$wridons','w+') pourquoi des simples quotes alors que tu mets des doubles dans la lecture?

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par casio » 30 déc. 2014, 14:45

(...)
si tu mettais
error_reporting(E_ALL); avant le fopen ?
et un
var_dump($handle); //après...
(...)
bool(true)
Warning: fwrite() expects parameter 1 to be resource, boolean given in /Destock/Dons/ls-envoi.php on line 34
bool(false) Mis à jour du dernier listing ("dons.txt") ...
Warning: rewind() expects parameter 1 to be resource, boolean given in /Destock/Dons/ls-envoi.php on line 39

Warning: fclose() expects parameter 1 to be resource, boolean given in /Destock/Dons/ls-envoi.php on line 40
(...)
Quels sont tes droits sur ce fichier au niveau du serveur ?
Ca ne résoudrait rien, mais on ne s'étonnerait plus.
Il y a bien is_writable
Actuellement, j'édite, à travers ce même compte, le fichier TXT directement depuis un client FTP, et ce depuis plus d'un an.
Pour éliminer une partie des sources d'erreurs, tu pourrais utiliser un fichier local avant de tester via ftp. Ca assure une vérification de la logique du traitement.
Ensuite, tu pourrais afficher le contenu initial du fichier distant pour être sur que le chemin est bon et que tu n'écris pas dans un autre répertoire (peu probable avec un fwrite qui retourne false).

As tu mis un user et un mot de passe :
(...)
La première partie du code, donnée plus haut, fait la même manip, mais en lecture uniquement, et sur le même fichier.
Celui s'affiche correctement, je ne pense donc pas à un pb de chemin, a moins que fwrite et ses copains réagissent de façon différente ?

Voici le contenu du fichier ls-data.php :

Code : Tout sélectionner

<?php // Variables // Addresse du serveur distant $ftpip = "AdresseDynDNSduServeur"; // Compte(s) du serveur distant $userls = "log"; $passls = "pass"; $supuserls = "log2"; $supassls = "pass2"; // Arborescence du serveur distant $compte = "web"; // Port du serveur distant $port = "21"; // Nom du fichier distant $fichier = 'dons.txt'; // Chemin vers le fichier distant $lectdons = 'ftp://'.$userls.':'.$passls.'@'.$ftpip.'/'.$compte.'/'.$fichier; $wridons = 'ftp://'.$supuserls.':'.$supassls.'@'.$ftpip.'/'.$compte.'/'.$fichier; //////////////// Fin des parametres ////////////////// ?>

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par Mazarini » 30 déc. 2014, 14:39

Pour éliminer une partie des sources d'erreurs, tu pourrais utiliser un fichier local avant de tester via ftp. Ca assure une vérification de la logique du traitement.
Ensuite, tu pourrais afficher le contenu initial du fichier distant pour être sur que le chemin est bon et que tu n'écris pas dans un autre répertoire (peu probable avec un fwrite qui retourne false).

As tu mis un user et un mot de passe :
$handle = fopen("ftp://user:[email protected]/somefile.txt", "w");

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par sirakawa » 30 déc. 2014, 14:14

Cohérent avec ce que tu constatais.
si tu mettais
error_reporting(E_ALL); avant le fopen ?
et un
var_dump($handle); //après...
Quels sont tes droits sur ce fichier au niveau du serveur ?
Ca ne résoudrait rien, mais on ne s'étonnerait plus.
Il y a bien is_writable

Re: [Qst] - Lecture/Ecriture via un form dans un fichier TXT

par casio » 30 déc. 2014, 13:29

Et que dit le var_dump ?
bool(false)