Fehlersuche: Captcha Session für Formular in dynamisch öffnendem div

Oklino

Mitglied
Hallo Leute!

Derzeit arbeite ich mal wieder an so einem ungeliebten kleinen Projekt damit meine CSS und PHP-Kenntnisse nicht ganz einschlafen.

Ein Jungunternehmer hat mich gebeten ihm eine Seite zu gestalten. Am besten erkläre ich zuerst die Struktur und zeige euch dann den threadrelevanten Code.

Es besteht eine index.php in der in der ersten Zeile via session_start(); eine primitive Session gestartet wird. Auf der gleichen Seite befindet sich code zum einbinden (include) von Inhalten. Sobald ein Link angeklickt wird, wird ein DIV erzeugt in dem der Content dargestellt wird - genauer gesagt ein großer grauer Kasten mit einem X oben rechts. binde ich nun in diesen DIV mein Kontaktformular mit Captcha ein, wird immer nur ein dummy image generiert. Meine Vermutung ist dass das scritpt keine session ID bekommt. Warum - um das zu beantworten bin ich noch nicht erfahren genug. Aber irgendwer von euch mit Sicherheit!

Hyperlink Struktur:
<a href="index.php?content=yes&page=formular">



Nun zum Code:
index.php (html ausgespart)
PHP:
<?php session_start(); ?>

// haufenweise HTML code
 
<?php
      if($_GET['content'] == 'yes')
        {
          echo "<div id=\"content\">";
          echo "<div id=\"exitbutton\"><a href=\"index.php?content=no\">[x]</a></div>";  
          echo "<iframe src=\"content/".$_GET['page'].".php\" width=\"95%\" height=\"95%\" frameborder=\"0\">moep</iframe>";
            
         
          echo "</div>";
        }
     
      
      ?>

formular.php
PHP:
//html
<?php include("kontakt/kontakt.php"); ?>
//html



kontakt.php
PHP:
<?php
require('kontakt/config.inc.php');
require('kontakt/captcha.php');
$captcha = new captcha();
if(isset($_POST['form_submit']))
 {
  if($captcha->check_captcha($_SESSION['captcha_session'],$_POST['captcha_word'])!=TRUE) $errors[] = 'Fehlerhafte Codeeingabe';

  
  if(empty($errors))
   {
    $action = 'passed';
   }
  else $action = 'main';
 }

if(isset($_REQUEST['action']))  $action = $_REQUEST['action'];
if(empty($action)) $action = 'main';

?>

fürs captcha noch mittendrin folgendes:
Code:
<img class="captcha" src="kontakt/captcha_image.php<?php echo '?'.SID; ?>" alt="CAPTCHA" width="180" height="40"/>

Captcha_image.php
PHP:
<?php
require('captcha.php');
$captcha = new captcha();
if(isset($_SESSION['captcha_session']))
 {
  $captcha -> generate_image($_SESSION['captcha_session'],'kontakt/backgrounds/','kontakt/fonts/');
 }
 else
 {  
  $captcha -> generate_dummy_image();
 }
?>

So die captcha.php ist einwandfrei und funktioniert unter anderen Bedingungen (Struktur der Seite)

Verzeichnisstruktur:
/index.php
/content/formular.php
content/kontakt/kontakt.php
content/kontakt/captcha_image.php
content/kontakt/captcha.php
content/kontakt/config.inc.php

Vielen Dank im Voraus!
 
So ich bin jetzt etwas weiter gekommen... setze ich ein session_start(); in die kontakt.php, funktioniert das captcha (zumindest das generieren)... das problem ist nur dass ja der header schon gesendet wurde... *würg*....

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\xampp\htdocs\alt\content\formular.php:8) in D:\xampp\htdocs\alt\kontakt\kontakt.php on line 2
 
Dieser Fehler wurde hier im Forum schon sehr oft besprochen und auch bei Google gibt es mehr als 360.000 Einträge zu diesem Fehler:
http://www.google.de/search?source=ig&hl=de&rlz=&=&q=headers+already+sent
unter anderem eine Seite die ich jedem Neuling empfehle: http://www.php-fehlermeldungen.de/topicmenu1/index0.html

ich weiß was der fehler bedeutet - nur nicht wie ich bei meiner seitenstruktur darauf reagiere bzw. wie es es nun ohne diesen fehler ABSICHTLICH zu produzieren das captcha zum laufen kriege.

So die lösung war dass ich von der index seite includiert habe... und dann hat die includierte seite wieder eine includiert... ZACK und schon ist im dritten script die session nicht mehr gültig ;)

forumlar.php habe ich einfach entfernt und fertig.


hilfe zur selbsthilfe...

naja...
 

Neue Beiträge

Zurück