Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Wie kann ich einen Bestätigungscode erstellen!“

anonymus1

Noch nicht viel geschrieben

Hallo,
Ich möchte für eine Registrierung auf meiner Homepage erstellen bei der man einen automatisch generierten Code, der in ein Bild umgewandelt werden soll, eingeben muss. Ich habe es bereits versucht, aber es funktioniert nicht.
Ich bitte um eure Hilfe !!
Hier mein Code:

Code:
<?php
				
$zahl = mt_rand(1000,9999);
$bild = imagecreate(100,22);
imagecolorallocate($bild,55,155,0);
$textfarbe = imagecolorallocate($bild,0,0,255);
$TTDatei = "C:/WINDOWS/Fonts/Verdana.ttf";
$Text = $zahl;
imagettftext($bild,18,0,10,2,$textfarbe,$TTDatei,$Text);
imagepng($bild);
imagedestroy($bild);				
?>
 

bLuTm8

Aktives Mitglied

dein webserver hat zugriff auf deine c-partition? besser du vergisst diese absolute pfadangabe ins nichts.

zb hier


oder schau dir die codes beinah jedes cms, welches diese funktion hat an
 

webmastersworld

Nicht mehr ganz neu hier

das ist eine spambot-abwehr, ich habe das tut dafür hier schon eingereicht, da es aber noch nicht freigeschasltet ist gebe ich dir mal hier den tut-text:


ich poste es mal ohne tut-begleittexzt - müsste aber auch so klar sein :)
Zum Script:
Eigentlich ist es praktisch, zwei Scripten zu machen:

1. index.php:
enthält
? nur die Session (gibt somit den Sessioncode aus und
? vergleicht ihn mit der Eingabe des Users

[php:1:155de02f1a]<?PHP
session_start(); // Session starten// Überprüfung des Prüfcodes, falls das Formular ausgefüllt wurde
if (isset($_POST['submit'])){
if ($_POST['pruefcode'] == $_SESSION['code']){
echo "Der eingegebene Prüfcode ist richtig
";
// Aktionen, wenn Prüfcode richtig ist}else {
echo "Der eingegebene Prüfcode ist falsch
";
// Aktionen, wenn Prüfcode falsch ist
}
}
// Ende der Formularüberprüfung
$_SESSION['code'] = rand(1000, 9999); // Prüfcode erzeugen und in der Session speichern // hier kann festgelegt werden, welche Zahl (diesfalls 4-stellig) zufällig für den Sessioncode ausgegeben (erzeugt) und als Prüfcode verwendet wird; man könnte auch eine 5-6-? usw. stellige Zahl nehmen.

/*Hier ist nur der Formular-HTML-TEIL und der Bildname mit dem Bildcode (code.php) */
?>

<html>
<head>
<title>Spambot-Abwehr</title>
</head>
<body>

<form method="POST" >
<input type="text" name="pruefcode" size="10">

<input type="submit" name="submit" value="Speichern">


<form method="GET" action="javascript:location.reload()"><input type="submit" value="Aktualisieren" title="Sollten Sie den obigen Code nicht lesen können"></form>
</body></html>[/php:1:155de02f1a]

2. code.php:
[php:1:155de02f1a]<?PHP
header("Content-type: image/png"); // Festlegung des Bildformats (hier *.png) für das Codebild
session_start(); // Startet die Session
$grafik = ImageCreate (80, 25); // Erzeugt ein 80x25 px großes Bild
$hintergrundfarbe = ImageColorAllocate($grafik, 240, 240, 240); // Definiert die Farben in RGB
$schriftfarbe = ImageColorAllocate($grafik, 176, 177, 178); // in RGB-Farben
ImageTTFText ($grafik, 15, 3, 15, 20, $schriftfarbe, "/bau.ttf", $_SESSION['code']); // Sessioncode in Grafik schreiben
ImagePNG($grafik); // Grafik erzeugen
imagedestroy($grafik); // Zwischenspeicher löschen
?>[/php:1:155de02f1a]

Zum Download:
 

blackout

Schaf im Wolfspelz

ich bastel grad seit stunden an nem captcha-script... ein schönes bild zu erzeugen hat 15min gedauert, aber die verifikation macht mich fertig :x

im code oben wird übrigend sid sid nicht übergeben, von daher baut das ding n ganz anderes bild als zum code passend... behaupte ich einfach mal (in der hoffnung dass niemand faule tomaten dabei hat)
 

mammimonstA

grauhliebe

blackout schrieb:
ich bastel grad seit stunden an nem captcha-script... ein schönes bild zu erzeugen hat 15min gedauert, aber die verifikation macht mich fertig :x

Seit wann sollen captchas schön aussehen ? :lol:

@webmastersworld: Ich freue mich schon auf das Tutorial!
 

Duddle

Posting-Frequenz: 14µHz

Möchte nur noch ganz fix meinen Bilderzeuger-Code reinhauen, weil ich so stolz drauf bin :)

[php:1:f89a9f310f]<?php
//createimage.php -- hier wird ein Bild erzeugt um den Login-Vorgang zu sichern

session_start() or die('Session nicht erfolgreich gestartet!');

$rand1=rand(10000,99999);
$randausgabe="$rand1"; //um daraus einen richtigen String zu machen oder so
$_SESSION["imgkey"]=$rand1;

