#1 5. November 2012 Captcha nur an bestimmten Tagen / Zeiten hi, ich wollte gerne wissen ob es auf einfachstem wege möglich ist ein captcha sagen wir fr ab 22 bis 6 uhr einzublenen und an "festen" wie helloween , da hier vermehrt spam aufkommen bei mir stattfindet. Das ganze soll bei einem Gästebuch eingebunden werden, ist es also Freitag 23 uhr kommt einzufalls captcha das eingegeben werden muss ist dieses korrekt ab ins Gästebuch. Bin für ALLE tipps daaaaankbar 1 Person gefällt das. + Multi-Zitat Zitieren
#2 5. November 2012 AW: Captcha nur an bestimmten Tagen / Zeiten Hey, klar ist das ohne Probleme möglich: 1) Du baust eine Funktion zum Prüfen ob zum aktuellen Zeitpunkt ein Captcha notwendig ist 2) Du baust das Ergebnis der Prüfung bei der Ausgabe des Captcha's ein 3) Du baust das Ergebnis der Prüfung bei der Validierung des Captcha's ein In PHP könnte diese Funktion zB so aussehen: PHP: <? php function EnableCaptcha (){ // Prüfung für Freitag ab 23:00 if ( date ( "w" ) == 5 ) { if ( date ( "H" ) >= 23 ) { return true ; } } // Prüfung für Samstag bis 06:00 if ( date ( "w" ) == 6 ) { if ( date ( "H" ) < 6 ) { return true ; } } return false ;} ?> Gruß Blackb!rd 1 Person gefällt das. + Multi-Zitat Zitieren
#3 5. November 2012 Zuletzt bearbeitet: 6. November 2012 AW: Captcha nur an bestimmten Tagen / Zeiten oder so PHP: <? php // date('w')// Numerischer Tag einer Woche // 0 (für Sonntag) bis 6 (für Samstag) function EnableCaptcha (){ $wochenTage = array( 1 , 2 , 3 , 4 , 5 ); return in_array ( date ( 'w' ), $wochenTage );}if( EnableCaptcha ()){ echo 'zeige Captcha' ;}else { echo 'zeige kein Captcha' ;} // edit nicht persönlich nehmen, aber der sinn und zweck eines forums ist lösungen zu problemen öffentlich zu machen. ich bleib sehr oft in div. foren hängen, weil auf einmal alles per PN komuniziert wird. find ich blöd. daher, wenn du noch fragen hast und lösungen benötigst, dann stell deine fragen öffentlich. dann können mehr leute helfen und besucher können die lösung nachlesen. prinzpiell gilt: es gibt keine doofen fragen, es gibt nur doofe antworten! hier eine erweiterung (geht sicher noch schicker) PHP: <? php // http://php.net/manual/de/function.date.php// date('w')// Numerischer Tag einer Woche // 0 (für Sonntag) bis 6 (für Samstag)// die(date('d.m.Y H:m:s')); function EnableCaptcha (){ $wochenTage = array( 1 , 2 , 3 , 4 , 5 , '16.11' , '24.12' ); $return = false ; if( in_array ( date ( 'w' ), $wochenTage ) || in_array ( date ( 'd.m' ), $wochenTage )){ $return = true ; }else if( date ( 'd.m.Y' ) == '06.11.2012' && date ( 'G' ) >= 20 ){ $return = true ; }else if( date ( 'd.m' ) == '31.10' && date ( 'G' ) >= 23 ){ $return = true ; }else if( date ( 'd' ) == '30' && date ( 'G' ) <= 8 ){ $return = true ; }else if( date ( 'd' ) == '01' && date ( 's' ) <= 30 ){ $return = true ; } return $return ;}if( EnableCaptcha ()){ echo 'zeige Captcha' ;}else { echo 'zeige kein Captcha' ;} mehr zum datum findest du hier wie das in deinem guestbook einzubinden und ggf. die routine überbrückt wird, kann ich dir so nicht sagen. man könnte es mit nem hidden input mal probieren in dem der code steht. in etwas so: PHP: if( EnableCaptcha ()){ echo $captcha ;}else { echo '<input type="hidden" name="captcha" value="' . $code . '" />' ;} viel erfolg und wie gesagt nicht persönlich gemeint + Multi-Zitat Zitieren
#4 6. November 2012 Zuletzt bearbeitet: 6. November 2012 AW: Captcha nur an bestimmten Tagen / Zeiten tut mir leid war nicht böse gemeint, so eine kurze frage noch und daaanke viel viel mals werd es anpassen für die fast fertige lösung von dir. Das Captcha nicht IMMER anzeigen sondern eben nur zufalls mässig also wenn von fr 22 uhr bis sa 6 uhr das captcha läuft nicht immer ausgeben sondern nur zufällig. Und was bedeutet }else if(date('d.m.Y') == '06.11.2012' && date('G') >= 20){ $return = true; bzw. das 20 oder 30 hier bzw. oben steht 16.11 warum hier nicht unten bei der else if ? :O Hab das datum auf 07.11 geändert obwohl heute der 6 ist und er sagt mir zeige Captcha ,.. liegts an mir ??? O_O + Multi-Zitat Zitieren
#5 6. November 2012 AW: Captcha nur an bestimmten Tagen / Zeiten Erstmal checken, ob das Captcha überhaupt angezeigt werden soll (also die Uhrzeit/das Datum stimmt) und dann [g]PHP Zufall[/g] (du kannst zB mit mt_rand() eine 0 oder 1 erzeugen lassen) Was genau irritiert dich? date('G')? -> date() (wie auch schon von onip gepostet) + Multi-Zitat Zitieren
#6 7. November 2012 AW: Captcha nur an bestimmten Tagen / Zeiten und hier nochmal ne erweiterung mit erklärung. guck dir unbedingt date() im php manual an, das erklärt so einiges! PHP: <? php // http://php.net/manual/de/function.date.php // date('w') // Numerischer Tag einer Woche // 0 (für Sonntag) bis 6 (für Samstag) // die(date('d.m.Y H:m:s')); function EnableCaptcha (){ $wochenTage = array( 1 , 2 , 3 , 4 , 5 , '16.11' , '24.12' ); $return = false ; // prüfen ob ... // ... wochentag date(w) (0-6) // ... datum date('d.m') (tag.monat) // -> wochentage in_array $wochenTage, oder datum jedes jahr in_array $wochenTage if( in_array ( date ( 'w' ), $wochenTage ) || in_array ( date ( 'd.m' ), $wochenTage )){ $return = true ; } // ... datum date('d.m.Y') (tag.monat.jahr) // ... und uhrzeit date('G') (24 std. ohne null) // -> einmalig am 06.11.2012 ab 20 h else if( date ( 'd.m.Y' ) == '06.11.2012' && date ( 'G' ) >= 20 ){ $return = true ; } // ... datum date('d.m') (tag.monat) // ... und uhrzeit date('G') (24 std. ohne null) // -> jedes jahr am 31.10 ab 23 h else if( date ( 'd.m' ) == '31.10' && date ( 'G' ) >= 23 ){ $return = true ; } // ... tag des monats date('d') (tag) // ... und uhrzeit date('G') (24 std. ohne null) // -> jeden 30. im monat bis 9 h else if( date ( 'd' ) == '30' && date ( 'G' ) <= 8 ){ $return = true ; } // ... tag des monats date('d') (tag) // ... und sekunden date('s') (sekunde mit null) // -> jeden 1. im monat alle 30 sek. else if( date ( 'd' ) == '01' && date ( 's' ) <= 30 ){ $return = true ; } // ... uhrzeit date('G') (24 std. ohne null) // -> jeden tag zwischen 22 und 6 h else if( date ( 'G' ) >= 22 && date ( 'G' ) <= 6 ){ $return = true ; } // -> zufall else{ $return = rand ( 0 , 1 ); } return $return ; } if( EnableCaptcha ()){ echo 'zeige Captcha' ; }else { echo 'zeige kein Captcha' ; } 1 Person gefällt das. + Multi-Zitat Zitieren