php.de

Zurück   php.de > php.de Intern > Beitragsarchiv > Trash

 
 
LinkBack Themen-Optionen
Alt 24.04.2008, 10:05  
Neuer Benutzer
 
Registriert seit: 23.04.2008
Beiträge: 7
Dartgott befindet sich auf einem aufstrebenden Ast
Standard Probleme beim Einbau von Captcha

Wer kann mir helfen?
Ich habe so ziemlich keinen blassen Schimer von PHP.
Meine HP ist eine Art Baukastensystem was aber einfach zu handhaben ist und in PHP geschrieben wurde.
Da mein Gästebuch seit ein paar Tagen mit Sexseiten zugespamt wird, wollte ich ein Captcha einbauen. Leider bekomme ich es nicht hin, und jetzt kommt ihr ins Spiel. Wer kann mir dabei helfen?

Hier der Code des Gästebuch welche eine Class-Datei ist
PHP-Code:
<?php
/**
* Datei-Ort : /klassen/Gaestebuch.klasse.php
* Zweck     : Das komplette Gaestebuch
* Website   : [url]http://www.webflips.de[/url]
* Kontakt   : [email]info@webflips.de[/email]
* Datum     : 13.08.2005
* Version   : 2.0
*/


 



class Gaestebuch extends Interaktiv{

  
// bestimmt Ablauf des Programms im Konstruktor
  
private $aktion;

  
// bei neuem Eintrag/Bearbeiten stehen hier die eingegebenen
  
private $gaestebuch;

  
// Gibt beim Bearbeiten/Loeschen die "id" des Eintrags an
  
private $eintragsid;

  
// Text mit Eraeuterungen zum Gaestebuch, erscheint in der Eintrags-uebersicht
  
private $text '

So k&ouml;nnte Ihr G&auml;stebuch aussehen! Testen Sie es nach
                   Belieben.</p>'
;


  
/**
   * Konstruktor uebergibt Datenbank-Handle an Elternklasse, setzt die Klassenvariablen. Dann
   * folgt die Logik des Programmablaufs.
   */
   
   

  
public function __construct($dbh){

    
parent::__construct($dbh);

    
$this->aktion $this->arrayElement($_GET'aktion');
    
$this->gaestebuch $this->arrayElement($_POST'gaestebuch');
    
$this->eintragsid $this->arrayElement($_GET'eintragsid');

    switch(
$this->aktion){
      case 
'neuereintrag':
        if(!
$this->gaestebuch){
          
$this->zeigeForm();
          return;
        }
        
$this->ueberpruefeForm();
        
$this->baueFehlermeldung();
        if(
$this->fehlermeldung){ // falls ein Formularfehler vorliegt
          
$this->zeigeForm();
          return;
        }
        else{
          
// Eintrag in die Datenbank schreiben
          
$this->neuerEintrag();
        }
        break;
      case 
'bearbeiten':
        if(!
$this->gaestebuch){
          
$this->zeigeForm();
          return;
        }
        
$this->ueberpruefeForm();
        
$this->baueFehlermeldung();
        if(
$this->fehlermeldung){
          
$this->zeigeForm();
          return;
        }
        else{
          
// Eintrag in der Datenbank updaten
          
$this->eintragBearbeiten();
        }
        break;
      case 
'loeschen':
        
$this->eintragLoeschen();
        break;
    }

    
$this->zeigeGaestebuch();

  }


  

  
  
  
  
  
  
/**
   * Macht Objekt per "echo $Objekt" ausgabefaehig, "$this->html" wird ausgegeben.
   */
  
public function __toString(){

    return 
$this->html;

  }


  
/**
   * Das Gaestebuch anzeigen. Zuerst wird die anzuzeigende Seite aus dem GET-String
   * geholt (falls "false", dann Seite 1) und die Anzahl der bestehenden Eintraege geholt
   * (siehe "Interaktiv::anzahlEintraege()"). Die Steuerungstabelle erhaelt links ein
   * Jump-Menue und rechts den "Neuer Eintrag"-Button. Mit der folgenden SQL-Abfrage
   * werden GAESTEBUCHEINTRAEGEPROSEITE Eintraege geholt fuer die entsprechend gewaehlte
   * "$seite".Innerhalb der folgenden "while()"-Schleife werden dann die Eintraege geholt und
   * dargestellt. Zum Abschluss folgt wieder die Steuerungstabelle.
   */
  
private function zeigeGaestebuch(){

    
// (int)-Typecasting, falls "$seite" nicht numerischen String enthaelt. So kann
    // Fehlermeldung in der mySQL-Abfrage vermieden werden.
    // (int)'String' gibt 0.
    
$seite = (int)$this->arrayElement($_GET'seite');
    if(!
$seite){
      
$seite 1;
    }

    
$eintraege $this->anzahlEintraege('gaestebuch');

    
$this->html $this->text;

    
$this->html .= $steuerung =  $this->steuerung($this->jumpMenue($seite,
                                                                  
$eintraege,
                                                                  
GAESTEBUCHEINTRAEGEPROSEITE),
                                                 
$this->steuerbutton('neuereintrag'));

    
// Starteintrag der LIMIT-Klausel bestimmen.
    
$starteintrag = ($seite 1) * GAESTEBUCHEINTRAEGEPROSEITE;
    
$sql  "SELECT *, DATE_FORMAT(DatumZeit, '%d.%m.%y um %H:%i') AS DatumUndZeit
             FROM gaestebuch
             ORDER BY DatumZeit DESC
             LIMIT $starteintrag, " 
GAESTEBUCHEINTRAEGEPROSEITE;
    
$stmt $this->dbh->vorbereiten($sql);
    
$stmt->ausfuehren();
    
$erg_zeilen $stmt->num_rows();

    
$i 0;

    while(
$daten $stmt->fetch_object()){
      
// HTML-codieren
      
$daten $this->entities($daten);

      
// ueberschrift
      
$no $eintraege - (($seite 1) * GAESTEBUCHEINTRAEGEPROSEITE) - $i;
      
$Kopfbox = new Kopfbox("# $no ");
      
$this->html .= $Kopfbox->holeKopfbox();

      
$this->html .= '<table align="center" width="350">
                        <tr>
                          <td style="padding-left:10px; padding-bottom:10px; border-bottom:1px dotted #' 
FARBTHEMA '">
                          [b]' 
$daten->Name '[/b] schrieb am '$daten->DatumUndZeit '
'
;
      if(
$daten->Ort){
        
$this->html .= "und war dabei gerade [b]$daten->Ort[/b]";
      }
      
$this->html .= '  </td>
                      </tr>
                      <tr>
                        <td style="padding:10px;">'
;
      
$this->html .= nl2br($this->bbCode($daten->Kommentar));
      
$this->html .= '  </td>
                      </tr>'
;

      
// Zusaetzliche Tabellenzeile, falls Homepage oder E-Mail angegeben
      
if($daten->Email || $daten->Homepage){
        
$this->html .= '<tr><td align="center" style="padding:10px;">';
        if(
$daten->Email){
          
$this->html .=  '[email="' $daten->Email '"][img]layout/interaktiv/email.gif[/img][/email]';
        }
        if(
$daten->Homepage){
          
$this->html .= '[url="' $daten->Homepage '"][img]layout/interaktiv/homepage.gif[/img][/url]';
        }
        
$this->html .= '</td></tr>';
      }

      
// Falls Benutzer "admin" -> Bearbeiten/Loeschen-Button anzeigen
      
if($this->sichtbarkeitsrecht('admin')){
        
$this->html .= '<tr>
                          <td align="right">'
;
        
$this->html .= $this->steuerbutton('bearbeiten'$daten->id);
        
$this->html .= $this->steuerbutton('loeschen'$daten->id);
        
$this->html .= '</td></tr>';
      }

      
$this->html .= '</table>';

      
// graphische Link zu Seitenanfang/ende
      
$this->html .= Pfeile::aufAbPfeile($i$erg_zeilen);

      
$i++;
    }
    
$stmt->free_result();

    
// ggf. etwas Raum schaffen
    
if($erg_zeilen 3){
      
$this->html .= '<div class="raum"></div>';
    }

    
// Steuerungs-Tabelle erneut ausgeben
    
$this->html .= $steuerung;

  }


  
/**
   * Eintrag loeschen. Nach ueberpruefung, ob es sich beim Benutzer um einen "admin" handelt,
   * den Eintrag loeschen. Die "id" kommt dabei aus "$this->eintragsid" (siehe
   * "Interaktiv::steuerbutton()".
   */
  
private function eintragLoeschen(){

    
$sichtrecht $this->sichtbarkeitsrecht('admin');
    if(!
$sichtrecht){
      echo 
UNBEFUGTERZUGRIFF;
      return;
    }
    
$sql    "DELETE FROM gaestebuch
               WHERE id = :0"
;
    
$stmt $this->dbh->vorbereiten($sql);
    
$stmt->ausfuehren($this->eintragsid);

  }


  
/**
   * Formular fuer neuen Eintrag/Bearbeiten anzeigen. Nach der "admin"-ueberpruefung wird
   * zwischen Bearbeiten und neuem Eintrag unterschieden, um die "<input>" ggf. vorzubelegen.
   * Sie sind nicht leer beim Bearbeiten (Daten kommen aus der Datenbank) oder wenn das
   * Formular fehlerhaft abgeschickt wurde.
   */
  
private function zeigeForm(){

    if(
$this->aktion == 'bearbeiten'){
      
$sichtrecht $this->sichtbarkeitsrecht('admin');
      if(!
$sichtrecht){
        echo 
UNBEFUGTERZUGRIFF;
        return;
      }
      
$titel 'G&auml;stebucheintrag bearbeiten';
      if(
$this->fehlermeldung){
        
$namevalue      htmlspecialchars($this->gaestebuch['Name']);
        
$kommentarvalue htmlspecialchars($this->gaestebuch['Kommentar']);
        
$ortvalue       htmlspecialchars($this->gaestebuch['Ort']);
        
$emailvalue     htmlspecialchars($this->gaestebuch['Email']);
        
$homepagevalue  htmlspecialchars($this->gaestebuch['Homepage']);
      }
      else{
        
$sql  "SELECT Name, Kommentar, Ort, Email, Homepage FROM gaestebuch 
                 WHERE id = :0"
;
        
$stmt $this->dbh->vorbereiten($sql);
        
$stmt->ausfuehren($this->eintragsid);
        
$daten $stmt->fetch_row();
        
$daten $this->specialcharsArray($daten);
        list(
$namevalue$kommentarvalue$ortvalue$emailvalue$homepagevalue) = $daten;
      }
    }
    else{
      
$titel 'Ins G&auml;stebuch eintragen';
      
$namevalue      = ($this->fehlermeldung) ? htmlspecialchars($this->gaestebuch['Name']) : '';
      
$kommentarvalue = ($this->fehlermeldung) ? htmlspecialchars($this->gaestebuch['Kommentar']) : '';
      
$ortvalue       = ($this->fehlermeldung) ? htmlspecialchars($this->gaestebuch['Ort']) : '';
      
$emailvalue     = ($this->fehlermeldung) ? htmlspecialchars($this->gaestebuch['Email']) : '';
      
$homepagevalue  = ($this->fehlermeldung) ? htmlspecialchars($this->gaestebuch['Homepage']) : '';
    }

   
   
    
// ueberschrift
    
$Kopfbox = new Kopfbox($titel);
    
$this->html  $Kopfbox->holeKopfbox();

    
// Eintragsformular
    
$this->html .= '<form method="post" action="" name="hauptformular">';
    
$this->html .= '<table cellspacing="0" cellpadding="5">
                      <tr>
                        <td width="30%" align="center">Name</td>
                        <td width="70%" align="center">
                        <input name="gaestebuch[Name]" maxlength="' 
BENUTZERNAMEMAXZEICHEN '" type="text" style="width:240px;" value="'$namevalue '" />
                        </td>
                      </tr>
                      <tr>
                        <td align="center">Kommentar</td>
                        <td align="center"><textarea cols="55" rows="10" name="gaestebuch[Kommentar]" style="width:240px;height:125px; ">' 
$kommentarvalue '</textarea></td>
                      </tr>
                      <tr>
                        <td colspan="2">
                        <table width="100%" cellpadding="3" cellspacing="0">
                          <tr>
                            <td colspan="3" height="30" valign="bottom" align="center">[b][i]Und wenn Sie wollen, noch folgendes:[/i][/b]</td>
                          </tr>
                          <tr>
                            <td width="45%" align="center">Ich bin gerade</td>
                            <td width="10%"></td>
                            <td width="45%"><input name="gaestebuch[Ort]" type="text" style="width:200px;" maxlength="50" value="' 
$ortvalue '" /></td>
                          </tr>
                          <tr>
                            <td align="center">E-Mail</td>
                            <td align="right">[img]layout/interaktiv/email.gif[/img]</td>
                            <td>
                            <input name="gaestebuch[email]" type="text" style="width:200px;" maxlength="' 
MAXEMAILLAENGE '" value="' $emailvalue '" />
                            </td>
                          </tr>
                          <tr>
                            <td align="center">Homepage</td>
                            <td align="right">[img]layout/interaktiv/homepage.gif[/img]</td>
                            <td>
                            <input name="gaestebuch[Homepage]" type="text" style="width:200px;" maxlength="' 
MAXHOMEPAGELAENGE '" value="' $homepagevalue '" />
                            </td>
                          </tr>
                          <tr>
                            <td colspan="3" align="center" style="padding:30px 0px; ">
                            <input name="aktion_gaestebuch" type="submit" value="Eintragen" />
                            </td>
                          </tr>
                        </table>
                        </td>
                      </tr>
                    </table>
                    </form>
                    <div class="raum"></div>'
;

    
// ggf. Fehlermeldung voranstellen
    
if($this->fehlermeldung){
      
$this->html $this->fehlermeldung $this->html;
    }

  }


  
/**
   * Formular ueberpruefen. Prueft verschiedene Felder aus Vollstaendigkeit und Richtigkeit.
   */
  
private function ueberpruefeForm(){

    
// Felder auf Gleichheit mit bestehenden Eintraegen ueberpruefen
    
$vergleiche_werte = array($this->gaestebuch['Name'], $this->gaestebuch['Kommentar'],
                              
$this->gaestebuch['Ort'], $this->gaestebuch['Email'],
                              
$this->gaestebuch['Homepage']);
    
$vergleiche_felder = array('Name''Kommentar''Ort''Email''Homepage');
    
$this->vergleicheEintraege('gaestebuch'$vergleiche_werte$vergleiche_felder);

    
$this->pruefeBenutzerBlock('gaestebuch'GAESTEBUCHBLOCKZEIT);

    
$this->pruefeLeer("Name"$this->gaestebuch['Name']);
    
$this->pruefeLeer("Kommentar"$this->gaestebuch['Kommentar']);

    
$this->pruefeMaxZeichen("Name"$this->gaestebuch['Name'], BENUTZERNAMEMAXZEICHEN);
    
$this->pruefeMaxZeichen("Ort"$this->gaestebuch['Ort'], 50);
    
$this->pruefeMaxZeichen("Email"$this->gaestebuch['Email'], MAXEMAILLAENGE);
    
$this->pruefeMaxZeichen("Homepage"$this->gaestebuch['Homepage'], MAXHOMEPAGELAENGE);

    
$this->pruefeWortlaenge("Kommentar"$this->gaestebuch['Kommentar'], MAXWORTLAENGE);
    
$this->pruefeWortlaenge("Ort"$this->gaestebuch['Ort'], 20);

    
$this->pruefeEmail($this->gaestebuch['Email']);
    
$this->pruefeURL($this->gaestebuch['Homepage']);

  }


  
/**
   * Neuen Eintrag vornehmen mit den Daten aus "$this->gaestebuch" und der aktuelle Uhrzeit
   */
  
private function neuerEintrag(){

    
$sql "INSERT INTO gaestebuch (Name, DatumZeit, Ort, Kommentar, Email, Homepage)
            VALUES (:0, NOW(), :1, :2, :3, :4)"
;
    
$stmt $this->dbh->vorbereiten($sql);
    
$stmt->ausfuehren($this->gaestebuch['Name'],
                      
$this->gaestebuch['Ort'],
                      
$this->gaestebuch['Kommentar'],
                      
$this->gaestebuch['Email'],
                      
$this->gaestebuch['Homepage']);

    
$this->benutzerBlock('gaestebuch');
    
Aktuell::neuerEintrag($this->dbh'Neuer Eintrag');
  }


  
/**
   * Eintrag bearbeiten. mySQL-Tabelle "gaestebuch" mit den Daten aus "$this->gaestebuch"
   * updaten.
   */
  
private function eintragBearbeiten(){

    
$sichtrecht $this->sichtbarkeitsrecht('admin');
    if(!
$sichtrecht){
      echo 
UNBEFUGTERZUGRIFF;
      return;
    }

    
$sql "UPDATE gaestebuch
            SET Name = :0, Ort = :1, Kommentar = :2, Email = :3, Homepage = :4
            WHERE id = :5"
;
    
$stmt $this->dbh->vorbereiten($sql);
    
$stmt->ausfuehren($this->gaestebuch['Name'],
                      
$this->gaestebuch['Ort'],
                      
$this->gaestebuch['Kommentar'],
                      
$this->gaestebuch['Email'],
                      
$this->gaestebuch['Homepage'],
                      
$this->eintragsid);

  }


}

