online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon karim vom 19.01.2020, 02:31 Options

cookie 2

function setCookie(name, wert, domain, expires, path, secure){
var cook = name + "=" + unescape(wert);
cook += (domain) ? "; domain=" + domain : "";
cook += (expires) ? "; expires=" + expires : "";
cook += (path) ? "; path=" + path : "";

cook += (secure) ? "; secure" : "";
document.cookie = cook;
}

1) wie interpretiert man zeile 3 ? z.b. hier : ( 3 < 4 ) ? hallo : gut , würde es heissen , wenn 3 kleiner als 4 dann hallo ansonsten gut .
aber wie würde es in zeile 3 heissen ?

2) warum steht ,,document.cookie = cook,, am ende ?

3) wird bei ,,document.cookie = cook,, die variable ,,var cook,, eingesetzt, und hat etwas var
cook mit document.cookie=cook zu tun ?

4) wenn ich einen cookie setzen möchte , dann schreibe ich den namen, den das cookie haben soll , den
wert, die domain usw. , bei set cookie rein , richtig ?

5) diese funktion kann ich dann immer benutzen wenn ich ein cookie bei einem user der meine website besucht setzen möchte , richtig ?


Antwort schreiben

Antwort 101 von karim vom 18.04.2020, 16:07 Options

in meinem buch steht :

eval (zeichenkette)

"die funktion betrachtet die übergebene zeichenkette als zahlen mit zugehörigen operatoren und berechnet das ergebnis ."

Antwort 102 von guest42 vom 18.04.2020, 19:07 Options

wenn das alles ist, was dein Buch dazu sagt, schmeiß es einfach ins Altpapier

Antwort 103 von katy vom 19.04.2020, 13:10 Options

Hallo guest42,

wer wird denn gleich so dramatisch reagieren!

Ich vermute mal, karim hat die Printversion des JavaScript-Programmier-Handbuchs von Ralph Steyer. Das gibts auch online (ich kenne nur die Online-Version) und da ist mir karims Zitat auch schon mal aufgefallen als mindestens missverständlich. Und wenn in der Print-Version nicht mehr stehen sollte, als online, würde ich es zumindest für Anfänger keinesfalls empfehlen. Zumal auch wirklich eine Menge haarsträubender Unsinn darin steht. Ansonsten sind schon eine Reihe interessanter Inhalte da, insbesondere beim Vergleich mit anderen Programmiersprachen, allerdings oft zu knapp gehalten.

Die Erklärung zu eval() fällt unter "zu kurz", wobei aber auch die Einordnung in Konvertierung eines Wertes in eine Zahl unsinnig ist und ja auch zu karims Unverständnis des Codeschnipsels (Umwandlung eines Strings in ein Array von Strings) führte.

Also nicht gleich ins Altpapier mit dem Buch. Aber auch nicht in die Hände von Anfängern!

Ein schönes Wochenende wünscht
katy

Antwort 104 von rabies vom 21.04.2020, 10:47 Options

Und wenn wir schon gerade bei Lektüre sind, sei Dir, karim, folgendes ans Herz gelegt.
JavaScript und AJAX, Galileo Computing Openbooks. Auf der verlinkten Seite findest Du ebenfalls eine, meiner Meinung nach verständliche, Beschreibung dessen, was eval() tut.

--rabies.

Antwort 105 von kaligula vom 22.04.2020, 16:09 Options

ok, danke.


a) was bedeuten hier die ersten vier schrägstriche nach http: ... :

/ (http: \/\/\S*) /g

b) in zeile 23 sind "temp=[" und "]" zeichenketten oder array, steht doch alles in "" ?
wenn das so nicht ist ,was stellt dann überhaupt temp dar zu suchen ?

ps : ich weiss das oben temp ein array bedeutet

Antwort 106 von rabies vom 23.04.2020, 10:23 Options

Ich frage mich ernsthaft, ob Du das, was man Dir als Link zu lesen gibt, auch wirklich liest, oder es stillschweigend ignorierst.

zu a: der \ (Backslash) dient dazu das jeweils nachfolgende Zeichen (/, Slash) zu escapen, zu maskieren. Da dieses Zeichen unter Umständen innerhalb eines Regulären Ausdrucks eine Sonderbedeutung annehmen kann. Hier wäre es die Funktion als Delimiter/Begrenzer, der sowohl den Anfang als auch das Ende des Regulären Ausdruckes einleitet.

