Peter Bucher - Mein Experiment, meine Spielereien, meine Welt...   ·   Stefan Falz   ·   Jürgen Gutsch   ·   Golo Roden   ·   ASP.NET Zone   ·   Microsoft ASP.NET
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe

Simples Text Captcha mit ASP.NET

Es gibt viele Captcha Controls im Web zu finden.
Trotzdem möchte ich hier eine einfache Variante vorstellen.
Diese Variante benutzt ein Label, um eine Rechnung darzustellen, bspw. "5 + 6 =".
Eine Textbox fürs Resultat, ein Button und ein Statuslabel wir im Beispiel verwendet.

Ich benutze einen ähnlichen Code auf http://www.peterbucher.ch/, bis jetzt habe ich noch nie Spam bekommen :)

Viel Spass damit...

ASPX Code:

<h1>SimpleCaptcha</h1>
<asp:Label ID="lblCaptcha" AssociatedControlID="txtCaptcha" runat="server" />
<asp:TextBox ID="txtCaptcha" runat="server" />
<asp:Button ID="btnSubmit" Text="Abschicken" runat="server" />
<asp:Label ID="lblStatus" runat="server" />

Codebehind:

using System;
using System.Drawing;


namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e) {
            // Textbox Inhalt zuweisen
            // Resultat in die Session Speichern
            if(!this.IsPostBack) {
                Random r = new Random();
                int num1   = r.Next(1, 15);
                int num2   = r.Next(1, 15);

                this.lblCaptcha.Text = string.Format("{0} + {1} =",
                                                     num1.ToString(),
                                                     num2.ToString());

                this.Session["captcha"] = num1 + num2;
            } else {
                // Status anzeigen
                if(this.ValidateCaptcha()) {
                    this.lblStatus.Text         = "Eingabe korrekt";
                    this.lblStatus.ForeColor = Color.Green;
                } else {
                    this.lblStatus.Text         = "Eingaben fehlerhaft";
                    this.lblStatus.ForeColor = Color.Red;
                }
            }
        }

        /// <summary>
        /// Validiert die Eingabe
        /// </summary>
        /// <returns>true / false - Eingabe richtig oder falsch</returns>
        protected bool ValidateCaptcha() {
            object session = this.Session["captcha"];
            object input     = this.txtCaptcha.Text;

            if(session != null && input != null) {
                int s, i;
                return (int.TryParse(session.ToString(), out s)
                        &&
                        int.TryParse(input.ToString(), out i)
                        && s.Equals(i));
            }

            return false;
        }
    }
}

Beispielprojekt zum Download:

Veröffentlicht Sonntag, 11. Mai 2008 01:56 von Peter Bucher
Abgelegt unter: , , , ,

Kommentare

# re: Simples Text Captcha mit ASP.NET

hallo peter,

habe grade dein beispiel-projekt runtergeladen, da ich aber nicht der wirkliche asp-profi bin, versteh ich nicht wo und wie ich die verschiedenen dateien z.b. in eines meiner einfachen gästebücher www.dav-oy.de/gaestebuch einbinden muss.

kannst du mir bitte auf die sprünge helfen?

vielen dank und grüße aus dem allgäu

harald

Sonntag, 6. Juli 2008 16:48 by harryc

# re: Simples Text Captcha mit ASP.NET

Hallo Harald

Das scheint auf den ersten Blick aber reines Html oder Classic ASP zu sein.

Wenn ja, geht das natürlich nicht, du benötigst ASP.NET auf dem Server.

Wenn es ASP.NET sein sollte, brauchst du dir nur das Beispielprojekt mit Visual Studio zu öffnen, dann siehst du wie es gestrickt ist.

Kostenlose Express Version:

- http://www.microsoft.com/germany/Express/

Du kannst aber etwas ähnliches mit Classic ASP nachbauen.

Freitag, 11. Juli 2008 03:06 by Peter Bucher

# re: Simples Text Captcha mit ASP.NET

hallo peter,

es ist classic ASP. hast du da nicht nen tipp für mich, wie ich dein script modifizieren muss bzw. wo es was ähnliches fertiges gibt?

danke

Samstag, 12. Juli 2008 11:30 by harryc

# re: Simples Text Captcha mit ASP.NET

Hallo Harry

Du hast in Classic ASP die gleichen Möglichkeiten, die es dafür benötigt: Session, Zufallszahlen, in- und output.

Es muss nur ein wenig anders aufgebaut werden.

Ich werde ein kleines Beispiel online stellen, damit du die Unterschiede siehst.

Samstag, 12. Juli 2008 15:37 by Peter Bucher

# Simples Text Captcha mit Classic ASP

Da es anscheinend immer noch solche gibt, die noch mit Classic ASP arbeiten, habe ich mein Captcha Beispel

Samstag, 12. Juli 2008 16:56 by Peter Bucher

# re: Simples Text Captcha mit ASP.NET

Samstag, 12. Juli 2008 16:58 by Peter Bucher

# catcha test

test

Montag, 14. Juli 2008 16:40 by harryc

# re: Simples Text Captcha mit ASP.NET

sorry peter,

aber das script wird aus irgendeinem grund nicht korrekt ausgeführt:

- die beiden zufallszahlen erscheinen nicht

- im eingabefeld erscheinen asp-code-schnipsel

danke für ne idee

harry

Montag, 14. Juli 2008 16:46 by harryc

# re: Simples Text Captcha mit ASP.NET

Hallo Harry

Schau mal in die Mail.

Darin steht vorallem:

[quote user="Peter Bucher"]

Hallo Harry

danke für deine mühe.

Bitte

der code scheint einen bug zu enthalten:

- die beiden zufallszahlen werden nicht angezeigt und

- im eingabefeld wird dieser code-schnipsel angezeigt: <%= Request.Form(

- nach dem eingabefeld wird noch angezeigt: " />

der abschicken-button ist wieder OK

Nö, laut deinen Angaben wird der ASP Code nicht abgearbeitet.

Ich habe den Code getestet, das läuft soweit.

[/quote]

Grüsse, Peter

Dienstag, 15. Juli 2008 00:52 by Peter Bucher
Anonyme Kommentare sind nicht zugelassen