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:
Alle anderen Dateien befinden sich im Verzeichnis /global/captcha
Datei captcha
Datei Captcha.cls.php
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">
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();
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(0, 9);
$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($image, 222, 222, 222);
$stringcolor = imagecolorallocate($image, 0, 0, 0);
$linecolor = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 25, 0, 8, 22,
$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;
}
}
Kommentar