zu b: Wenn genanntes Konstrukt nicht innerhalb eines eval()s stehen würde, wäre es eine Zeichenkette, ja. Dadurch, dass das Konstrukt, die genannte Zeichenkette, durch eval ausgeführt wird, wird Sie zu einem Array.

Zitat:
ps : ich weiss das oben temp ein array bedeutet

Dann versteh' ich die Frage in b) nicht.

Antwort 107 von kaligula vom 23.04.2020, 14:27 Options

a) mir ist dieses \ zwar bekannt und das was hinter solchem \ steht maskiert wird
aber dachte nur das folgende kann man nur maskieren :

\n,\f,\b,\r,\t,\",

oder kann alles mögliche maskiert werden ?
-----------
zu b) Eine ganz besondere Kurzform für Arrays gibt es auch – eckige Klammern:

var a = ["Januar", "Februar", "März"];

ist das mit temp gemeint ,wenn ja warum wird dann oben noch mal in zeile 18 ein array erzeugt
(auf seite 5), reicht doch auch so wie in zeile 23 ?
-----------
c) muss nicht in zeile 22 am ende ein ";" kommen, oder gehört das alles zur variablen str ?
denn wenn ich die zeile 23 zur 22. zeile hinzufüge ,da ja kein ; am ende steht , geht der code irgendwie dabei nicht ?
-----------
d) ich lese natürlich , dass was als link immer angeboten wird , bin auch sehr dankbar dafür,aber
ich muss halt manchmal auch wieder fragen , verstehst ?
-----------

PS: karim ist jetzt kaligula , ich konnte mich nicht mehr mit karim anmelden weil ich mein passw. für karim vergessen habe , deswegen habe ich mich neu anmeden müssen

danke

Antwort 108 von rabies vom 23.04.2020, 15:08 Options

zu a) Nein, man kann so gut wie alles damit escapen. So steht \/\/ in Deinem Beispiel lediglich für //. Grund für das Escapen der Slashes an dieser Stelle ist, wie schon gesagt, dass der reguläre Ausdruck hier mit / begonnen und mit / beendet wird.

zu b) ... Das Array wird in Zeile 18 initialisiert, um das Array "temp" nur für die Funktion geltend zu machen. Das hätte man natürlich auch mit
eval("var temp = [" + str + "]");
erreichen können. Aber das ist wohl Geschmackssache. Was sich der Ersteller des Codes dabei gedacht hat, kann man nur mutmaßen. Wenn man 'temp' ohne das vorstehende 'var' initialisieren, mit Daten bestücken würde, würde es global im Script existieren. Dies kann unter Umständen zu Überschneidungen führen. So ist es besser, dass die Variable/das Array nur innerhalb der Funktion existiert.

zu c) Semikolons am Ende einer Zeile werden nicht benötigt. Das ist an dieser Stelle optional. Und nein, es gilt nur für die Zeile. Wenn Du die beiden Zeilen hintereinander schreiben möchtest, musst Du die Angaben durch Semikolon trennen.

--rabies.

Antwort 109 von katy vom 23.04.2020, 17:56 Options

Hallo rabies,

ich bin immer wieder amüsiert über den Code, den karim hier anschleppt.

Das, was euch gerade bewegt
var temp = new Array();
 if (str != "") { str = str.replace(/,/g, "\",\"");
 str = "\"" + str + "\""
 eval("temp = [" + str + "]");
 }
ist eigentlich nur eine sehr ungeschickte Version, einen String in ein Array umzuwandeln. Offensichtlich hatte der Codeurheber nicht bemerkt, dass dafür die Stringmethode split() existiert. Den gleichen Effekt wie obiger Code hat diese simple Zeile:
var temp=str.split(",");


katy

Antwort 110 von katy vom 23.04.2020, 22:34 Options

Hallo allerseits,

ich sehe gerade: der kritisierte Code stammt aus Galileo Computing: JavaScript & AJAX.

Ich bin ja sonst ganz begeistert von dem Buch, aber hier bin ich doch enttäuscht.

katy

Antwort 111 von kaligula vom 28.04.2020, 22:48 Options

