Implementacija v PHP

Na tej strani bomo predstavili kako uporabiti orodje pri preverjanju vnosnega obrazca. Implementacija bo predstavljena v klasičnem jeziku PHP, orodje pa sicer ponuja podporo za različne knjižnice kot so na primer CakePHP, Laravel in Symfony.

Primer delovanja

Uvoz zbirk

Pred samo uporabo je potrebno iz spletne strani ponudnika prenesti ustrezne knjižnice, kar storimo na tej povezavi. Nato naložimo datoteko botdetect.php in mapo botdetect s vsebino na strežnik.

Sedaj je potrebno na začetku .php datoteke poskrbeti za uvoz botdetect.php in ustvariti sejo, saj jo orodje potrebuje za delovanje.

<?php session_start(); 
 require("botdetect.php"); ?>
Nato poskrbimo še za uvoz datotek za izgled gradnika orodja, kar storimo v glavi HTML dokumenta. Pri tem uporabimo funkcijo LayoutStylesheetUrl().
<link type="text/css" rel="Stylesheet" href="<?php echo CaptchaUrls::LayoutStylesheetUrl() ?>" /> 

Prikaz gradnika

Za prikaz je potrebno dodati dva izseka kode:

  • polje input, v katerega bo uporabnik prepisal vrednosti iz vizualnega gradnika orodja in
  • izsek PHP kode, ki skrbi za  prikaz vizualnega gradnika. Pri tem definiramo unikatno ime trenutnega gradnika (uporabno v primeru večih preverjanj CAPTCHA na isti strani) in ime inputpolja.
<label for="vsebnik">Vtipkaj črke iz slike: </label> 

<?php 
$captchaPrimer1 = new Captcha("captchaPrimer1");
$captchaPrimer1->UserInputID = "vsebnik";
echo $captchaPrimer1->Html();
?> 

<input name="vsebnik" id="vsebnik" type="text" />

Validacija vnosa

Ker deluje ta implementacija na lokalnem strežniku in ne preko zunanje storitve, je potrebno poskrbeti še za preverjanje, če je uporabnik vpisal pravilno šifro. Način validacije je odvisen od načina potrditve forme. V kolikor se po potrditvi forme kliče ista PHP datoteka, potem je v to potrebno dodati le tak izsek kode:

<?php
if ($_POST) {
    $jeOseba = $captchaPrimer1->Validate();
    
    if (!$jeOseba) {
        echo "<span>Šifra je napačna.</span>";
    } else {
        echo "<span>Izziv je uspešno opravljen!</span>";
    }
}
?>
Pri tem nad objektom captchaPrimer1 kličemo funkcijo Validate(), ki preveri pravilnost šifre. Drugi način validacije pa izvedemo v primeru, da se ob potrditvi forme kliče druga PHP datoteka. V tem primeru moramo ponovno ustvariti sejo, uvoziti botdetect.php in ustvariti objekt, kateri mora biti označen isto kot ta na formi in kazati na isto input polje. Nato ponovno uporabimo funkcijo Validate().
 <?php 
session_start(); 
require("botdetect.php"); 

$captchaPrimer1 = new Captcha("captchaPrimer1"); 
$captchaPrimer1->UserInputID = "vsebnik"; 
$jeOseba = $captchaPrimer1->Validate(); 

if ($jeOseba) { 
    echo "Izziv je uspešno opravljen!"; 
} 
else{
    echo "Šifra je napačna."; 
}
?>

Primer kode s prvim načinom validacije

<?php
session_start();
require("botdetect.php");
?>
<!DOCTYPE html>
<html>
    <head>
        <link type="text/css" rel="Stylesheet" href="<?php echo CaptchaUrls::LayoutStylesheetUrl();
?>" /> 
    </head>
    <body>
        <form method="POST">
        	<label for="imeF">Ime:</label> 
        	<input type="text" name="imeF" id="imeF" /><br>

        	<label for="vsebnik">Vtipkaj črke iz slike: </label> 

		<?php
			$captchaPrimer1 = new Captcha("captchaPrimer1");
			$captchaPrimer1->UserInputID = "vsebnik";
			echo $captchaPrimer1->Html();
		?> 

		<input name="vsebnik" id="vsebnik" type="text" />
		<input type="submit" value="Potrdi" />
	</form>

	<!-- Validacije vnosa -->
  	<?php
	if ($_POST) {
   		$jeOseba = $captchaPrimer1->Validate();
    
    		if (!$jeOseba) {
        		echo "<span>Šifra je napačna.</span>";
    		} else {
       			echo "<span>Izziv je uspešno opravljen!</span>";
    		}
	}
	?>
    </body>
</html>

Primer kode z drugim načinom validacije

Glavna datoteka:

<?php session_start(); 
 require("botdetect.php"); ?>
<!DOCTYPE html>
<html>
    <head>
        <link type="text/css" rel="Stylesheet" href="<?php echo CaptchaUrls::LayoutStylesheetUrl() ?>" /> 
    </head>
    <body>
        <form method="POST" action="BotDetectEx1Check.php">
        	<label for="imeF">Ime:</label> 
        	<input type="text" name="imeF" id="imeF" /><br>

		<label for="vsebnik">Vtipkaj črke iz slike: </label> 

		<?php 
		$captchaPrimer1 = new Captcha("captchaPrimer1");
		$captchaPrimer1->UserInputID = "vsebnik";
		echo $captchaPrimer1->Html();
		?> 

		<input name="vsebnik" id="vsebnik" type="text" />
		<input type="submit" value="Potrdi" />
	</form>
    </body>
</html>

Sekundarna datoteka:

<?php 
session_start(); 
require("botdetect.php"); 

$captchaPrimer1 = new Captcha("captchaPrimer1"); 
$captchaPrimer1->UserInputID = "vsebnik"; 
$jeOseba = $captchaPrimer1->Validate(); 

if ($jeOseba) { 
    echo "Izziv je uspešno opravljen!"; 
} 
else{
    echo "Šifra je napačna."; 
}
?>