SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

 
 
Themen-Optionen Ansicht
  #1  
Alt 04.08.2008, 00:12:49
KleinerKruemelZ KleinerKruemelZ ist offline
Anfänger
 
Registriert seit: May 2007
Beiträge: 2
Captcha bringt trotz richtiger Eingabe Fehlermeldung

Hallo Ihr,

versuche grad ein Captcha in ein bestehendes Gästebuch zu intergrieren.
Leider bekomme ich folgende Fehlermeldungen:

---
Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\guestbook\captcha\captcha.php on line 2

( bei eingeschaltenem error_reporting(E_ALL); )


Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\guestbook\captcha\captcha.php:2) in C:\xampp\htdocs\guestbook\captcha\captcha.php on line 24

( bei eingeschaltenem error_reporting(E_ALL); )


Warning: imagettftext() [function.imagettftext]: Invalid font filename in C:\xampp\htdocs\guestbook\captcha\captcha.php on line 32
�PNG IHDR�(�/���IDATx���1 �@���_�OߧF��6TE4�6���m����H�5���[�s�spI"� R�H"� R�H"� R�H"� R�H"� R�H"� R�H"� R�H"� R�H����sI"z���*�"IEND�B`�

( auch ohne error_reporting(E_ALL); )

---

Desweiteren werden zwar Bild und Text angezeigt, aber selbst bei korrekter Eingabe des Sicherheitscodes kommt die von mir definierte Fehlerausgabe.
(config.php des GB : 'spamschutz' => 'Captcha ung&uuml;ltig<br>Session:'.$_SESSION['captcha_spam'].'<br>Eingabe:'.$_POST["sicherheitscode"].'<br>')

Beispiel:

Captcha ungültig
Session:qHrhs
Eingabe:qHrhs

Nachfolgend die dazugehörigen Listings:

captcha.php

PHP-Code:
<?php
   session_start
();
   unset(
$_SESSION['captcha_spam']);

   function 
randomString($len) {
      function 
make_seed(){
         list(
$usec $sec) = explode (' 'microtime());
         return (float) 
$sec + ((float) $usec 100000);
      }
      
srand(make_seed());

      
//Der String $possible enthält alle Zeichen, die verwendet werden sollen
      
$possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789";
      
$str="";
      while(
strlen($str)<$len) {
        
$str.=substr($possible,(rand()%(strlen($possible))),1);
      }
   return(
$str);
   }

   
$text randomString(5);  //Die Zahl bestimmt die Anzahl stellen
   
$_SESSION['captcha_spam'] = $text;

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

add.php

PHP-Code:
<?php
error_reporting
(E_ALL);
#
# patShaping Guestbook 1.6 - add.php
#
# Speichern eines Eintrags und Anzeigen der 'Neuer Eintrag'-Seite
#
# Autor:            Patrick Canterino <patrick@patshaping.de>
# Letzte Aenderung: 5.11.2005
#

require('shared.php');
require(
'bbcode.php');
require(
'captcha/captcha.php');

$name    formdata('name');
$email   formdata('email');
$www     formdata('www');
$message formdata('message');
$preview formdata('preview');
$sicherheitscode formdata('sicherheitscode');
$sess $_SESSION['captcha_spam'];

if(
get_config_var('readonly'))
{
 
$tpl = new Template;
 
$tpl->read_file(get_config_var('tpl_add'));

 
$tpl->fillin('SCRIPT',$_SERVER['SCRIPT_NAME']);
 
$tpl->parse_if_block('readonly',1);

 print 
$tpl->get_template();
}
else
{
 if(!
$name && !$email && !$www && !$message)
 {
  
$tpl = new Template;
  
$tpl->read_file(get_config_var('tpl_add'));

  
$tpl->fillin('SCRIPT',$_SERVER['SCRIPT_NAME']);
  
$tpl->parse_if_block('readonly',0);

  print 
$tpl->get_template();
 }
 else
 {
  if(
$www == 'http://'$wwwurl '';
  else 
$wwwurl $www;

    
## Captcha Abfrage

    
if(!isset($_SESSION['captcha_spam'])){
    
$lala 'lala';
    };
    if(isset(
$_SESSION['captcha_spam']) && ($sicherheitscode != $sess)){
    
show_error(get_config_var('spamschutz'));
    unset(
$_SESSION['captcha_spam']);
    };
    if(isset(
$_SESSION['captcha_spam']) && ($sicherheitscode == $sess)){
    unset(
$_SESSION['captcha_spam']);
    };

  
## Captcha Ende

  
if(strlen($name)    < get_config_var('name_minlen')) show_error(get_config_var('name_too_short'));
  if(
strlen($message) < get_config_var('msg_minlen'))  show_error(get_config_var('msg_too_short'));

  if(
get_config_var('name_maxlen') && strlen($name)    > get_config_var('name_maxlen')) show_error(get_config_var('name_too_long'));
  if(
get_config_var('msg_maxlen')  && strlen($message) > get_config_var('msg_maxlen'))  show_error(get_config_var('msg_too_long'));

  
# Pruefen, ob eingegebene E-Mail-Adresse (im Internet) gueltig ist

  
if(!check_email($email) && $email != ''show_error(get_config_var('email_invalid'));

  
# Pruefen ob URL gueltig ist

  
if(!check_url($wwwurl) && $wwwurl != ''show_error(get_config_var('wwwurl_invalid'));

  
# Erzeugen einer eindeutigen ID

  
$id uniqid(dechex(rand(0,255)).dechex(rand(0,255)));

  
$name    htmlentities($name);
  
$email   htmlentities($email);
  
$wwwurl  htmlentities($wwwurl);
  
$message htmlentities($message);

  
# Ersetzen der Zeilenumbrueche in Name, E-Mail- und Homepage-Adresse
  # durch Leerzeichen

  
$name    preg_replace("/\015\012|\012|\015/",' ',$name);
  
$email   preg_replace("/\015\012|\012|\015/",' ',$email);
  
$wwwurl  preg_replace("/\015\012|\012|\015/",' ',$wwwurl);

  
# Ersetzen der Zeilenumbrueche im Text durch <br />

  
$message preg_replace("/\015\012|\012|\015/",'<br />',$message);

  
# Schraegstriche durch | ersetzen, um Probleme zu vermeiden

  
$name    str_replace('|','|',$name);
  
$wwwurl  str_replace('|','|',$wwwurl);
  
$message str_replace('|','|',$message);

  
# Mehr als ein Leerzeichen zu &nbsp;
  # Grundidee stammt aus dem Modul Encode::Plain des selfforum
  # Vorschlaege fuer eine elegantere Umsetzung werden gerne entgegengenommen!

  
for($x=0;$x<strlen($message);$x++)
  {
   if(
$message{$x} == ' ' && $message{$x+1} == ' '$message{$x} = "\240";
  }

  
$message str_replace("\240",'&nbsp;',$message);

  
# Ein Leerzeichen nach einem <br /> ebenfalls zu &nbsp;
  # Grundidee ebenfalls entnommen aus Encode::Plain des selfforum

  
$message str_replace('<br /> ','<br />&nbsp;',$message);

  
# Je nach Konfiguration den BBCode parsen

  
if(get_config_var('allow_bbcode')) $message parse_bbcode($message);

  
# Alles in Ordnung, CSV-String erzeugen

  
$line "$id|$name|$email|$wwwurl|".time()."|$message";

  if(
$preview)
  {
   
# Vorschau

   
$tpl = new Template;
   
$tpl->read_file(get_config_var('tpl_preview'));

   
$tpl->fillin('SCRIPT',$_SERVER['SCRIPT_NAME']);

   
set_tpl_form_values($tpl);

   
$tpl->fillin('ENTRY',make_entry($line));
   print 
$tpl->get_template();
  }
  else
  {
   
# Daten speichern

   
$datafile get_config_var('datafile');

   if(!
file_exists($datafile)) $openmode 'w';
   else 
$openmode 'r+';

   
$df fopen($datafile,$openmode);
   if(!
$df) die;
   
flock($df,LOCK_EX);

   if(
$openmode == 'r+' && filesize($datafile) > 0)
   {
    
# Pruefen, ob Datendatei am Ende einen Zeilenumbruch hat
    # Wenn nicht, wird ein zusaetzlicher eingefuegt

    
$data fread($df,filesize($datafile));
    if(!
preg_match("/\n$/",$data) && $data != ''fwrite($df,"\n");
    unset(
$data);
   }

   
# Daten in die Datei schreiben

   
fwrite($df,"$line\n");
   
flock($df,LOCK_UN);
   
fclose($df);

   
$tpl = new Template;
   
$tpl->read_file(get_config_var('tpl_saved'));
   
$tpl->fillin('SCRIPT',$_SERVER['SCRIPT_NAME']);
   
$tpl->fillin('ENTRY',make_entry($line));
   print 
$tpl->get_template();

  }
 }
}

# show_error()
#
# Funktion liest die Vorlagendatei fuer Fehler ein,
# parst sie, zeigt sie an und beendet das Script
#
# Parameter: Fehlermeldung

function show_error(&$errmsg)
{
 global 
$name$email$www$message$sicherheitscode;

 
$etpl = new Template;
 
$etpl->read_file(get_config_var('tpl_add_error'));

 
$etpl->fillin('SCRIPT',$_SERVER['SCRIPT_NAME']);
 
$etpl->fillin('ERRMSG',$errmsg);

 
set_tpl_form_values($etpl);

 print 
$etpl->get_template();
 exit;
}

# set_tpl_form_values()
#
# Fuegt die vom Benutzer eingegeben Daten in ein
# Template-Objekt ein
#
# Die Formulardaten werden erneut mit formdata()
# eingelesen!
#
# Parameter: Template-Objekt
#
# Rueckgabe: -nichts- (Template-Objekt wird veraendert)

function set_tpl_form_values(&$tpl)
{
 
$tpl->fillin('NAME',htmlentities(formdata('name')));
 
$tpl->fillin('EMAIL',htmlentities(formdata('email')));
 
$tpl->fillin('WWW',htmlentities(formdata('www')));
 
$tpl->fillin('MESSAGE',htmlentities(formdata('message')));
}

#
### Ende ###



?>
Hat jemand zufällig eine Idee, wie ich dies lösen könnte? Vielen Dank, schon mal.

Gruß, Alex

Geändert von KleinerKruemelZ (04.08.2008 um 00:19:21 Uhr)
Mit Zitat antworten
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Keine rückmeldung bei richtiger eingabe Savy PHP Grundlagen 10 27.01.2007 23:48:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:33:32 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt