Szóellenőrző forrás minősége
Üdv!
Igencsak sok oldalon látni azt a bizonyos szóellenőrzőt, ami betűket (szót) kér a felhasználótól, majd ellenőrzi, hogy az van-e a képen és ha igen, akkor enged regisztrálni (vagy bármi mást), ha nem akkor pedig kiír valamiféle hibaüzenetet.
Mivel én ilyet személy szerint nem szoktam csinálni, ezért neki láttam egynek, gondoltam megcsinálom 5 perc alatt, de szerintem fél óra is lett belőle...
És nem tudom mennyire kielégítő, szerintem vessetek rá egy pillantást, és mondjátok meg légyszíves, hogy ér-e egyáltalán valamit, vagy mehet a lomtárba...
Bocs, hogy bemásolom az egész forrást, de sajnos jelen pillanatban nincs hova feltöltenem.
2 fájl van, az alap index.php és a képet generáló checker_img_create.php
index.php:checker_img_create.php:
■ Igencsak sok oldalon látni azt a bizonyos szóellenőrzőt, ami betűket (szót) kér a felhasználótól, majd ellenőrzi, hogy az van-e a képen és ha igen, akkor enged regisztrálni (vagy bármi mást), ha nem akkor pedig kiír valamiféle hibaüzenetet.
Mivel én ilyet személy szerint nem szoktam csinálni, ezért neki láttam egynek, gondoltam megcsinálom 5 perc alatt, de szerintem fél óra is lett belőle...
És nem tudom mennyire kielégítő, szerintem vessetek rá egy pillantást, és mondjátok meg légyszíves, hogy ér-e egyáltalán valamit, vagy mehet a lomtárba...
Bocs, hogy bemásolom az egész forrást, de sajnos jelen pillanatban nincs hova feltöltenem.
2 fájl van, az alap index.php és a képet generáló checker_img_create.php
index.php:
<?php
session_start();
include_once("checker_img_create.php");
if (!isset($_SESSION['letter1'])) {
$rand_letters = random_letter();
$rand_letters_array = explode(":", $rand_letters);
$_SESSION['letter1'] = $rand_letters_array['0'];
$_SESSION['letter2'] = $rand_letters_array['1'];
$_SESSION['letter3'] = $rand_letters_array['2'];
$_SESSION['letter4'] = $rand_letters_array['3'];
$_SESSION['full_word'] = "$_SESSION[letter1]$_SESSION[letter2]$_SESSION[letter3]$_SESSION[letter4]";
}
function display_message($msg) {
if (isset($_POST['op'])) {
print "\n<p>$msg</p>";
}
}
if (isset($_POST['op'])) {
if ($_POST['word'] != $_SESSION['full_word']) {
$message = "Hiba! A képen látható szó és a begépelt szó nem egyezik!";
$rand_letters = random_letter();
$rand_letters_array = explode(":", $rand_letters);
$_SESSION['letter1'] = $rand_letters_array['0'];
$_SESSION['letter2'] = $rand_letters_array['1'];
$_SESSION['letter3'] = $rand_letters_array['2'];
$_SESSION['letter4'] = $rand_letters_array['3'];
$_SESSION['full_word'] = "$_SESSION[letter1]$_SESSION[letter2]$_SESSION[letter3]$_SESSION[letter4]";
}
else {
$message = "Helyes a begépelt szó!";
}
}
?>
<html>
<head>
<title>Szóellenőrzés</title>
</head>
<body><?php display_message($message); ?>
<form action="index.php" method="post">
<p>
<fieldset><legend>Szóellenőrzés</legend>
<img src="checker_img_create.php?create=yes" alt="" border="0" />
<br />
Írd be a képen látható szót.
<br />
<br />
<label for="word">A szó: *</legend>
<input type="text" name="word" id="word" size="10" value="" />
</fieldset>
<p>
<input type="submit" name="op" value="Ellenőríz" />
</p>
</form>
</body>
</html>
<?php
session_start();
function random_letter() {
$letters = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$rand1 = rand(0, count($letters) - 1);
$rand2 = rand(0, count($letters) - 1);
$rand3 = rand(0, count($letters) - 1);
$rand4 = rand(0, count($letters) - 1);
$letter1 = $letters[$rand1];
$letter2 = $letters[$rand2];
$letter3 = $letters[$rand3];
$letter4 = $letters[$rand4];
$letter_pack = "$letter1:$letter2:$letter3:$letter4";
return $letter_pack;
}
function checker_img_create($letter1, $letter2, $letter3, $letter4) {
header("Content-type: image/jpeg");
$img = imagecreate(150, 40);
$black = imagecolorallocate($img, 0,0,0);
$white = imagecolorallocate($img, 255,255,255);
imagestring($img, 5, 40, 15, $letter1, $white);
imagestring($img, 5, 60, 15, $letter2, $white);
imagestring($img, 5, 80, 15, $letter3, $white);
imagestring($img, 5, 100, 15, $letter4, $white);
imagejpeg($img);
}
if ($_GET['create'] == "yes") {
checker_img_create($_SESSION['letter1'], $_SESSION['letter2'], $_SESSION['letter3'], $_SESSION['letter4']);
}
?>
változók
ez csak egy alap
Persze ha valahol tényleg felakarom használni akár több helyen is, és csak egyszer akarom megírni akkor "bevetném" azt, hogy lehessen állítani.
Más hibája nincsen?
Pár megjegyzés
(Szerintem ha csak lehet, érdemes elkerülni ezt a fajta ellenőrzést.)
törhető?
Ha valaki vesz magán annyi erőt hogy felmegy az oldalra mondjuk, akkor nem hiszem hogy ha ezt meglátja akkor neki áll feltörni mikor beüt 4 betűt aztán kész is... vagy nem értem.
+ mit mondtam ez csak egy csonk, mert egyenlőre nem tervezem az ilyen használatát...
Az értelmes szavak megfontolandó, csak ahhoz kéne egy "szótár" ugye, mit tudom én mondjuk 1000 magyar szó egy tömbben vagy ilyesmi.
És mit tudnék tenni hogy CR progival ne lehessen törni?
Azért kössz a hozzászólást! még várok ilyeneket amik a hibákra mutatnak rá...
Igen
Gépek számára nehezebben felismerhetővé szokták tenni speciális betűtípussal, különböző transzformációkkal, effektekkel.