Image als PHP Klasse

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Image als PHP Klasse

    Hallo zusammen,

    ich weiss im MOment nicht so genau was ich falsch mache... es will und will gerade nicht.
    Ich will fuer ein Image flexibel eine PHP Klasse einsetzen:

    Datei /sites/grad/nwu/example.php:
    <img src="../../../global/captcha/captcha.php" alt="CAPTCHA">

    In dem Verzeichnis /global/captcha gibt es dann 3 Dateien. Einmal die Datei Captcha.php, die Datei Captcha.cls.php und die Schriftart hurryup.ttf. In der Datei Captcha.php wird die Datei captcha.cls.php included und diese verweist dann wieder auf die Schriftart. Meine grosse Frage ist nun wie werden die relativen Pfade gesetzt. Ich weiss nicht wie dieses php klasse als Image reagiert. Muss ich quasi immer von dem Pfad /sites/grad/nwu auf die anderen Dateien verweise (also in catcha.php: include('../../../global/captcha/captcha.cls.php')) oder muss ich in der captcha Klasse "normal" verweisen (include('./captcha.cls.php/)).
    Jetzt noch das komische es funktionniert beides nicht. Ich habe beides ausprobiert. Hat jemand eine Ahnung wie ich die Pfade zu setzen habe??? Das kann doch nicht so schwer sein... bin hier gerade am verzweifeln.

    Hier noch der Quellcode:

    Von der ersten Date reicht der <img> aufruf
    /sites/grad/nwu/example.php:

    PHP-Code:
    <img src="../../../global/captcha/captcha.php" alt="CAPTCHA"
    Alle anderen Dateien befinden sich im Verzeichnis /global/captcha

    Datei captcha
    PHP-Code:

    php

      
    //Load the Class

      
    include('../../../global/captcha/captcha.cls.php');

      
    //Create a CAPTCHA
      
    $captcha = new captcha(5'jpeg');

      
    //Store the String in a session
      // $_SESSION['CAPTCHAString'] = $captcha->GetCaptchaString(); 
    Datei Captcha.cls.php
    PHP-Code:
    class captcha
      
    {

        var 
    $Length;
        var 
    $CaptchaString;
        var 
    $ImageType;
        var 
    $Font;
        var 
    $CharWidth;

        function 
    captcha ($length 6$type 'png'$letter '')
        {

          
    $this->Length    $length;
          
    $this->ImageType $type;
          
    $this->Font      '../../../global/captcha/hurryup.ttf';
          
    $this->CharWidth 19;

          if (
    $letter == '')
          {

            
    $this->StringGen();

          }
          else
          {

            
    $this->Length        strlen($letter);
            
    $this->CaptchaString $letter;

          }

          
    $this->SendHeader();

          
    $this->MakeCaptcha();

        }

        function 
    StringGen ()
        {

          
    $uppercase  range('A''Z');
          
    $numeric    range(09);

          
    $CharPool   array_merge($uppercase$numeric);
          
    $PoolLength count($CharPool) - 1;

          for (
    $i 0$i $this->Length$i++)
          {

            
    $this->CaptchaString .= $CharPool[mt_rand(0$PoolLength)];

          }

        }

        function 
    SendHeader ()
        {

          switch (
    $this->ImageType)
          {

            case 
    'jpeg'header('Content-type: image/jpeg'); break;
            case 
    'png':  header('Content-type: image/png');  break;
            default:     
    header('Content-type: image/png');  break;

          }

        }

        function 
    MakeCaptcha ()
        {
          
    $imagelength $this->Length $this->CharWidth 16;
          
    $imageheight 40;

          
    $image       imagecreate($imagelength$imageheight);

          
    $bgcolor     imagecolorallocate($image222222222);

          
    $stringcolor imagecolorallocate($image000);
          
    $linecolor   imagecolorallocate($image000);

          
    imagettftext($image250822,
                       
    $stringcolor,
                       
    $this->Font,
                       
    $this->CaptchaString);

          switch (
    $this->ImageType)
          {

            case 
    'jpeg'imagejpeg($image); break;
            case 
    'png':  imagepng($image);  break;
            default:     
    imagepng($image);  break;

          }

        }

        function 
    GetCaptchaString ()
        {

          return 
    $this->CaptchaString;

        }

      } 

  • #2
    die Pfade müssen so gesetzt sein, dass sie vom AKTUELLEN AUFRUF aus stimmen, d.h. du müsstest in der Klasse dynamisch includen ... have fun


    Versuch mal ein
    PHP-Code:
    $dir getcwd(); // speichert das aktuelle Arbeitsverzeichnis
    chdir(dirname(__FILE__)); // setzt das Arbeitsverzeichnis, auf das 
                              // Dir des aktuellen Skriptes (nicht des Aufrufes!)

    require('./captcha.cls.php');
    $captcha = new captcha(5'jpeg');

    chdir($dir); // setzt das Arbeitsverzeichnis wieder zurück 
    (oder so ähnlich)

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar

    Lädt...
    X