Avatar billede sj.netomia Nybegynder
07. januar 2008 - 10:41 Der er 13 kommentarer og
1 løsning

Captcha fejl i IE 6.0 men ikke i IE 7.0

Hej eksperter.

Jeg har flg script det fungere fint ved mig på IE 7.0 på Windows Vista, men der er flere som ikke kan få det til at fungere på IE 6.0 Windows XP. De får meddelsen Koden er ikke skrevet rigtig. Klik tilbage og prøv igen.

jeg ved ikke hvorfor, er det nogen som kan se en fejl i scriptet. ?

Captcha.php
<?php
session_start();
class CaptchaSecurityImages {

    var $font = 'monofont.ttf';

    function generateCode($characters) {
        $possible = '23456789bcdfghjkmnpqrstvwxyz';
        $code = '';
        $i = 0;
        while ($i < $characters) {
            $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
            $i++;
        }
        return $code;
    }

    function CaptchaSecurityImages($width='120',$height='30',$characters='6') {
        $code = $this->generateCode($characters);
        $font_size = $height * 0.75;
        $image = @imagecreate($width, $height) or die('Cannot initialize new GD image stream');
        $background_color = imagecolorallocate($image, 192, 192, 192);
        $text_color = imagecolorallocate($image, 45, 45, 45);
        $noise_color = imagecolorallocate($image, 122, 122, 122);
        for( $i=0; $i<($width*$height)/3; $i++ ) {
            imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
        }
        for( $i=0; $i<($width*$height)/150; $i++ ) {
            imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
        }
        $textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function');
        $x = ($width - $textbox[4])/2;
        $y = ($height - $textbox[5])/2;
        imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');
        header('Content-Type: image/jpeg');
        imagejpeg($image);
        imagedestroy($image);
        $_SESSION['security_code'] = $code;
    }

}

$width = isset($_GET['width']) ? $_GET['width'] : '120';
$height = isset($_GET['height']) ? $_GET['height'] : '40';
$characters = isset($_GET['characters']) && $_GET['characters'] > 1 ? $_GET['characters'] : '6';

$captcha = new CaptchaSecurityImages($width,$height,$characters);

?>



Form.php
<?php
session_start();
  if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
if ($action){
require ("include.php");
$tak = tak();
$top = top();
$bottom = bottom();
$mail_til="info@gb-h.dk";
$mail_fra="info@gb-h.dk";

if ($action == "kontakt") {
    if (!$navn OR !$adresse1 OR !$postby OR !$email OR !$besked) {
        print ("der mangler informationer, klik tilbage og prøv igen.<br>");
        echo '<a href="java script: history.go(-1)">Tilbage</a>';
    }
    else {
    mail("$mail_til","test","
    $top
    <font size=4>Kontakt til test.</font><br><br>
    <font size=\"3\"><b>Oplysninger:</b></font><br>
    $navn<br>
    $adresse1&nbsp;&nbsp&nbsp;&nbsp;$adresse2<br>
    $postby<br>
    $email<br><br>
    <font size=\"3\"><b>Besked:</b></font><br>
    $besked
    $bottom
    </font></html>","From: $mail_fra\nContent-type:text/html");
    print ("$tak");
    }
}
else
  {
    print ("der opstod en fejl, prøv venligst igen.");
    }
  }
  else
  {
    print ("der opstod en fejl, prøv venligst igen.");
    }

        unset($_SESSION['security_code']);
  }

  else {
        echo '<b>Koden er ikke skrevet rigtig. Klik tilbage og prøv igen.</b><br>';
        echo '<a href="java script: history.go(-1)">Tilbage</a>';
  }
?>
Avatar billede sj.netomia Nybegynder
07. januar 2008 - 14:59 #1
håber at der er en som kan hjælpe mig :-)
Avatar billede sj.netomia Nybegynder
07. januar 2008 - 19:06 #2
kom eksperter hjælp mig det er til at få grå hår af det her....
Avatar billede amews_aj Nybegynder
07. januar 2008 - 19:13 #3
Altså, php afvikles jo på serveren, og dermed kan der ikke rigtig være en fejl i din kode hvis det virker hos nogen.
Mit gæt er at de folk hvor det ikke virker, har blokeret for cookies (og dermed sessions)
Avatar billede sj.netomia Nybegynder
07. januar 2008 - 20:55 #4
dvs at cookies skal slåes til ellers virker det ikke, troede at sessions blev afviklet på serveren og ikke krævede at der skulle slåes noget til.
Avatar billede amews_aj Nybegynder
07. januar 2008 - 21:01 #5
Korrekt, cookies skal være slået til.
Avatar billede sj.netomia Nybegynder
08. januar 2008 - 00:43 #6
er der ikke en anden måde at lave captcha på så, for det kan man jo ikke forvente at alle har slået til. ?
Avatar billede amews_aj Nybegynder
08. januar 2008 - 10:05 #7
Det eneste jeg lige kan komme i tanker om er at gemme det i en database med ip som id'er.
Ved dog ikke hvor godt det vil virke.
Avatar billede showsource Seniormester
08. januar 2008 - 10:30 #8
Du kan lave et hiddenfelt
<input type="hidden" name="<?php echo echo session_name(); ?>" value="<?php echo echo session_id(); ?>">
så skulle du kunne få fat i den rigtige fil
Avatar billede sj.netomia Nybegynder
08. januar 2008 - 10:45 #9
det vil jeg prøve når jeg kommer hjem tak :-)
Avatar billede sj.netomia Nybegynder
08. januar 2008 - 10:47 #10
men når jeg lige tænker over det, bliver sikkerheden så ikke mindre når jeg laver den i en input type="hidden" så kan det vel ses i source ?
Avatar billede sj.netomia Nybegynder
08. januar 2008 - 11:46 #11
måske du vil give et eksempel på hvordan du vil indsætte det i koden ?
Avatar billede sj.netomia Nybegynder
09. januar 2008 - 15:23 #12
showsource: vil du give et eksempel på hvor i koden det skal stå. ?
Avatar billede showsource Seniormester
09. januar 2008 - 22:30 #13
ehh, linien med hiddenfelt skal jo ind i din formular.
Så kan du få fat i den når du tjekker post.

Men indrømmet, jeg har ikke tjekker det af præcis hvordan du skal gøre.
Men hvis ( i php-delen ) f.eks. brug af cookie er disablet + brug af session.use_trans_sid er enabled, får du automatisk SID med i forms, links m.m.
Avatar billede sj.netomia Nybegynder
18. oktober 2008 - 15:59 #14
ingen svar duede.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester