[javascript]in textfile schrijven bij client

Pagina: 1
Acties:
  • 131 views sinds 30-01-2008
  • Reageer

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik ben bezig een script te maken dat bij de client gegevens in een text bestand zet.

In php kan ik redelijk wat met een text bestand maar dan wordt het bestand op de server gewijzigd en niet bij de client. Dus ik moet het met javascript doen.

Ik heb op google zitten zoeken maar kan niet echt wat vinden. Ik vond dit.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    function saveToFile(pathN, content){
    var fso, ts;
    var ForWrite = 2;
    
    fso = new ActiveXObject("Scripting.FileSystemObject");
    ts = fso.OpenTextFile(pathN, ForWrite, true);
    ts.Write(content);
    ts.close();
    if (!fso.FileExists(pathN)) {
    alert("The file <"+pathN+"> cannot be created.");
    } else {
    alert("Successfully saved");
    }
    }

Dit script is niet van mij. Ik heb dit getest maar krijg de error dat het automatiseringsonderdeel niet kan worden aangemaakt. Ik denk dat ik dat ActiveXObject niet heb. Nu kan ik dat wel opzoeken en op mijn pc zetten maar dan heb ik er niks aan omdat de gebruiker dat object nodig heeft.

Deze manier is erg gemakkelijk maar ik wil het maken zonder een ActiveXObject. Ik kan alleen nergens vinden dat dat kan.

op http://www.devguru.com/te...ef/stream_savetofile.html vond ik
code:
1
streamobject.SaveToFile test.txt, SaveOptions

alleen heb ik hiervoor weer en object nodig.

Is er iemand die weet hoe ik dit kan oplossen. of het eigenlijk lijk wel kan met javascript zonder object

Jochemmol


  • André
  • Registratie: Maart 2002
  • Laatst online: 04-05 16:01

André

Analytics dude

Zonder ActiveX of JAVA zul je dit niet kunnen doen, dit heeft te maken met beveiliging. Anders zouden alle websites tekstbestandjes (en dus ook virussen) op je pc kunnen plaatsen ;)

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Stom bedankt. Dan moet ik het anders oplossen

Jochemmol


  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 01-02 20:46

dawuss

gadgeteer

Misschien helpt het als je vertelt wat je precies wilt wegschrijven naar de client.

In principe kan ik me namelijk niet voorstellen waarom je dat zou willen doen want:

• Settings kuunnen met een cookie en een serverside koppeling naar een database of textfile
• Als je data wilt saven naar disk, kun je dat gewoon als "data object" aanbieden. Je moet dan gewoon een andere MIME header meegeven ("application/x-octet stream" bijvoorbeeld).

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
ik heb een cms gemaakt en dat krijgen mensen als ik een site voor hun maak. De code van het cms is gecodeerd maar het is mogelijk voor de gebruiker om de hele map te kopieren en aan andere te geven.

Om dit te verkomen wil ik per keer dat de site gestart wordt dat er een key wordt opgehaald op mijn site. Ik wilde die key in een textbestand bij de gebruiker zetten als de key onjuist is werkt het cms niet.

Maar ik moet een andere oplossing bedenken denk ik

Jochemmol


  • Standeman
  • Registratie: November 2000
  • Laatst online: 23:30

Standeman

Prutser 1e klasse

Klinkt als een cookie geval... Waarom schrijf je die key niet weg in een cookie??? Kan gewoon met JavaScript en ik eet mijn schoen op als het met PHP niet kan??

Kijk eens hiernaar:
http://www.netspade.com/articles/javascript/cookies.xml
en
http://www.mach5.com/supp...ral/CookiesJavaScript.htm

[ Voor 52% gewijzigd door Standeman op 09-07-2005 23:41 ]

The ships hung in the sky in much the same way that bricks don’t.


  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 01-02 20:46

dawuss

gadgeteer

Ja, volgens mij kun je dit gewoon het beste doen met een cookie.

Overigens: Ik vind het niet heel erg netjes wat je hier doet. Weet de gebruiker wel dat je een key van jouw server af haalt en op zijn schijf wilt opslaan? En heb je er al aan gedacht wat er gebeurt als jouw server down gaat of om andere redenen niet meer op het vooraf ingestelde IP te bereiken is?

Er zijn betere manieren om dit op te lossen :)

Om even een suggestie te geven: Waarom zorg je er niet voor dat bij installatie van het CMS een koppeling ontstaat tussen de site en de hostname waar het op draait?

