Beiträge von phore

    Kannst du nicht, aus Sicherheitsgründen. Javascript ist da (aus gutem Grunde) sehr streng. Nehmen wir an, der User lädt was von seiner Arbeitsstelle hoch und sein Benutzerordner ist /firmenname/users/seinvollername. Dann könnte jede Webseite, auf der man Dateien hochladen kann, seinen vollen Namen und Arbeitsgeber auslesen.

    Oder stell dir mal vor, du könntest den Wert sogar ändern, dann könntest du ja von der Festplatte des Users hochladen was du willst..

    Das Problem war die Variable "class". Hab sie überall umbenannt und der Fehler ist weg.

    Persönlicher Tipp: ich würde das Menü-aufklappen onclick machen, nicht onhover. Nervt irgendwie so.
    Tipp2: für solche Sachen (Menü nachladen) eignet sich AJAX nur bedingt. Die Menüpunkte bleiben ja gleich. AJAX verwendet man am besten um verändernde Daten nachzuladen. Für gleichbleibende Daten ist es keine Schande das Menü zb. beim Seitenaufruf einfach in ne Javascript Variable zu packen und die zu verwenden. AJAX ist cool - sollte aber sinnvoll verwendet werden.

    Poste bitte mal den ganzen code als HTML Datei - dann seh ich mir das an.

    Zum $():
    Es ist nicht nur schneller, du schreibst auch weniger Code und dein Code bleibt wartbarer. Warum du dich bewusst für eine schlechtere Variante entscheidest kann ich mir nicht erklären :roll: Ausserdem: wenn du dir jetzt einen sauberen Code Stil angewöhnst, wird sich das mal auszahlen wenn du JS Projekte schreibst mit einigen tausend Zeilen Code. Dann machen solche Sachen halt einen Unterschied.

    Moin.

    Ich denke, dass der IE bei der ersten Zeile rausgeht. Probier mal statt der typeof() Zeile nur mal so: if ($(menuDiv).innerHTML == "")

    Wenns nicht das ist, schmeiss mal alles aus der Funktion raus und setz es Stück für Stück wieder ein, dann findest du schnell den Fehler.

    Übrigens: mit $(menuDiv) machst du im Prinzip jedes mal ein document.getElementById(menuDiv) - also suchst jedes mal wenn du auf das Element zugreifst den ganzen DOM ab (ausser das JS Framework cached das Element, was ich aber bezweifle). Das ist ein Fehler, was sich bei grösserem Codeumfang schnell auf die Performance auswirkt. Setz Elemente, die du mehrmals brauchst, nur einmal:

    Code
    var menuDiv = $('menu_id');

    b) wenn du php hast, aber keine datenbank, dann erstell dass layout für die seite.
    und je nachdem welche sprache gewählt is bindest via include ne andere textseite
    ein. du hast dann praktisch des layout 1x und jeden inhaltstext pro sprache einmal.

    c) mit php und datenbank kannst alle texte in die datenbank reinschreiben. dann
    erstellste dein layout und lädst aus der db immer die sprache, die du gerade brauchst.

    Falls du dich für eine dieser Varianten entscheidest, schau dir mal die gettext Funktion in PHP an: http://ch2.php.net/gettext

    Ohne das Beispiel genau zu prüfen, nehme ich an, dass es wegen dem foreach Loop ist.
    So führst du bei jedem Loop ein mysql_fetch_assoc aus, also schreibst quasi das repräsentierte Array neu, und dann holt dir foreach nur das erste Array Element:

    PHP
    foreach (mysql_fetch_assoc($result) as $zelle)

    So hingegegen, führst du mysql_fetch_assoc nur einmal aus und so sollte es auch funktionieren:

    PHP
    $a_results = mysql_fetch_assoc($result);
    foreach ($a_results as $zelle)

    Vermeide, besonders bei Datenbankabfragen, wiederholten Code. Also auch wenn das erste Beispiel funktionieren würde, würdest du vielleicht 100 mal mysql_fetch_assoc() ausführen bevor dein Code durchlaufen wäre. Beim zweiten Beispiel hingegen nur einmal.

    Btw. in einer objektorientierten Umgebung kannst du mal mysql_fetch_object anschauen.

    Du prüfst auch nicht, ob schon was eingegeben wurde. Dein Script wird also immer 2x ausgeführt: 1x beim Laden der Seite und 1x beim Speichern (= neuladen) der Seite. Prüfe also, ob das Formular überhaupt bearbeitet wurde, bevor du was speicherst:

    Dein Script ist so übrigens etwa so unsicher wie irgend möglich. Ich hoffe du informierst dich zuerst über PHP Sicherheit bevor du sowas ins Internet stellst.

    Wenn du ein Bild aus der Realwelt nimmst, dann muss es fast ein statisches sein. Und dann muss man nur einmal seinen Bot einstellen und schon bringt es nichts mehr.

    Wenn du dynamisch z.B. Vögel auf ein Bild renderst, dann ist es auch für den Bot möglich sie auszulesen, wenn man ihm das mal beigebracht hat.

    Erst wenn du komplexe Grafiken machst, z.B. mit verschiedenen Vogelformen in verschieden Perspektiven in einem verschleiertem Bild, wird es wirklich sicher. Doch da bist du schon wieder nah am Captcha, was ja auch nur verlangt, dass du ein paar Buchstaben abtippst aus einem verschleierten Bild.

    Ich habe das mal in einem Formular so gelöst:
    -ein ankreuzfeld per css versteckt das wenn es aktiviert wird der eintrag als spam gilt. Daneben stand dann auch hier nicht klicken weil spamschutz.

    Kannst das Feld auch per CSS verstecken dann bekommen deine User das nicht mal mit.

    Zusammenfassend kann man sagen, dass man einen Spamschutz am besten auf seine Seite abstimmt. Ein Bild-captcha ist die allgemein gültige nervige Lösung - und je nach Webseite/Zielpublikum/usw. kannst du unauffäligere, bessere Spamschutz' einbauen.

    Kein Ding. Bevor du das Script aber online stellst informier dich bitte mal über PHP Sicherheit und schau dir mal ein ausgereiftes Uploadscript an. Dein Script hat noch viel Verbesserungspotenzial.

    Btw: successful ohne "ll". :)