Beiträge von SinnlosS

    taetigkeit: int 1
    start: int 12
    end: int 12

    Eine Spalte nennst du taetigkeit und speicherst darin eine Ziffer. Dabei steht beispielsweiße 1 für Küchendienst, 2 für Aufsicht usw.. Natürlich kannst du auch einen Buchstaben oder den ganzen Namen darin speichern.

    In start speicherst du den jetzigen Timestamp, an dem die Tätigkeit beginnt und in end den Timestamp, and denen die Tätigkeit endet.

    Ich kopiere hier mal eine Standard-Antwort aus einem anderen Forum:

    Standardantwort/FAQ:
    Um Uhrzeiten oder Daten in einer MySQL Datenbank zu speichern, sollte kein Unix-Timestamp und kein anderes komisches Format verwendet werden.

    MySQL stellt mehrere optimale Datentypen bereit:

    • DATETIME für ein Datum und eine Uhrzeit
    • TIME für eine Uhrzeit
    • DATE für ein Datum.
    • TIMESTAMP, ebenfalls für Datum und Uhrzeit. Letzterer sollte immer dann zum Einsatz kommen, wenn bei Datenveränderungen der Zeitpunkt der Modifikation gespeichert werden soll.


    Diese Datentypen haben zwei wichtige Vorteile:

    • MySQL kann hervorragend damit umgehen und Berechnungen damit durchführen z.B. Uhrzeiten voneinander abziehen. Eine komplette Funktionsreferenz findest du hier.
    • Speicherung in einem leicht lesbaren Format: YYYY-MM-DD HH:MM:SS

    Wenn in dem Varchar-Feld das Datum im Format YYYY-MM-DD steht, kannst du den Feldtyp einfach in phpmyadmin auf DATE umstellen, die Daten bleiben erhalten.

    Da du scheinbar noch Anfänger bist würde ich dir raten, die Debug-Anleitung von Bandit nochmal genau anzuschauen und in Zukunft zu berücksichtigen, auch wenn man als Anfänger vielleicht noch nicht den ganzen Nutzen erschließen kann (ging mir früher mal nicht anders). Das ist wirklich ein sehr guter Weg um Fehler zu finden. Wenn man die Schritte beherzigt kann man fast alle Fehler selber beseitigen

    Captcha-Vermeidungswege find ich immer gut. Habe das Formular 2x ausgefüllt. Beim ersten mal mit normalem Eintippen 12,41 Sekunden, beim zweiten Mal mit autocomplete 6,25 Sekunden.
    Ich denke wenn du pro Eingabefeld 1,5 Sekunden rechnest bist du auf der sicheren Seite. Falls tatsächlich mal ein echter Besucher schneller sein sollte kannst du ja immer noch einen Hinweis ausgeben, dass das Formular aus Gründen der Spamvermeidung erst nach x Sekunden abgeschickt werden kann.
    Sehr gut bewährt hat sich bei mir bisher auch die Methode ein input-Feld mit einem Namen den jeder Bot ausfüllen dürfte (z.B. email, homepage, name ...) per CSS auf hidden zu setzen und nach dem Abschicken zu prüfen ob das Feld ausgefüllt wurde. Falls ja war es ein Bot (hab das hier glaub schon mal irgendwo geschrieben). Das Feld sollte aus Gründen der Barrierefreiheit mit einem Label wie "Dieses Feld nicht ausfüllen" versehen werden.
    Dann noch das hier bereits angesprochene IP-Logging und du bist für die meisten Seiten schon auf der - ziemlich - sicheren Seite.
    Meiner Meinung nach sollten solche Schritte immer der erste Weg sein und Captchas erst dann eingefügt werden, wenn man trotzdem noch viel Spam bekommt, also erst wenn man den Bedarf auch belegen kann.

    Wie hier schon gesagt wird, ein Bot der extra auf deine Seite angepasst ist, wird davon nicht abgehalten werden. Aber meiner Meinung nach halten da sehr sehr sehr viele Webentwickler ihre Seiten für viel zu bedeutend. Sicherheit und Spamschutz sind natürlich immer wichtig, es schadet aber nicht da eine gewisse Verhältnismäßigkeit zu wahren. Das Kontaktformular auf der privaten Seite von Peter Müller mit <10 unique Besuchern im Monat braucht beim besten Willen kein kompliziertes Captcha, nur damit der Webentwickler zeigen kann, dass er es kann.
    Wenn es wirklich nötig sein/werden sollte, würde ich zu einer Lösung mit Fragen, wie im Vorschlag von Synaptic, raten.
    Und wenn es wirklich um jeden Preis Captchas sein sollen, dann wenigstens keine farbigen. Ich z.B. habe eine Rot-Grün-Sehschwäche, was bei Männern recht verbreitet ist, und bin da schon häufiger auf Captchas gestoßen die ich beim besten Willen nicht entziffern konnte.
    Für mich ein Grund eine solche Seite nicht mehr zu besuchen.

    In php machst du eine Weiterleitung mit

    PHP
    header("Location: http://www.example.com");
    exit;

    Da kannst du aber keine Verzögerung einbauen, und du darfst vorher nichts an den Browser ausgegeben haben, was du offensichtlich vorhast. Andernfalls würde die Verzögerung von 3 Sekunden ja keinen Sinn machen, außer dem Besucher auf die Nerven zu gehen.

    Für deinen Zweck ist das Beispiel von Gebby passend.

    und wenn formular auf selbiger seite ist wie alles andere, würde dann ja schon bei formulareintragung weiterleiten

    Nicht wenn du es als bedingte Ausgabe umsetzt.


    SinnlosS
    Naja, der Code wird jetzt nicht auf einmal toll, wenn man den Code in eine Variable schreibt und am Ende ein echo einfügt, da braucht es schon mehr. Aber stimmt schon, dass bei einer guten Struktur die Ausgabe in der Regel wirklich erst am Ende statfindett, z.B. bei der Template-Verarbeitung.


    Das stimmt, (HTML-)Code hat in den Variablen nichts verloren, sondern eben nur die für die Anzeige dynamisch generierten Inhalte.
    Sobald die Ausgabe beginnt sollte PHP dann nur noch als Template-Engine fungieren, und keine verarbeitenden Funktionen mehr ausführen.
    Ob man dafür dann eine Template-Engine wie Smarty nutzt, oder die Inhalte im HTML-Teil an den entsprechenden Stellen via <?php echo $var; ?> einfügt spielt keine Rolle.
    Ausgabe und Verarbeitung sollten halt einfach getrennt werden bei einer sauberen, gut wart- und erweiterbaren Struktur.

    Naja, so wird es halt im output-buffer zwischengespeichert, ist auch nicht groß anders…

    Es geht ja auch um die Code-Strukturierung. Und da macht es sehr wohl einen Unterscheid ob die Ausgaben über das ganze Script/die ganzen Scripte verteilt sind, oder kompakt an einer Stelle zum Schluss.


    Am Anfang deines Scriptes fügst du ob_start() ein, wie du es ja schon gemacht hast. Am Ende deines Scriptes dann ob_end_flush().

    Beim Anlegen einer Datenbank gibst du einen Zeichensatz für die Datenbank an, dieser wird als default-Zeichensatz für Felder verwendet, wenn du nicht explizit einen anderen Zeichensatz angibst. Zusätzlich gibst du auch einen Zeichensatz für die MySQL-Verbindung an. Dieser muss ebenfalls utf-8 sein.
    Deine .php-Dateien müssen auch im richtigen Format gespeichert (utf-8 ohne BOM, kein ANSI).

    Da er die Anzahl will würde ich noch COUNT()'s einbauen. ;)

    Ich bin mir gerade auch nicht sicher, wie sich INNER JOIN in Kombination mit Aggregatfunktionen wie COUNT() verhält, wenn keine zugehörigen Einträge gefunden werden. Gegebenenfalls LEFT JOIN verwenden und ifnull() für die COUNT()'s ergänzen:

    Danke für die Antwort.
    Auch ist das Feld 'recaptcha_response_field' im HTML Quelltext zu finden.

    HTML
    <noscript> 
              <iframe src="http://www.google.com/recaptcha/api/noscript?k=6LdRTrsSAAAAAKQM_fVHqc9f4KzphumPVV-4wfNH" height="300" width="500" frameborder="0"></iframe><br/> 
              <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea> 
              <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/> 
        </noscript></div>


    Öhm, aber da ist es ja nur im <noscript>-Bereich, d.h. das Feld gibt es nur wenn JavaScript deaktiviert ist.
    Hast du das mit deaktiviertem Javascript getestet? Und kannst du davon ausgehen, dass alle Besucher Javascript deaktiviert haben?

    [edit] Auf der verlinkten Seite sehe ich Captchas jetzt ehrlich gesagt auch gar nicht als nötig an. Ein per CSS verstecktes Formular-Feld mit einem Namen wie z.B. "email" (also ein Feldname der von Bots garantiert ausgefüllt wird) sollte vollkommen reichen. Kein Grund Besucher mit Captchas zu quälen. Auf der Seite die das Formular verarbeitet wird dann einfach geprüft ob das Feld ausgefüllt wurde, wenn ja war es ein Bot (normale Besucher einer Website füllen i.d.R. keine versteckten Formularfelder aus).
    Gegen Refresh-Scherzbolde dann noch die IP in der Session speichern und maximal 2-3 Formularversendungen pro Stunde und IP erlauben, fertig.
    Besucher werden es dir danken.
    Auf Webseiten die ich bisher gemacht habe hat diese Prozedur bisher immer locker ausgereicht.

    [edit2] Brauchbarer Link zu dem Thema: http://www.1ngo.de/web/captcha-spam.html

    (Ja, ich verabscheue Captchas zutiefst und rate jedem dazu, sie wirklich erst dann zu verwenden, wenn alle anderen Optionen versagt haben und man immer noch mit Spam zugebombt wird. 90%+ der Captchas die man im Netz findet sind meiner Meinung nach überflüssig, und für mich persönlich oft ein Grund eine Seite nicht mehr zu besuchen.)

    Ich hab zwar keinen Plan von recaptcha, aber die Fehlermeldung ist eindeutig:
    Das Post-Formular das die if-Bedingung aufruft hat kein Feld mit Namen 'recaptcha_response_field'.
    Daher existiert im POST-Array dieser Index nicht.