?>
Hier der Code der Captcha Datei

PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Demo für Captcha-Funktion</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
    
require_once( 'class.captcha.php' );

    if (empty(
$_GET['session_code'])) 
        { 
$session_code md5(round(rand(0,40000))); } 
    else 
        { 
$session_code=$_GET['session_code']; }    
    
    
$my_captcha = new captcha$session_code'__TEMP__/' );
            
    

    
$do $_GET['do'];
    
    if (
$do == 'verify')
    {
        if (
$my_captcha->verify$_POST['password'] ) )
        {
            echo 
"You entered the correct password!";
            exit;    
        }
    }

    
$pic_url $my_captcha->get_pic);
        
    echo <<<FORM
    <form name="form1" method="post" action="$PHP_SELF?do=verify&session_code=$session_code">
       

[img]captcha_image.php?img=$pic_url
[/img]</p>
        

Displayed Code? <input type="text" name="password"></p>
        

<input type="submit" name="Submit" value="Überprüfen"></p>
    </form>
FORM;


?>
</body>
</html>
Die captcha Datei heißt Demo.
Ich weiß einfach nicht wo ich welchen Code hinkopieren muss, falls das überhaupt reicht. Zum Captch gehören noch zwei andere .php files die sich aber auf die Demo Datei beziehen.
Wie gesagt brauche dringend Hilf
Dartgott ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.04.2008, 10:46  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Hast du wirklich das Gefühl, dass hier jemand fast 500 Zeile Code, den du von irgendwo hast, und von dem du selber nicht den geringsten Schimmer hast, durchsehen wird. Und weil auf diese Zumutung hier (Crosspostings sind generell sehr unbeliebt) niemand eingegengen ist (Standard-Fehlerbeschreibung: Ich kriegs nicht hin), glaubst du dass das jetzt hier das jemand tut.
Entweder du eignest dir die minimalsten Grundkenntnisse an und suchst dann eventuell Hilfe zu einem konkreten Problem, oder du lässt das ins Forum Gesuche verschieben. Ich vermute aber, dass sich auch dort das niemand unbezahlt antut
__________________
Gruss
L
lazydog ist offline  
Alt 24.04.2008, 11:15  
Neuer Benutzer
 