Je genereert dus éénmalig een key, bijvoorbeeld een hash van een geheime sleutel en de hostname waarvandaan het CMS de eerste keer geladen wordt. Vervolgens controleer je iedere keer dat je die pagina laadt de hostname, en als die veranderd is geef je een error. Je hebt dan maar éénmalig communicatie nodig met jouw eigen server (bij iedere installatie), en verder gebeurt alles server-side.

My 2 cents :)

[ Voor 42% gewijzigd door dawuss op 09-07-2005 23:46 ]

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
eh ja datweet de gebruiker zeker. dat vertel ik wel netjes. Maar wat is een andere manier? kan je mij een zetje in de goede richting geven?

Jochemmol


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Zend Encoder of Turck MMCache?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 01-02 20:46

dawuss

gadgeteer

Nadeel van zo'n oplossing is wel dat je vrij serieuze eisen stelt aan de hosting provider van je klant :)

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


  • getfirefoxnow
  • Registratie: Mei 2005
  • Niet online
Ik heb onlangs nog een stuk geprogrammeerd in javascript/PHP.
Javascript schrijft een cookie weg en PHP leest het uit, inclusief alle mogelijke checks.
Als je wilt, kan ik het nog wel een keer posten.

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ja je kan het posten. Ik ben nu zelf bezig om het te beveiligen met een host en een wachtwoord en een special key maar vind het wel interessant en leerzaam om dat eens te zien.

bedankt allemaal voor jullie ideeen

Jochemmol


  • getfirefoxnow
  • Registratie: Mei 2005
  • Niet online
Met javascript bepaal je de schermresolutie en schrijf je dit weg naar een cookie:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<script language="javascript">
// Dit javascript bepaalt de huidige schermresolutie en schrijft dit weg naar een cookie
<!--
//Bepaal browser type en versie
var browsername = (navigator.appName);
var ieversion = (navigator.userAgent.toLowerCase())
var ieversion3 = ((navigator.userAgent.toLowerCase()).indexOf("msie 3"));
var ieversion4 = ((navigator.userAgent.toLowerCase()).indexOf("msie 4"));
var ieversion5 = ((navigator.userAgent.toLowerCase()).indexOf("msie 5"));

// Indien moderne browser, bepaal dan de resolutie (anders altijd op 800x600 weergeven)
if (ieversion3 == "-1" && ieversion4 == "-1" && ieversion5 == "-1") {
// Indien cookies ingeschakeld, bepaal dan de resolutie (anders altijd op 800x600 weergeven)
if (window.navigator.cookieEnabled) { // Indien cookies enabled: Plaats hieronder het cookie
var resolutie = readCookie('users_resolution');
if (resolutie) // Indien cookie al bestaat: ga na of resolutie is veranderd
{
    if (screen.width != resolutie) // Indien resolutie is veranderd: nieuwe cookie aanmaken
    {
        writeCookie();
    }
}
else // Indien cookie niet meer bestaat: nieuwe cookie aanmaken
{
    writeCookie();
}
}
else // Indien cookies niet enabled: geef alert
{
//  alert ("Voor een optimaal resultaat dient u cookies in te schakelen");
}
}

// Hieronder staan alle functions die nodig zijn om resolutie-cookie aan te maken
function eraseCookie(name)
{
    document.write ('erase');
    createCookie(name,"",-1);
}

function readCookie(name)
{
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++)
    {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function createCookie(name,value,days)
{
    if (days)
    {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function writeCookie()
{
 var today = new Date();
 today.setTime(today.getTime()+(999*999*1000));
// var the_date = today;
 var the_date = new Date("December 31, 2199");
 var the_cookie_date = the_date.toGMTString();
 var the_cookie = "users_resolution="+screen.width;
// var the_cookie = "users_resolution="+ screen.width +"x"+ screen.height;
 var the_cookie = the_cookie + ";expires=" + the_cookie_date;
 document.cookie=the_cookie;

 location = '<?$_SERVER['REQUEST_URI']?>';
}
//-->
</script>

<noscript>
Om deze website te bekijken dient u javascript in te schakelen.
</noscript>


Binnen php lees je vervolgens de cookie uit en je kunt er mee doen wat je wilt:
PHP:
1
2
3
<?
   $screen_res = $_COOKIE["users_resolution"];
?>

[ Voor 8% gewijzigd door getfirefoxnow op 11-07-2005 12:11 ]


  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik heb er even naar gekeken. Mooi script. Alleen ik krijg een error. Maar ik vind het een slimme manier om cookies te setten. Bedankt

Jochemmol

Pagina: 1