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

SELFPHP


Professional CronJob-Service

Suche


International PHP Conference


WebTech Conference



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



PHP Summit


Software Architecture Summit


:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 
HTML5 Days


JavaScript Days


:: 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:
 
 

Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 


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

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 03.08.2008, 23:12:49
KleinerKruemelZ KleinerKruemelZ ist offline
Anfänger
 
Registriert seit: May 2007
Beiträge: 2
KleinerKruemelZ befindet sich auf einem aufstrebenden Ast
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 (03.08.2008 um 23:19:21 Uhr)
Mit Zitat antworten
  #2  
Alt 04.08.2008, 21:38:58
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.174
vt1816 befindet sich auf einem aufstrebenden Ast
vt1816 eine Nachricht über Skype™ schicken
AW: Captcha bringt trotz richtiger Eingabe Fehlermeldung

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

...
Hier liegt Dein Problem!

Suche mal hier im Forum nach "session_start" - Problem wurde bereits mehrmals besprochen.
__________________
Gruss vt1816


Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3  
Alt 29.08.2008, 19:09:34
KleinerKruemelZ KleinerKruemelZ ist offline
Anfänger
 
Registriert seit: May 2007
Beiträge: 2
KleinerKruemelZ befindet sich auf einem aufstrebenden Ast
AW: Captcha bringt trotz richtiger Eingabe Fehlermeldung

Wollte mich nur noch schnell für Deine Antwort bedanken.

Schönes WE, Alexander
Mit Zitat antworten
Antwort


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 22:48:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:11:41 Uhr.


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


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