Session-Fehler mit IE auf bestimmtem Server

Hier werden Probleme rund um das Zahlen Captcha behandelt

Moderator: frameguard

Session-Fehler mit IE auf bestimmtem Server

Beitragvon scorpy » 23.01.2007, 17:47

Habe ein Session-Problem bei meinem Gästebuch. Merkwürdigerweise funktioniert es auf einer anderen Seite einwandfrei. Beide Seiten werden von 1und1 gehostet. Um das GB Spam-sicher zu machen habe ich ein Captcha eingebaut, welches mit Sessions arbeitet. Auf der einen Seite funktioniert es, auf der anderen nicht. Noch merkwürdiger ist, dass das Problem nur beim Internet-Explorer auftaucht, beim Firefox funktioniert's. Das Hauptproblem: Auch Spam-Bots posten weiterhin fröhlich im GB herum. Weiß jemand Rat?

Überzeugt euch selbst! (Ich habe zusätzlich einen Link zu einer phpinfo-Seite hinzugefügt, konnte dort aber keine unterschiedlichen Konfigurationen bezüglich der Sessions finden)

Hier läuft's:
http://www.werbung-die-ankommt.de/gb/gaestebuch-eintragen.php
PHP-Info:
http://www.werbung-die-ankommt.de/gb/phpinfo.php

Hier nicht:
http://www.sv-veldhausen.de/gb/gaestebuch-eintragen.php
PHP-Info:
http://www.sv-veldhausen.de/gb/phpinfo.php

captcha.php
Code: Alles auswählen
<?php
   session_start();


   unset($_SESSION['captcha_spam']);
   $text = rand(1000,10000); //Zufallszahl

   function encrypt($string, $key) {
   $result = '';
   for($i=0; $i<strlen($string); $i++) {
      $char = substr($string, $i, 1);
      $keychar = substr($key, ($i % strlen($key))-1, 1);
      $char = chr(ord($char)+ord($keychar));
      $result.=$char;
   }
   return base64_encode($result);
   }

   $_SESSION['captcha_spam'] = encrypt($text, "9c4o34ghn"); //Key
   $_SESSION['captcha_spam'] = str_replace("=", "", $_SESSION['captcha_spam']);

   header('Content-type: image/png');
   $img = ImageCreateFromPNG('captcha.png'); //Backgroundimage
   $color = ImageColorAllocate($img, 0, 0, 0); //Farbe
   $ttf = $_SERVER['Document_Root']."/arial.ttf"; //Schriftart
   $ttfsize = 25; //Schriftgrösse
   $angle = rand(0,5);
   $t_x = rand(5,50);
   $t_y = 35;
   imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text);
   imagepng($img);
   imagedestroy($img);
?>


gaestebuch-eintragen.php
Code: Alles auswählen
<?php
  error_reporting(E_ALL);
  ini_set('display_errors', TRUE);

  session_start();
