Captcha und Templates

Hier werden Probleme rund um das Zahlen Captcha behandelt

Moderator: frameguard

Captcha und Templates

Beitragvon kerrygold » 27.12.2006, 20:05

hallo
ich habe ein Problem: Mein Gästebuch arbeitet mit Templates.

Folgende Fehlermeldungen kommen wenn ich session_start() an den Anfang der guests.php setze:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\apachefriends\xampp\xampp\htdocs\san\tpl_func.php:11) in D:\apachefriends\xampp\xampp\htdocs\san\guests.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\apachefriends\xampp\xampp\htdocs\san\tpl_func.php:11) in D:\apachefriends\xampp\xampp\htdocs\san\guests.php on line 2

Irgendwie will das mit den Sessions nicht funktionieren. Sobald ich session_start()+restlicher Captchacode in meine case-abfrage (Dort wo ich sie benötige, also beim Überprüfen der eingegeben Daten) kommt nur eine weiße Seite und ich muss den Apache neu starten, da nix mehr geht.

Der Code lautet in etwa so:
Code: Alles auswählen
<?
session_start();
include("g1.php");
include("format_text.php");
$db=mysql_connect($db_host, $db_user, $db_passwd);
mysql_select_db($db_name);

function chkhttp($gbtext)
   {
      $txt = strpos($gbtext,'http://','0');
      return ($txt !== false);
   }

function chkwww($gbtext)
   {
      $txt = strpos($gbtext,'www','0');
      return ($txt !== false);
   }


switch ($action) {

default:
      $start = 0;
        if (!$show)
          {
            $show=10;
            }
        $eintraege = $show;
      $order="id desc";
      $sql1="SELECT * FROM $t_guestbook";
      $result1=mysql_query($sql1,$db);
      $gesamtgb=mysql_num_rows($result1);
      $link = "<font size=\"1\" face=\"Tahoma\">$gesamtgb Einträge insgesamt.<a href=\"start.php?load=guests&show=$gesamtgb&sid=$sid\"> Alle</a> oder nur die <a href=\"start.php?load=guests&show=10&sid=$sid\">letzten 10 Einträge</a> anzeigen.</font>";

      $sql1="SELECT * FROM $t_guestbook order by $order LIMIT $start,$eintraege";
      $result1=mysql_query($sql1,$db);
        while ($reihe = mysql_fetch_array($result1))
         {
         $gbid=$reihe['id'];
         $gbuser=$reihe['user'];
         $gbmail=$reihe['mail'];
            if($wbbuserdata[groupid]=="1" OR $wbbuserdata[groupid]=="6" )
               {
               $showmail = "</b><a href=\"mailto:$gbmail\">$gbmail</a><b>";
            }
         else
            {
               $showmail = "nur sichtbar für registrierte Mitglieder";
            }
         $hp=$reihe['hp'];
         $gbort=$reihe['ort'];
         $gbtext=format_text($reihe['text']);
         $gbtext=nl2br($gbtext);
         $gbhost=$reihe['host'];
         $gbdatum=$reihe['datum'];
         $testhp = substr($hp,0,7);
           if ($testhp!="http://")
             {
            $addtourl = "http://";
            }
           else
            {
            $addtourl = "";
            }
           if($hp=="http://" or $hp=='')
            {
            $hp = "Keine Homepage";
            }
           else
            {
            $hp="<a href=\"$addtourl$hp\" target=\"_blank\">$hp</a>";
            }
           if($wbbuserdata[groupid]=="1")
               {
               $adminoptions= "<a href=\"$LOADER?load=guests.php&action=delete&delid=$gbid&sid=$sid\"><img border=\"0\" src=\"gfx/x_delete.gif\" width=\"18\" height=\"16\"></a>";
                }
         eval ("\$strgblist .= \"".gettpl("page_guestbook_list")."\";");
          }
      eval ("dooutput(\"".gettpl("page_guestbook")."\");");

break;
case add:
        //Gästebucheintrag vornehmen
      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"], "8h384ls94");
      $sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
      if($sicherheits_eingabe == $_SESSION['captcha_spam'])
      {
      unset($_SESSION['captcha_spam']);
        //-------

    if ($gbname== '' OR $gbmail == '' OR $gbtext == '' OR $gbort == '')
       {
       getbox("Fehler: Die Felder mit Sternchen bitte ausfüllen!","Zurück","javascript:history.back();");
       }
     if(!ereg("([[:alnum:].-]+)(@[[:alnum:].-]+.+)", $gbmail))
       {
       getbox("Fehler: Die eMail-Adresse ist ungültig!","Zurück","javascript:history.back();");
      }
     else
       {
       if (chkhttp($gbtext))
           {
            getbox("Fehler: URLs sind im Text nicht erlaubt!","Zurück","javascript:history.back();");
         }
       else if (chkwww($gbtext))
           {
            getbox("Fehler: URLs sind im Text nicht erlaubt!","Zurück","javascript:history.back();");
         }
       else
         {
             $date=date("d.m.Y - H:i:s");
             $ip = getenv(REMOTE_ADDR);
            $host = gethostbyaddr($ip);
            $sql="INSERT into $t_guestbook (user, mail, hp, ort, text, host, ip, datum) VALUES ('$gbname', '$gbmail', '$gbhp', '$gbort', '$gbtext', '$host', '$ip', '$date')";
            mysql_query($sql,$db);
            getbox("Danke für Deinen Eintrag!","OK","$LOADER?load=guests.php&sid=$sid");
        }
      }
}
else
{
getbox("Fehler: Der Code ist falsch!","Zurück","javascript:history.back();");
}
break;


Ich hoffe mir kann jemand helfen

besten dank schonmal

gruß
kerrygold
 
Beiträge: 1
Registriert: 27.12.2006, 19:49

Beitragvon Rob [Admin] » 27.12.2006, 21:02

Setze das session_start(); in die Datei tpl_func.php ganz an den Anfang.

Die Sessionen ( session_start(); ) müssen immer vor allem anderen gestartet werden, also bevor Daten zum Client gesendet werden.
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