• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

gästebuch - eintrag auf echtheit prüfen

Status
Für weitere Antworten geschlossen.

sunflexm

Neues Mitglied
hi,

mein gästebuch naehert sich dem finish :D dank voodoo hab ich jetzt ne dicke blätter funktion, was ich jetzt noch unbedingt brauche, bevor ich mich den adminfunktionen zuwende, ist ein spamschutz. könnte mir vll. jm. sagen wo ich so etwas herbekomme. ich dachte an diese Bilder echtheitsprüfung, wobei man zahlen bzw. buchstaben aus einem radom generierten bild entnehmen muss.

danke
 
Du könntest zum Beispiel jeden Buchstaben auf ein paar Varianten malen und dann die einzelnen IMG-Dateien zufällig einfügen. Mit einem array kannst du festlegen, welches der Bilder (die sind am besten nur durchnummeriert, weil man den Namen des Bidles herausbekommt) welchen Wert besitzt und gleichst das dann mit den Werten aus einem Formular ab.

Gruß Corvulus
 
Du kannst es relativ einfach machen.
Man braucht nur 2 Servervariablen.
Ich zeigs dir anhand eines Beispiels:
PHP:
<?php
session_start(); // Braucht man für die Sicherheitssession

$rnd = rnd(1,999); // Der Random-Sicherheitscode

$_SESSION['spamschutz'] = $rnd; // Nun setzt man die Session mit der gewürfelten Zahl, damit sie beim überprüfen ja nicht anderst ist.

// Nun das Formular
echo'<form action="seite.php" method="post">';

// Hier kommen die anderen Textfelder

// Hier das Spamtextfeld
echo'Bitte geben Sie den Spamschutz in das Textfeld ein: <b>'.$rnd.'</b> <input type="text" name="spamschutz" value="" /><br />';

// Und absenden
echo'<input type="submit" name="schicken" value="Abschicken" />
</form>';
Nun wenn er es abschickt, dann wird eine Session gesetzt mit der random Zahl und er muss sie noch übertragen.

Das Überprüfen ist nun ganz leicht:
PHP:
<?php
// Wieder Session
session_start();

// Nun prüfen, ob was geschickt wurde
if(!isset($_POST['spamschutz'])) // Wenn nichts geschickt wurde über das Spamfeld
{
 echo'Bitte füllen Sie das Spamschutzfeld aus';
}
else // Wenn doch was geschickt wurde, dann checken
{
 if($_SESSION['spamschutz'] == $_POST['spamschutz']) // Wenn also das geschickte, mit der Session übereinstimmt
 {
  // Hier nun Datenbank verbinden und eintragen
 }
 else // Wenn es nicht richtig ist,
 {
  // Meldung ausgeben
  echo'Bitte füllen Sie das Spamschutzfeld richtig aus. <a href="javascript:history.back();">Zurücklink</a>';
 }
}
?>
Is doch ziemlich einfach, oder?
Man kann das auch mit Bildern machen. Dazu ist captcha gut. Aber eine solche Version genügt dicke.


MfG, matibaski

edit:
@Commodore, wieso bedingt sicher?
Mein Gästebuch hat noch n geringeres Spamschutzsystem und hab noch nie PRobleme gekriegt
 
Wenn jetzt aber wer Probleme machen will, dann reicht deines nie und nimmer aus und die Art wie ich es vorgeschlagen habe ist dann auch nurnoch bedingt tauglich.

Gruß Corvulus
 
Das was ich vorgeschlagen habe ist schon einmal besser. Man muss halt überlegen, dass man die Buchstaben mit hintergründen belegt, die ein Scanner nicht so leicht identifizieren kann. Wenn man dann noch keine Fehler macht, womit man die Daten lesen kann, dann sit das ziemlich narrensicher und soltle für dich reichen. ;-)

Gruß Corvulus
 
captcha ist das sicherste, groß, bunt, dynamisch, drehung der buchstaben, wechselnde fonts, dynamischer hintergrund, u.s.w.

<stumpfsinn>

super ist auch der spammschutz von Wettbewerb | INITIATIVE-DEUTSCHLAND | www.zensiert.to | Hier trifft sich Deutschlands intellektuelle Elite!


Wo fliest der Nil?(Land)
Zu welchem Land gehört Polen? deu...
Wieviel Ohren hat der Mensch?
Wieviel sind 8,80Euro in Cent?
vervollständige die Wortkette: titten, titten, titten,
Welcher Buchstabe ist auf der deutschen Tastatur rechts neben dem "q"?

+rofl+
</stumpfsinn>
 
Ein Captcha ist die wohl sicherste Variante, auch wenn sie schwer zu benutzen ist.

Von solchen Fragen gibt es nur begrenzt viele, man braucht nur einige davon in einen Spambot einzuspeisen und der muss dann nur so oft reloaden, bis eine Frage aus seiner Datenbank da ist.
 