Registriert seit: 23.04.2008
Beiträge: 7
Dartgott befindet sich auf einem aufstrebenden Ast
Standard

Ich habe mich lediglich an dieses Forum gewandt, da man hier den kompletten Code einbinden kann und im anderen halt nicht. Im anderen war die Anzahl von Wörter beschränkt.
Dartgott ist offline  
 


Themen-Optionen

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Gleichungs Captcha PHP litterauspirna PHP-Fortgeschrittene 17 25.05.2008 21:06
Frage zu spam bots und captcha litterauspirna PHP Tipps 2008 6 20.05.2008 23:56
Captcha in Website einbauen Dartgott PHP Tipps 2008 9 23.04.2008 15:53
Captcha in bestehendes GB einbauen ZeroQL PHP Tipps 2008 6 08.04.2008 15:32
mit ajax captcha neu laden und generieren jjackisc PHP-Fortgeschrittene 10 10.08.2007 15:41
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Probleme mit mbstring extension unter Debian HStev Server, Hosting und Workstations 3 30.08.2006 20:55
[Erledigt] Probleme mit Einbindung Captcha PHP Tipps 2006 0 18.08.2006 19:42
Probleme mit Rechteverteilung chmod() per script!!!??? Funky_ PHP Tipps 2006 7 17.06.2006 17:10
captcha PHP Tipps 2006 8 16.06.2006 13:48
Gästebuch mit captcha emerge PHP Tipps 2006 8 01.04.2006 10:06
[Erledigt] Probleme beim Datenupload zu meiner Datenbank Datenbanken 3 05.09.2005 19:47
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
[Erledigt] Probleme mit Fremdsprachen HTML, Usability und Barrierefreiheit 2 21.09.2004 17:11

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
\name\ \kommentar\ \und wenn sie wollen, noch folgendes:\ \ich bin gerade\, captcha in gästebuch einbauen, captcha einbauen html, captcha einbauen, website captcha problem

Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.