header ("Content-type: image/png");
$im = ImageCreate (100, 40) or die("Kein Bild erzeugt!"); // Bild erstellen
$color = ImageColorAllocate ($im, 0,0,0); //schwarz

$i=strlen($randausgabe); //wie lang ist die zufallszahl?
$x=10; //startwert für X-Position
$y=30; //startwert für Y-Position
while($i!=0) //solange noch nicht alle Stellen abgearbeitet sind
{
imagettftext($im,20+rand(-3,3),0+rand(-15,15),$x,$y,$color,"fonts/".rand(1,3).".ttf",$randausgabe{strlen($randausgabe)-$i});
//zufällige Größenschwankung, Drehung, Font (1.ttf bis 3.ttf)
//$randausgabe{strlen($randausgabe)-$i} arbeitet alle Stellen von 0 (5-5) bis 4 (5-1) ab

$x=$x+rand(15,20); //zufällig Positionswerte addieren
$y=$y+rand(-3,3);
$i--;
}

for($i=0;$i<2;$i++)
{
//ein paar Linien und Ellipsen erzeugen
imageellipse($im,rand(1,59),rand(1,24),rand(50,90),rand(50,90),$color);
imageline($im,rand(1,59),rand(1,24),rand(1,59),rand(1,24),$color);
}

$randfarbe = ImageColorAllocate($im,172,172,172);

imagesetthickness($im,2);
imageline($im,1,1,99,1,$randfarbe); //linie oben
imageline($im,1,1,1,39,$randfarbe); //linie links
imageline($im,1,39,100,39,$randfarbe); //linie unten
imageline($im,99,1,99,39,$randfarbe); //linie rechts

ImagePNG ($im) or die("Endbild nicht erzeugt!"); // Bild ausgeben
Imagedestroy ($im); // make me scream "yeah"
?>[/php:1:f89a9f310f]

Das war damals eine echt gute Übung für rand() :lol:


Duddle
 

blackout

Schaf im Wolfspelz

blöderweise is es nich immer für den menschen zu entziffern... außerdem glaub ich schon dass das dechiffrierbar ist. aber ich hab ja auch keine 100000 visits am tag ;)
 

webmastersworld

Nicht mehr ganz neu hier

deswegen hab ich unten einen 'reload-button' dazugebaut, sollte mal ein mensch was nicht entziffern können :D .

Code:
<form method="GET" action="javascript:location.reload()"><input type="submit" value="Aktualisieren" title="Sollten Sie den obigen Code nicht lesen können"></form>
... da muss halt js am browser aktiviert sein, wahrsch. gehts mit einer action auch auf captcha.php (aber nicht getestet!!!)

EDIT HILFE: irgendwas mach ich da falsch :( >
alles auf 777 + dir captcha_temp angelegt + eigene *.ttf rein und in captcha_class.php umbenannt, aber KEIN Bild?!
 
B

Bene

Guest

Hallo,

ich habe mir dein Script gerade mal angeschaut, Duddle.
Ich habe 3 oder 4 mal versucht, den richtigen Code einzugeben - ich habe nie richtig getroffen. Ich finde es zu schwer die vordergründigen Zeichen von den hintergründigen zu filtern...
Wollte das mal als Anregung loswerden ;-)

Gruß,

Bene
 

LowkaZ

Half Life

blackout deins ist zu hardcore für mich :p

nicht wegen code (ok denn hab ich mir noch nit angeschaut) aber ich kenn den nit immer entziffern... vlt kann man dass ja als eine art "login-test" benutzen ;)
 

blackout

Schaf im Wolfspelz

zu hardcore klingt böse...
zum leichteren entziffern kannst du ja die farben einfach modifizieren oder die phrasenlänge auf 1 stellen und mit einem wörterbuch statt einem alphabet arbeiten
 

webmastersworld

Nicht mehr ganz neu hier

sry blackout: ... das wollte ich nicht auslösen, aber jetzt habe ich mal zu testzwecken

folgende zeile in captcha_class.php geändert, jetzt ists wieder falsch? :eek:

[php:1:cd1d34c9b4]var $randomlettercount = 128; // zahl der zufälligen buchstaben im hintergrund. zu wenige bringen wenig, zu viele sehen aus wie nudelsalat und machen das ganze unübersichtlich ### line 23[/php:1:cd1d34c9b4]

[php:1:cd1d34c9b4]var $randomlettercount = 0; // zahl der zufälligen buchstaben im hintergrund. zu wenige bringen wenig, zu viele sehen aus wie nudelsalat und machen das ganze unübersichtlich ### line 23[/php:1:cd1d34c9b4]

ich habe also mit 0 oben alle schriftzeichen aus dem hintergrund verbannt - habe also nur zahlen im vordergrund, immer wieder falsch?
 

blackout

Schaf im Wolfspelz

statt den wert auf null zu senken würde ich empfehlen, dass du einfach die betreffende schleife auskommentierst.
wie es zu dem fehler kommt: das script ist für kleinbuchstaben ausgelegt. wenn du das ändern willst, nimm einfach die "strtolower(...)"-funktionen raus.
ich werd das nochmal nacharbeiten... aber nicht jetzt. der code ist eh noch nicht sehr optimal geraten.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.182
Beiträge
2.582.055
Mitglieder
67.254
Neuestes Mitglied
MKP
Oben