Du könntest dir dein eigenes captcha bauen mit php.
Ich habe dafür mal die Schriftarten
  • exitfont
  • turn
gewählt (Du findest sie im Anahng). Benutzen kannst du aber alle Schriftarten.
PHP:
<?php
error_reporting(E_ALL);
header("Content-type: image/jpeg");

$code = $_GET["code"]; //anzuzeigender Code

$size = Array(300,30); //größe des Captcha
$fonts = Array("exitfont.ttf","turn.ttf"); //Schriftdateien
$colors = Array("backround"=>"255,255,255","foreground"=>"0,0,0"); //Farben
$angles = range(-20,20); //Winkelbereich für die Buchstaben
$size = range(16,20); //Schriftgröße der Buchstaben
$paddingx = 20; //x-Abstand der Buchstaben
$paddingy = range(5,15) //y-Abstand nach oben

$image = imagecreate($size[0],$size[1]); //Bild erstellen
$foregroundc = explode(",",$colors["foreground"]);
$foreground = imagecolorallocate($image,$foregroundc[0],$foregroundc[1],$foregroundc[2]);
$backgroundc = explode(",",$colors["background"]);
$background = imagecolorallocate($image,$backgroundc[0],$backgroundc[1],$backgroundc[2]);

//Hintergrund füllen
imagefilledrectangle($image,0,0,$size[0],$size[1],$background);


for($i = 0,$i < strlen($code); $i++) {
    //Buchstaben auf das Bild schreiben
    imagettftext($image,$size[array_rand($size)],$angles[array_rand($angles)],$paddingx*($i+1),$paddingy[array_rand($paddingy)],$foreground,$fonts[array_rand($fonts)],$code[$i]);
}

//Bild ausgeben
imagejpeg($image);
?>

Habs jetzt aus dem kopf gemacht, ich weiß nicht ob es fehlerfrei läuft.
Wenn man es noch sicherer haben möchte macht man noch ein bild in den hintergrund, nimmt schwer lesbare schriften und verschiedene farben.

aufruf über
Code:
<img src="captcha.php?code=234asSe">
würde dann auf dem bild 234asSe ausgeben

greez
 

Anhänge

Für die, meiner Meinung nach, beste Methode hab ich hier mal ein beispiel gebastelt.



Man muss nicht mal mehr von der Maus auf die Tastatur wechseln um "zu bestätigen das man ein Mensch ist".

MFG Epi
 
Zuletzt bearbeitet von einem Moderator:
Also das von Slibbo ist meiner Meinung nach auch das Beste. Kenne das aus einem Browsergame. Geht schnell udn nur alle 50 bis 100 Mal gitb es ein Fehler (man kann die Grafik ja immer neu laden). Ich weiß nur nicht genau, wie man das machen kann, da die Browser nicht immer Transparente Gegenstände unterstützen.

Gruß Corvulus
 
Es ist eigentlich ganz einfach bloß viele wissen es nicht.

Wenn man in einem Form Tag einen button als image verwendet also

Code:
<input src="./bild.jpg" type="image" />

dann wird dieser button ja als Submit button verwendet.

Wenn man nun auf selbigen klickt werden immer die X und die Y koordinaten mit übergeben also die stelle auf die geklickt wurde.

Damit kann man dann ganz einfach berechnen ob man in den kreis geklickt hat, wenn man die koordinaten des kreises speichert :P

was mir jetzt noch eingefallen ist ist das man ja auch einfach nur den mittelpunkt des kreises und den radius speichern müsste somit währe das captcha noch genauer ^.^

also viel spaß damit :P
 
Fallls es jemanden interessiert:


(x1 | y1) sind koordinaten des Mittelpunktes
(x2 | y2) sind koordinaten, die man geklickt hat
r ist der Radius


PHP:
if(pow(x1 - x2, 2) + pow(y1 - y2, 2) <= r * r){
    //Richtig geklickt
} else {
    //Falsch geklickt
}


Das ist ehrlichgesagt die beste Methode, die ich bisher fuer ein Captcha gesehen habe, ausserdem ziemlich einfach herzustellen :D
 
Nabend
So ein Spamschutz kann auch ganz unsichtbar für den User sein. Und das im wahrsten Sinne das wortest. Hier ein Beispiel:
Im Quelltext:
HTML:
<textarea name="text" id="text"></textarea>
<textarea name="qwertz"></textarea>
In einem externen Stylesheet:
Code:
#text { display:none; }
Dann nach dem Absenden:
PHP:
if(!empty($_POST['text']))
    die("Böser Bot");
// Ansonsten weitere bearbeitung

Die meisten Bots werden wohl eher nicht allen Requests folgen, somit wäre diese Methode relativ sicher.

Gruß
Voodoo

und guten Rutsch...
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben