Stoppt-den-Spam.info Foren-Übersicht
RegistrierenSuchenFAQMitgliederlisteBenutzergruppenLogin
Ziffern und Buchstaben ....
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Stoppt-den-Spam.info Foren-Übersicht -> Feedback
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
frameguard



Anmeldedatum: 05.03.2007
Beiträge: 117
Wohnort: Wien

BeitragVerfasst am: 14.03.2007, 10:43    Titel: Antworten mit Zitat

Ok, Mail 4 you. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
apophis171



Anmeldedatum: 02.04.2007
Beiträge: 16
Wohnort: Rathenow

BeitragVerfasst am: 10.04.2007, 19:19    Titel: Antworten mit Zitat

der apo kommt mal wieder nicht klar mit der materie. ich poste mal die captcha datei und den anderen code. in der hoffnung ihr könnt mir helfen

Code:

<?php
   session_start();
   unset($_SESSION['captcha_spam']);
   $text = rand(1000,10000); //Zufallszahl

   function randomString($len) {
      srand(date("s"));
      $possible="ABCDEFGHIJKLMNPRSTUVWXYZabcdefghijklmnpqrstuvwxyz123456789";
      $str="";
      while(strlen($str)<$len) {
        $str.=substr($possible,(rand()%(strlen($possible))),1);
      }
   return($str);
   }

$text=randomString(4);
$randkey=randomString(12);
$keyfile="key.txt";
$handle= fopen($keyfile,"w");
fwrite($handle,$randkey);
fclose($handle);

   }
   return base64_encode($result);
   }

   $_SESSION['captcha_spam'] = encrypt($text, $randkey); // mit zufälligem Key
      $_SESSION['captcha_spam'] = str_replace("=", "", $_SESSION['captcha_spam']);

         
   header('Content-type: image/png');
   $img = ImageCreateFromPNG('captcha.png'); //Backgroundimage
   $color = ImageColorAllocate($img, 0, 0, 0); //Farbe
   $ttf = $_SERVER['Document_Root']."arial.ttf"; //Schriftart
   $ttfsize = 25; //Schriftgrösse
   $angle = rand(0,5);
   $t_x = rand(5,50);
   $t_y = 35;
   imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text);
   imagepng($img);
   imagedestroy($img);
?>
//und hier das andere script
     // captcha anfang
      session_start();
      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"], $randkey);
      $keyfile="captcha/key.txt";
      $handle=fopen($keyfile,"r");
      $randkey = fread($handle, filesize ($keyfile));
      fclose($handle);
      $sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
      if($sicherheits_eingabe == $_SESSION['captcha_spam']){
      unset($_SESSION['captcha_spam']);
     // captcha ende


so, das wars...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
frameguard



Anmeldedatum: 05.03.2007
Beiträge: 117
Wohnort: Wien

BeitragVerfasst am: 10.04.2007, 21:16    Titel: Antworten mit Zitat

Also ich seh darin eigentlich keinen Fehler, bis auf:

}
return base64_encode($result);
}

nach fclose($handle);

Da wird vorher nirgends eine {-Klammer aufgemacht, die noch zu schließen wäre. Die drei Zeilen kannst, soweit ich sehe, komplett streichen.

Und der Teil nach

//und hier das andere script

ist hoffentlich in einer anderen PHP-Datei.

WICHTIG und nicht oft genug zu betonen: session_start(); MUSS am Anfang der zweiten PHP-Datei stehen, noch vor irgendwelchen HTML-Headers - da darf nicht einmal eine Leerzeile davor stehen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
apophis171



Anmeldedatum: 02.04.2007
Beiträge: 16
Wohnort: Rathenow

BeitragVerfasst am: 12.04.2007, 13:12    Titel: Antworten mit Zitat

hab die version in einem anderen thread gefunden http://forum.stoppt-den-spam.info/gemischtes-captcha-tutorial-t84.html

hab mal von da nochmal kopiert, und jetzt geht es... Very Happy

jetzt noch ne andere frage: warum muss der/die/das "session_start(); " ganz am anfang stehen (bezieht sich jetzt mehr auf die Leerzeichen)?

Und ist das jetzt nur speziell in diesem Script der Fall, oder ist das allgemein so?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
frameguard



Anmeldedatum: 05.03.2007
Beiträge: 117
Wohnort: Wien

BeitragVerfasst am: 12.04.2007, 13:18    Titel: Antworten mit Zitat

Der andere Thread ist eh von mir. Wink

Die Funktion session_start(); muß in JEDEM Script, das eine solche Funktion enthält, ganz am Anfang stehen. Wenn der Browser eine PHP-Datei aufmacht und da steht am Anfang eine Leerzeile, generiert er automatisch HTML-Headers, und schon ist das Malheur perfekt: session_start(); kann nur funktionieren, wenn vorher noch kein Header und nichts geschickt wurde.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
apophis171



Anmeldedatum: 02.04.2007
Beiträge: 16
Wohnort: Rathenow

BeitragVerfasst am: 12.04.2007, 13:50    Titel: Antworten mit Zitat

das ist erstmal gut zu wissen, ich habe nähmlich bei einem meiner scripte nen html davor (bei den Captcha auch...) Rolling Eyes

kann ich den html teil problemlos nach unten kopieren, oder muss ich da noch was beachten? (die ausgabe vom Kontaktformular...)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
frameguard



Anmeldedatum: 05.03.2007
Beiträge: 117
Wohnort: Wien

BeitragVerfasst am: 12.04.2007, 14:03    Titel: Antworten mit Zitat

Einfach in die erste Zeile das <? session_start(); ?>, und ab der 2. dann den HTML-Teil wie gehabt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
apophis171



Anmeldedatum: 02.04.2007
Beiträge: 16
Wohnort: Rathenow

BeitragVerfasst am: 12.04.2007, 14:06    Titel: Antworten mit Zitat

also so: (mal sehen ob ich das verstanden habe...)
1 <? session_start(); ?>
2 html
3 ...
4 <? php
5 Captcha Script
6 mein script (also wie gehabt)
7 ?>
8 rest des html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
frameguard



Anmeldedatum: 05.03.2007
Beiträge: 117
Wohnort: Wien

BeitragVerfasst am: 12.04.2007, 14:18    Titel: Antworten mit Zitat

Bingo. *g*

Nur kannst Dir bei 4 das "php" sparen, setz es lieber gleich unter 1 rein:

1 <? php session_start(); ?>
2 html
3 ...
4 <?
5 Captcha Script
6 mein script (also wie gehabt)
7 ?>
8 rest des html

ist einfach eleganter. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
apophis171



Anmeldedatum: 02.04.2007
Beiträge: 16
Wohnort: Rathenow

BeitragVerfasst am: 12.04.2007, 14:26    Titel: Antworten mit Zitat

Super!!! jetzt weiß ich auch, warum mein apache immer rumgestresst hat Very Happy

da sollte man vieleicht auch nochmal im Tutorial drauf hinweisen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Stoppt-den-Spam.info Foren-Übersicht -> Feedback Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
You can attach files in this forum
You can download files in this forum