Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155

    Dubbi scrittura su disco

    Salve,
    scusate ho un po' di confusione con questo linguaggio. Ho appena letto una guida, ho visto che non si ha la possibilita' di scrivere nel filesystem per questioni di sicurezza. avrei i seguenti dubbi:

    1) Ho saputo che per es. con php (cioe' lato server) si puo' procedere al salvataggio. Allora se usassi php per uno script da far funzionare sul mio browser otterrei la possibilita' di scrivere su disco?

    2) Non ho ben capito il perche' lo scripting su server non sia sottoposto a questa restrizione di inibire la scrittura. qualcuno per favore potrebbe chiarirmi il senso di questa distinzione tra linguggi di scripting lato client e lato server? il php in che contesto viene utilizzato? - per es., da quanto ho appreso, JS trova impiego principalmente a livello di browser per gestione/interazione dinamica di elementi dei documenti html, mentre il php...?

    3) La cosa che sto facendo e' uno script per raccogliere le url che via via vengono richieste dal client. Ho trovato una alternativa al salvarle su file di testo, utilizzando la persistenza interna dei dati con oggetti equiparabili a database e relative API. Tuttavia in base a una ricerca effettuata prima di apprendere JS, avevo trovato questo codice di esempio che dovrebbe proprio salvare su file di testo.

    codice:
    <html>
    <head>
    <script>
    function scrivi(stringa){
    var fs, a, ForAppending;
    ForAppending = 8;
    fs = new ActiveXObject("Scripting.FileSystemObject");
    a = fs.OpenTextFile("a.txt", ForAppending, false);
    a.Write(stringa);
    a.WriteBlankLines(1);
    a.Close();
    campo1.value=""
    campo1.value=stringa
    }
    </script>
    </head>
    <body>
    <textarea cols=25 rows=5 name=testo></textarea>
    <input type=button value="Scrivi" onClick="scrivi(testo.value)"><br><br>
    nel file è stato scritto: <input type=text name=campo1>
    </body>
    </html>
    preciso che ho provato lo script, inserendolo in un file htm all'interno di una cartella contenente anche il file a.txt (con permessi attivati), ma non mi funziona niente.

    Mi potete spiegare perche' nella guida che io ho appena letto non si fa neanche cenno ai metodi e oggetti indicati nel codice precedente (per es. ActiveXObject, OpenTextFile, Write ecc.) e anzi si affermi che non si puo' proprio salvare per le suddette ragioni di sicurezza?

    grazie per eventuali chiarimenti.
    Per fare un tavolo ci vuole un fiore.

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    js non scrive sul file system dell'utente
    linguaggi come php e asp.net e simili scrivono sul server non sul fs dell'utente
    il codice che hai preso mi sa che è preistorico e se non erro era valido solo per explorer (https://msdn.microsoft.com/it-it/lib...v=vs.94).aspx)
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    JavaScript è un linguaggio di programmazione, ma poi dipende dalla piattaforma in cui lo usi. Con JavaScript/NodeJS puoi scrivere come con qualsiasi linguaggio lato server. In NodeJS puoi usare fs.write()

    Forse questo video ti può essere d'aiuto per capire la differenza tra js client e server https://www.youtube.com/watch?v=wUSz6Zo-qHg
    Ultima modifica di CorsoJavascript; 18-02-2016 a 15:36
    Video Corso JavaScript ES2015 - http://corso-javascript.it

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Quote Originariamente inviata da CorsoJavascript Visualizza il messaggio
    JavaScript è un linguaggio di programmazione, ma poi dipende dalla piattaforma in cui lo usi. Con JavaScript/NodeJS puoi scrivere come con qualsiasi linguaggio lato server. In NodeJS puoi usare fs.write()

    Forse questo video ti può essere d'aiuto per capire la differenza tra js client e server https://www.youtube.com/watch?v=wUSz6Zo-qHg

    occhio che node js non è "solo javascript" e sopratutto non sempre può essere usato
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    In che senso non può essere usato?

    Con JavaScript ES2015 la sintassi è sempre più uniformata indipendentemente da dove JavaScript viene usato "Web", "Server", ecc.. poi ovviamente ogni piattaforma ha le proprie specificità e i propri limiti. Leggere e scrivere un file sarà sempre leggermente diverso perché nel Web ci deve sempre essere l'utente che deve autorizzare l'applicazione a farlo (per evidenti motivi di sicurezza)
    Video Corso JavaScript ES2015 - http://corso-javascript.it

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    nel senso che non è detto che node.js sia installato e configurato in modo da consentire quello che ha chiesto l'utente.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155
    grazie per le risposte. Il video non l'ho ancora guardato perché al momento mi manca l'audio. Confermo, il codice è datato. Se per caso c'è qualcuno in ascolto, mi dice per favore dove sta il trucco in questo codice JS, che ancora salva sul disco utente - forse l'istruzione "import"? (è un addon firefox).

    codice:
    Components.utils.import('resource://gre/modules/XPCOMUtils.jsm'); function HttpRequestLogger() {
       var httpRequestLogger =
       {
         observe: function(subject, topic, data) 
         {
           if (topic == "http-on-modify-request") {
             var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
             var ref = httpChannel.referrer ? httpChannel.referrer.spec : "(none)";
             var buffer = ref + " " + httpChannel.requestMethod + " " + httpChannel.URI.spec + "\n";
             fos.write(buffer, buffer.length);
           }
         }
       };
        
       var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("Desk", Components.interfaces.nsIFile);
       file.append("http-request-log.txt");
       var fos = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
       // PR_WRONLY | PR_CREATE_FILE | PR_APPEND
       fos.init(file, 0x02 | 0x08 | 0x10, -1, 0);
        
       var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
       observerService.addObserver(httpRequestLogger, "http-on-modify-request", false);
     }
      
     HttpRequestLogger.prototype.classID = Components.ID('{c4a9bb50-b9b2-11e0-a4dd-0800200c9a66}');
     HttpRequestLogger.prototype.classDescription = 'Http Request Logger XPCOM Component';
     HttpRequestLogger.prototype.contractID = '@prekageo/HttpRequestLogger;1';
     var NSGetFactory = XPCOMUtils.generateNSGetFactory([HttpRequestLogger]);
    Per fare un tavolo ci vuole un fiore.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.