traitement asynchrone javascript et ecriture dans fichier en php

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 : traitement asynchrone javascript et ecriture dans fichier en php

Re: traitement asynchrone javascript et ecriture dans fichier en php

par kerroch » 16 avr. 2019, 18:27

ça marche bien en envoyant les données en tableau , mais ça n'a plus d’intérêt de faire de l'asynchrone.
merci encore.

Re: traitement asynchrone javascript et ecriture dans fichier en php

par kerroch » 16 avr. 2019, 14:00

merci , j'imaginais bien cette solution pour éviter le soucis, mais je m'interrogeais quand même sur le principe d'un systeme qui recevrait des infos à la volée et qui devrait enregistrer les données..en utilisant une sorte de pile ou de cache...

Re: traitement asynchrone javascript et ecriture dans fichier en php

par Spols » 16 avr. 2019, 13:26

Je pense que tu mets les 20 script en concurence en les appelant en même temps. du coup il suffit qu'un script mette une microseconde de plus qu'un autre pour qu'il ai chargé une version plus ancienne et écraser une autre.

il vaut mieux regrouper tes requètes en une. par exemple en mettant tes 20 entiers dans une chaine en JSON et ne faire qu'un seul appel qui écrira ton fichier.

traitement asynchrone javascript et ecriture dans fichier en php

par kerroch » 16 avr. 2019, 12:01

j’étudie la notion de javascript et de traitement asynchrone.
en PHP je crée une page qui affiche une liste de 20 entiers chacun entre deux balises <b></b>
en javascript je parse la page web pour récupérer les nombres
j’écris chaque nombre à la suite dans un fichier en appelant xhr.open("GET", "write_entree.php?entree="+ sentree +"&fichier=" + sfichier, true);
le retour dans la console indique bien un état 4 pour les 20 valeurs

mon soucis est que le fichier créé ne contient pas les 20 valeurs ( c'est aléatoire)
j'ai par exemple :1,6,2,4,8,9,5,10,13,12,14,16,15,18,20,19
il manque 3,7,11,17 par exemple.

Serait-ce un soucis d'écriture dans le fichier et comment le traiter?
merci pour votre aide.

Code : Tout sélectionner

<html> <body> <?php for ($i=1;$i<=20;$i++) echo ("<b>".$i."</b>"); $fic=date('d-m-Y-H-i-s'); ?> <script type="text/javascript"> function getXMLHttpRequest() { ...} function request(entree,fic) { var xhr = getXMLHttpRequest(); var sentree = encodeURIComponent(entree); var sfichier = encodeURIComponent(fic); xhr.open("GET", "write_entree.php?entree="+ sentree +"&fichier=" + sfichier, true); xhr.onreadystatechange = function() { if (xhr.readyState==4 &&(xhr.status == 200 || xhr.status == 0)) { n++; console.log("valide=",xhr.status,xhr.readyState,xhr.responseText,n); }else{ console.log("invalide=",xhr.status,xhr.readyState,xhr.responseText); } } xhr.send(null); } fic="<?php echo $fic;?>"; xhr=getXMLHttpRequest() ; n=0; var x = document.getElementsByTagName("b"); for (i = 0; i <x.length; i++) { entree=x[i]["innerText"]; request(entree,fic) } </script> </body> </html>
et le fichier ecriture en php:

Code : Tout sélectionner

<?php if (isset($_GET["fichier"]) ) { $fic=$_GET["fichier"].".txt"; }else{ $fic='erreur.txt'; } if (isset($_GET["entree"]) ) { $entree=$_GET["entree"]; } else { $entree="rien"; } if ($file = fopen($fic, "a+")) { fwrite($file,$entree."\r\n"); fclose($file); } else { echo "PROBLEME!!!!"; } ?> ]