?>
<html>
<head>
<title>Gästebuch-Eintrag</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../../css-dateien/css-datei-1.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="5" topmargin="5" marginheight="5" marginwidth="5">
<!--Start Seitentabelle-->
<table width="100%">
  <tr>
    <td>
      <!--Start Teilungstabelle-->
      <table width="100%">
        <tr>
          <td width="170" height="100%" valign="top">
            <!--Include Navigation-->
            <?php
            //include ("../navigationen/navi-veldhausen-gaestebuch.php")
            ?>
          </td>
          <td align="center" valign="top">
          <table align="center" width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td align="right" class="seitenueberschriften">Gästebuch / Eintrag</td>
            </tr>
            <tr>
              <td><hr></td>
            </tr>
            <tr>
              <td class="fliesstextseiten" align="center">
              <br><b>Dies ist ein Gästebuch. Anonyme und beleidigende Beiträge werden unverzüglich gelöscht!</b><br><br>
              <?php
                if(empty($homepage))
                {
                  $homepage = "http://";
                }

                if(isset($_POST['speichern']))
                {
                  $datum = date("d.m.Y");
                  $name = htmlspecialchars($_POST['name']);
                  $email = htmlspecialchars($_POST['email']);
                  $homepage = htmlspecialchars($_POST['homepage']);
                  $eintrag = htmlspecialchars($_POST['eintrag']);

                  $fehler = "";

                  $checkemail = eregi( "^" .
                                       "[a-z0-9]+([_\\.-][a-z0-9]+)*".
                                       "@".
                                       "([a-z0-9]+([\.-][a-z0-9]+)*)+".
                                       "\\.([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|nato|net|org|pro)".
                                       "$", $email);

       function encrypt($string, $key)
                  {
         $result = '';
         for($i=0; $i<strlen($string); $i++)
                    {
              $char = substr($string, $i, 1);
              $keychar = substr($key, ($i % strlen($key))-1, 1);
              $char = chr(ord($char)+ord($keychar));
              $result.=$char;
         }
         return base64_encode($result);
       }
       $sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "9c4o34ghn");
       $sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);

                  if(!$checkemail)
                  {
                    $fehler .= "<br><font color=\"#FF0000\">Die eingegebene E-Mail-Adresse ist nicht gültig!</font>";
                  }

                  if(!isset($_SESSION['captcha_spam']))
                  {
                 die('Fehler: session nicht definiert (bitte mail an Admin)<br /><br /><a href="gbook.php">Zurück ins Gästebuch</a>');
           }

                  if($sicherheits_eingabe == $_SESSION['captcha_spam'])
                  {
       unset($_SESSION['captcha_spam']);
                  }
                  else
                  {
                    $fehler .= "<br><font color=\"#FF0000\">Der eingegebene Code ist falsch. Bitte versuchen Sie es erneut!</font>";
                  }

                  if(empty($fehler))
                  {
                    // Eintrag in die Datenbank
                    include("../zugriff/zugriff.inc.php");

                    $query = "INSERT INTO gaestebuch_test (datum, name, email, homepage, eintrag) VALUES ('$datum', '$name', '$email', '$homepage', '$eintrag')";
                    mysql_query($query) or die('Fehler bei der Uebertragung der Daten!');

                    $nachricht = "Der folgende Gaestebuch-Eintrag wurde soeben getaetigt:\n".
                                 "Datum: ".$datum."\n".
                                 "Name: ".$name."\n".
                                 "E-Mail: ".$email."\n".
                                 "Homepage: ".$homepage."\n".
                                 "Eintrag: ".$eintrag."\n";
                    $empfaenger = "info@svveldhausen.de";
                    $thema = "Gaestebuch-Eintrag vom ".$datum;
                    $extra = "Content-Type: text/plain; charset=iso-8859-1\n";

                    mail($empfaenger, $betreff, $nachricht, $extra);

                    echo "Der Eintrag wurde hinzugefügt!<br><br><a href=\"gaestebuch.php\">Einträge ansehen</a>";

                    $eintrag_gespeichert = TRUE;
                  }
                  else
                  {
                    echo $fehler;
                  }
                }

                if(empty($eintrag_gespeichert))
                {
              ?>
              <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
              <table class="fliesstextseiten" width="500">
                <tr>
                  <td colspan="2" align="center"></td>
                </tr>
                <tr>
                  <td width="100">Name:</td>
                  <td><input name="name" type="text" value="<?php echo $name ?>"></td>
                </tr>
                <tr>
                  <td width="100">E-Mail:</td>
                  <td><input name="email" type="text" value="<?php echo $email ?>"></td>
                </tr>
                <tr>
                  <td width="100">Homepage:</td>
                  <td><input name="homepage" type="text" value="<?php echo $homepage ?>"></td>
                </tr>
                <tr>
                  <td width="100" valign="top">Eintrag:</td>
                  <td><textarea name="eintrag" cols="40" rows="10"><?php echo $eintrag ?></textarea></td>
                </tr>
                <tr>
       <td colspan="2">Bitte geben Sie den folgenden Code in das Eingabelfeld ein. Diese Massnahme dient dem Spam-Schutz.</td>
          </tr>
                <tr>
       <td width="100" valign="top"><img src="captcha.php?PHPSESSID=<?php echo session_id(); ?>"></td>
       <td><input type="text" name="sicherheitscode" size="4"></td>
          </tr>
                <tr>
                  <td colspan="2" align="right"><input name="speichern" type="submit" id="speichern" value="Eintragen"></td>
                </tr>
              </table>
              </form>
              <?php
              }
              ?>
              </td>
            </tr>
          </table>
          </td>
        </tr>
      </table>
      <!--Ende Teilungstabelle-->
    </td>
  </tr>
</table>
</body>
</html>


Ich hoffe ihr könnt mir weiterhelfen, bin echt mit meinem latein am Ende...

Danke schonmal.
scorpy
 
Beiträge: 2
Registriert: 23.01.2007, 17:37

Beitragvon scorpy » 24.01.2007, 16:14

Hat jemand ne Idee bzw. Vermutung?
Finde die ganze Sache doch sehr merkürdig...
scorpy
 
Beiträge: 2
Registriert: 23.01.2007, 17:37

Session-Fehler mit IE auf bestimmtem Server

Beitragvon dr.pfusch » 02.02.2007, 08:20

Hallo,
habe das Gleiche Problem und schon analysiert. Liegt an der IE Sicherheitseinstellung. Sobald die Privacy Einstellung Medium oder höher ist funktioniert die ganze Sache nicht mehr, da session variablen nicht gefüllt werden;-) Wenn Du die Privacy runtersetzt auf Low sollte es gehen. Nutzt nur nichts, da die spammer genau das nicht machen;-(
dr.pfusch
 
Beiträge: 1
Registriert: 02.02.2007, 08:12

Beitragvon Rob [Admin] » 03.02.2007, 11:22

Es ist komisch, dass es beim einten geht und beim anderen nicht.

Es wird demnächst ein Update der Captchas geben, noch ein wenig abwarten.
Rob [Admin]
Site Admin
 
Beiträge: 143
Registriert: 23.12.2006, 12:27


Zurück zu Zahlen Captcha

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron