[GastForen Programmierung/Entwicklung PHP und MySQL Wie Capcha verlgleichen?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Wie Capcha verlgleichen?

Blackhead77
Beiträge gesamt: 118

2. Jan 2008, 15:16
Beitrag # 1 von 4
Bewertung:
(1352 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Habe jetzt einen Capcha gefunden der funktioniert ich möchte jetzt nur noch wissen wie ich die Variable in der diese Gespeichert ist mit meinem Eingabe Feld vergleichen kann?
Der Capcha Code:
Code
<?php 
# Von Rene Schmidt ([email protected]) fuer DrWeb.de

// Diese Klasse erzeugt EINE Ziffer
class Digit {

// Die Zweierpotenzen sind hier schon berechnet notiert, damit sie nicht jedes Mal neu
// ausgerechnet werden muessen. Wir benoetigen fuer eine 5x3-Matrix, deren Zellen mit
// Zweierpotenzen maskiert sein sollen 15 Bits, also die Bitmasken 2^0 bis 2^14
var $bits = array(1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384);

// Dieses Array enthaelt die Zeilen einer Ziffer, deren Zellen wiederum als Array dargestellt werden
// Siehe Konstruktor
var $matrix = array();

// Dies sind die fertig berechneten Bitmasken der Ziffern 0 bis 9 in Dezimaldarstellung
var $bitmasks = array(31599, 18740, 29607, 31143, 18921, 31183, 31695, 18855, 31727, 31215);

// Konstruktor; nimmt die darzustellende Ziffern entgegen; Matrix wird initialisiert
// setMatrix() wird mit der korrekten Bitmaske der darzustellenden Ziffer aufgeruefen
function digit( $dig ) {
$this->matrix[] = array(0, 0, 0); // 2^0, 2^1, 2^2 ... usw.
$this->matrix[] = array(0, 0, 0);
$this->matrix[] = array(0, 0, 0);
$this->matrix[] = array(0, 0, 0);
$this->matrix[] = array(0, 0, 0); // ..., ..., 2^14

((int)$dig >= 0 && (int)$dig <= 9) && $this->setMatrix( $this->bitmasks[(int)$dig] );
}

// Methode erzeugt anhand der Bitmaske die Matrix der Ziffer
// Vom Konstruktor erhaelt die Methode die Bitmaske der darzustellenden Ziffer
function setMatrix( $bitmask ) {
$bitsset = array();

// Jetzt wird jedes Bit daraufhin geprueft, ob es zur Bitmaske gehoert
// Wenn ja, wird es im Array $bitset gespeichert
for ($i=0; $i<count($this->bits); ++$i)
(($bitmask & $this->bits[$i]) != 0) && $bitsset[] = $this->bits[$i];

// Nun wird die initialisierte und leere Matrix hergenommen und Zeile fuer Zeile und Zelle fuer Zelle
// bestueckt. Zellen, die leer sein sollen, bleiben auf 0, aktivierte Zellen erhalten den Wert 1
// Beispiel aus dem Konstruktor - die Ziffer 1 wuerde als Matrix so aussehen:
// $this->matrix[] = array(0, 0, 1); // 2^0, 2^1, 2^2 ... usw.
// $this->matrix[] = array(0, 1, 1);
// $this->matrix[] = array(0, 0, 1);
// $this->matrix[] = array(0, 0, 1);
// $this->matrix[] = array(0, 0, 1); // ..., ..., 2^14
foreach($this->matrix AS $row=>$col)
foreach($col AS $cellnr => $bit)
in_array( pow(2,($row*3+$cellnr)), $bitsset) && $this->matrix[$row][$cellnr] = 1;
}
}

// Diese Klasse kuemmert sich um die korrekte Darstellung mehrerer Ziffern (also einer Zahl)
class Number {

var $num = 0; // Zahl, die dargestellt werden soll
var $digits = array(); // Enthaelt spaeter fuer jede Stelle ein Digit-Objekt

// Konstruktor; nimmt direkt die darzustellende Zahl entgegen.
function number( $num ) {
$this->num = (int)$num; // Zur Sicherheit in ganze Zahl umwandeln

$r = "{$this->num}"; // In Zeichenkette konvertieren

// Jetzt fuer jede Stelle der Zahl ein Digit-Objekt erzeugen
for( $i=0; $i<strlen($r); $i++ )
$this->digits[] = new Digit((int)$r[$i]);
}

// Liefert einfach die Zahl, die dargestellt wird.
function getNum() { return $this->num; }

// Gibt die Zeilen aller Ziffern nacheinander aus; also erst alle ersten, dann alle zweiten Zeilen usw.
function printNumber() {
for($row=0; $row<count($this->digits[0]->matrix); $row++) {
foreach( $this->digits AS $digit ) {
foreach($digit->matrix[$row] AS $cell)
if($cell === 1) // 1 bedeutet, die Zelle soll aktiv sein (=schwarz)
print("<span class=\"s\">&nbsp;&nbsp;</span>");
else
print("<span class=\"w\">&nbsp;&nbsp;</span>");
print("<span class=\"w\">&nbsp;</span>"); // Leerraum zwischen den Ziffern
}
print("<br>"); // Naechste Zeile
}
}
}

?>

<html>
<head>
<style>
.s { color: black; background-color: black; }
.w { color: white; background-color: white; }
</style>
</head>
<body>
<h2>Beispiel</h2>
<div >
<?php
$n = new Number( rand(1000,9999) );
$n->printNumber();
printf( "<h2>Dargestellt wird die Zahl %d</h2>", $n->getNum() );
?>
</div>

</body>
</html>


Die Zahl wird in "$n" gespeichert. Wie kann ich diese Variable so expotrieren dass ich sie mit einer einfachen if Abfrage mit dem Eingabefeld vergleichen kann?
X

Wie Capcha verlgleichen?

Intermedia
Beiträge gesamt: 1287

2. Jan 2008, 15:23
Beitrag # 2 von 4
Beitrag ID: #328894
Bewertung:
(1347 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

den Wert in einer Session speichern, bei absenden des Formulars dann den Wert mit dem Sessionwert vergleichen. Das wars schon.

Gruß Sven


http://www.aurahysil.de?hds Mit Aurahysil Freizeit schaffen - Beschichtungen der besonderen Art - http://www.intermedia-bg.de?hds INTERMEDIA bürogemeinschaft


als Antwort auf: [#328893]

Wie Capcha verlgleichen?

Blackhead77
Beiträge gesamt: 118

2. Jan 2008, 15:33
Beitrag # 3 von 4
Beitrag ID: #328897
Bewertung:
(1344 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
noch nicht ganz Angelic
kannst du mir noch erklären wie man dass macht? in einer Session speichern?


als Antwort auf: [#328894]

Wie Capcha verlgleichen?

Intermedia
Beiträge gesamt: 1287

2. Jan 2008, 15:43
Beitrag # 4 von 4
Beitrag ID: #328901
Bewertung:
(1340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

hier sind Beispiele für die Arbeit mit Session: http://www.php.net/...on.session-start.php

Gruß Sven


http://www.aurahysil.de?hds Mit Aurahysil Freizeit schaffen - Beschichtungen der besonderen Art - http://www.intermedia-bg.de?hds INTERMEDIA bürogemeinschaft


als Antwort auf: [#328897]
X

Aktuell

InDesign / Illustrator
ScreenShot 274 Warum Templates in InDesign benutzen_ - Satzkiste in Stuttgart - Satz und technische Umsetzung - Google Chrome (300x300 HilfDirSelbst)

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022