Pberndt V4

Direkt zum Inhalt springen


Quellcode Captcha.php

Beschreibung

Zur Loginbestätigung eine Zahl abtippen. Die AUTHFILE darf von außen nicht abrufbar sein, sonst ist die Sicherheit dahin :) An der Stelle, die nur nach Bestätigung aufrufbar sein soll, einfach die Funktion aufrufen und bei Rückgabewert false abbrechen.

Sourcecode

<?php
    if(!checkForHumanity()) die();
?>

Hier der Code:


<?php
    /*
        "Captcha" - Zahl zur Bestätigung abtippen

        Aktion: PHP Scripte für die armen dieser Welt
        Der Erlös geht für mein Pausenbrot drauf

        Copyright (c) 2006 by Phillip 'Firebird' Berndt
    */


    define('AUTHFILE', '.auth');

    // Authentifizierung zur Überprüfung, ob auf der Gegenseite ein Mensch sitzt
    function checkForHumanity()
    {
        if(file_exists(AUTHFILE))
            $dataFile = unserialize(file_get_contents(AUTHFILE));
        else
            $dataFile = array();
       
        // IP Sperre
        foreach($dataFile as $key => $userData)
        {
            if($userData[0] + 3600 * 5 < time())
                unset($dataFile[$key]);
        }
       
        // Login okay?
        $userData = &$dataFile[$_SERVER['REMOTE_ADDR']];
        if(isset($userData['loginOkay']))
            return true;
        if(isset($userData[1]) && $_POST['hash'] == $userData[1])
        {
            $userData['loginOkay'] = true;
            file_put_contents(AUTHFILE, serialize($dataFile));
            return true;
        }
       
        // Bild ausgeben
        if(isset($_GET['getImage']))
        {
            srand(time());
            $randomString = base_convert(rand(10000, 1e6), 10, 36);
            $userData = Array(time(), $randomString);
           
            $image = imagecreate(100, 20);
            $white = imagecolorallocate($image, 255, 255, 255);
            $black = imagecolorallocate($image, 0, 0, 0);
            imagestring($image, 2, 5, 5, $randomString, $black);
           
            ob_end_clean();
            header('Content-Type: image/jpeg');
            imagejpeg($image);
            file_put_contents(AUTHFILE, serialize($dataFile));
            die();
        }
       
        // Texteingabe ausgeben
        // An dieser Stelle beliebige weitere Meldungen ausgeben
        echo('<form method="post" action="'.$_SERVER['REQUEST_URI'].'"><p>'.
            '<img src="'.$_SERVER['REQUEST_URI'].'&amp;getImage=1" alt="Bestätigungsbild" /><br/>'.
            '<input type="text" value="" name="hash"/> <input type="submit"/></p></form>');
       
        file_put_contents(AUTHFILE, serialize($dataFile));
        return false;
    }

?>

Download

Dateiname
Captcha.php
Größe
2.27kb