33
34 function lesen_collection(name) {
35 var c = laden_collection();
36 return c[name];
37 }
38
39 function speichern_collection(c) {
40 var temp = new Array();
41 for (var e in c) {
42 temp[temp.length]=e;
43 temp[temp.length]=c[e];
44 }
45 cookie_setzen("daten", temp.toString());
46 }
47
48 function schreiben_collection(name, wert) {
49 var c = laden_collection();
50 c[name] = wert;
51 speichern_collection(c);
52 }
53
54 schreiben_collection("Autor", "Christian Wenz");
55 schreiben_collection("Verlag",
56 "Galileo Computing");
57 schreiben_collection("Verlag", "Galileo Press");
58 var autor = lesen_collection("Autor");
59 var verlag = lesen_collection("Verlag");
60 document.write("Autor: " + autor + "<br />\n");
61 document.write("Verlag: " + verlag + "\n");
62 //--></script>
63 </body>
64 </html>


1) was mich etwas irritiert ist die reihenfolge der abarbeitung des codes,denn ich versuche den code zu übersetzen, um zu verstehen was da genau passiert ,z.b. wenn die seite geladen wird passiert soch erst ab zeile 54 etwas, da ja alles davor nur funktionen sind, die erst nach aufruf etwas tun.
Soweit habe ich es kapiert.
Könnt ihr mir kurz erklären, was intern passiert und zu welcher zeile der interpreter nacheinander springt, nehmen wir nur z.b. die zeile 54 und 55 ?



2) a) was bedeutet c[name] ? könnte ein array sein, aber wird so ein array erzeugt ?
b) „return c[name]“ hat mit der for-schleife aus zeile 27 etwas zu tun, aber was genau ?

3) was bedeutet das „e“ in zeile 41 ?
das soll glaub ich eine zählvariable sein, aber sie hat keinen wert, mit was fängt man da dann an intern zu zählen ?

4) welches temp wird in zeile 43 genommen, das aus zeile 42 oder 43 ?
(da wird aus etwas ein string gemacht ??)

5) die zeile 50 verstehe ich auch irgendwie nicht !
c[name] soll irgendwie ein array erstellen,aber warum wird nicht zuerst ein array c erzeugt
var c = new Array()
und welcher vorgang geht da intern vonstatten ?


PS :
der vorgang ,also welche operationen intern nacheinander ausgeführt werden,fällt mir etwas schwer nachzuvollziehen und auch die regeln alle zu verstehen wie z.b. oben in zeile 50,
wenn da plötzlich in einer funktion steht „c[name] = wert;“ wo ich eigentlich weiss, dass man immer erst ein array erstellen muss bevor man es benutzt „var c = new Array ()“ .
wie soll man alle diese regeln im kopf behalten ? gibt es regeln , auf die man sich immer halten muss und auf die man sich immer verlassen kann, die irgendwo geschrieben sind ?

und mit alert kann ich zwar das ergebnis sehen, aber nicht intern was nacheinander ausgeführt wurde z.b. wenn der interpreter zu zeile 55 gelangt und dann intern gleich wieder zu zeile sowieso von da wieder irgendwo hin usw. , kann ich noch schlecht folgen.

aber ich bin etwas optimistisch, dass ich das irgendwie mit eurer hilfe schaffe .

Antwort 112 von kaligula vom 30.04.2020, 21:54 Options

könnte mir jemand antworten,

danke

Antwort 113 von kaligula vom 02.05.2020, 21:10 Options

warum will mir denn meiner antworten ?

danke

Antwort 114 von katy vom 03.05.2020, 09:08 Options

Hallo karim-kaligula,

weshalb ich dir nicht mehr inhaltlich antworte habe ich bereits in Antwort 24 niedergelegt. Ich habe dennoch diesen Thread weiter verfolgt, aber nur um meinen Eindruck bestätigt zu bekommen: Weil du dir den Quellcode nicht richtig erarbeitest bereitest du uns Frustrationen indem du dieselben Fragen immer und immer wieder stellst.

Zu deinem letzten Code hatte ich den Link auf die Quelle gegeben. Dort wird aber auch das meiste von dem erklärt, was du hier fragst. Lies also bitte erst einmal dort sorgfältiger.
Und wenn du schon zitierst dann respektiere auch die Urheber und schreibe dazu von wo das stammt!

Und vielleicht mal ein Tipp, falls du wirklich etwas lernen möchtest: schreibe eigenen Code und stelle dann Fragen dazu, wenn irgendetwas nicht klappt.

katy

Ähnliche Themen

Trojaner???
Wanna  03.06.2007 - 37 Hits - 3 Antworten

Was ist ein Tracking Cookie?
Beginner88  12.08.2007 - 50 Hits - 1 Antwort

kostenloses Cookie Software
Cyberpike  30.08.2007 - 61 Hits - 1 Antwort

Cookie-Button
WeeGeeler  26.10.2007 - 104 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026