PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String Problem


Bersi
07.12.2005, 22:28:29
Also ich habe vor ein PHP Script zu schreiben, was als PNG Grafik fungiert und dabei 2 PNG Dateien lädt, zusammenfügt und dann als eine PNG Grafik zurückgibt. Hier mal der Code:

<?php
header('Content-type: image/png');
function Loadpng ($imgname) {
$im = @ImageCreateFromPNG ($imgname); /* Versuch, Datei zu öffnen */
if (!$im) { /* Prüfen, ob fehlgeschlagen */
$im = ImageCreate (150, 30); /* Erzeugen eines leeren Bildes */
$bgc = ImageColorAllocate ($im, 255, 255, 255);
$tc = ImageColorAllocate ($im, 0, 0, 0);
ImageFilledRectangle ($im, 0, 0, 150, 30, $bgc);
/* Ausgabe einer Fehlermeldung */
ImageString($im, 1, 5, 5, "Fehler beim Öffnen von: $imgname", $tc);
}
return $im;
}
$file1 = 'http://xyz.de/bla/bla.png';
$file2 = 'a.png';
$image1 = Loadpng($file1);
$image2 = Loadpng($file2);
$output = imagecreate(360, 50);
imagecopy($output, $image1, 0, 0, 0, 0, 180, 50);
imagecopy($output, $image2, 180, 0, 0, 0, 180, 50);
imagepng($output);
?>


Hab da ein Problem:

1. Das laden von $image2 schlägt fehl, obwohl die URL korrekt ist (ist in diesem Fall natürlich nicht die, die im Original drin steht) und als Fehlerausgabe kommt "Fehler beim Öffnen von: http:". Egal welchen String ich übergebe und ob ich ihn direkt als Parameter schreibe oder in $file1 speichere, es werden immer nur die ersten 5 Buchstaben als Fehler ausgegeben. Mit a.png geht es, aber beide Grafiken muss ich eigentlich über URL der Form "http://.../.../.../xyz.png" angeben. Leider nutzt er wie gesagt immer nur die ersten 5 Zeichen. Weiß der Geier warum.


Danke für Hilfe.

meikel (†)
07.12.2005, 22:46:25
Weiß der Geier warum.
Wahrscheinlich deshalb:
http://de3.php.net/manual/en/wrappers.http.php
http://de3.php.net/manual/en/ref.filesystem.php#ini.allow-url-fopen

Bersi
08.12.2005, 02:12:57
Hab mir deine Links jetzt ca 30 Minuten angeguckt und weiß absolut nicht was du mir damit sagen willst oder was ich tun muss damit es funktioniert. Aber eins will ich noch anmerken:

Selbst wenn ich schreibe:

$file = 'abcdefghij';

Gibt er nur "abcde" aus. Also es liegt nicht am "http:", sondern am String. Falls dir das klar ist, dann versteh ich dich nicht. >.<

Domi
08.12.2005, 03:38:48
String Problem

.. netter Titel ;)

sorry, komm grad von ner Party :)

meikel (†)
08.12.2005, 12:16:23
Hab mir deine Links jetzt ca 30 Minuten angeguckt
Das glaube wer will.

Was ist daran unverständlich?
allow_url_fopen boolean
This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers.

Note: This setting can only be set in php.ini due to security reasons.

Note: This option was introduced immediately after the release of version 4.0.3. For versions up to and including 4.0.3 you can only disable this feature at compile time by using the configuration switch --disable-url-fopen-wrapper.

Kontrolliere, ob diese für Dich wichtige Option auf On oder 1 gesetzt ist. Ist sie auf Off oder 0 gesetzt, dann klappt das nämlich nicht, Files per url_fopen wrapper zu öffnen.

Bersi
08.12.2005, 14:55:49
Ja sorry hatte das dann gestern doch noch verstanden und ewig versucht den Wert zu ändern. Bin bei kontent.de und glaub ich kanns nicht irgendwie ändern. Daher hab ich mir was einfallen lassen.

HTML Image Code funktioniert ja also:

<img src="http://bla.png">


Ich dachte mir es daher so dass ich auf meinem Server eine weitere HTML Datei erstelle die beide Grafiken mittels <img> anzeigt. Somit könnte ich doch sicher irgendwie auf die Grafiken zugreifen, weiß nur nicht so recht wie, da ich ja keine PNG Dateien mehr hab sondern eine HTML Datei. Geht das irgendwie die Images aus der HTML Datei zu laden?

Btw danke Meikel für deine Hilfe und tut mir leid dass ich so schwer von Begriff war. Bin halt nicht wirklich schlau auf dem Gebiet der Internetprogrammierung, Server, usw.

meikel (†)
08.12.2005, 17:16:00
Bin bei kontent.de und glaub ich kanns nicht irgendwie ändern.
a. sprich mit dem Provider, ob er die Option für Deinen Virtualhost freischalten kann.
b. falls es möglich ist, dann folgendes: verwende nie als Quelle für Include/Require einen URL. Denn genau deshalb hat der Provider die Option ausgeknipst, weil sowas eine bitterböse Hintertür ist.

HTML Image Code funktioniert ja also:
<img src="http://bla.png">
Das funktioniert nur deshalb, weil der Client das Bild abfordert.

Bin halt nicht wirklich schlau auf dem Gebiet der Internetprogrammierung, Server, usw.
Dagegen hilft Handbuchlesen. Anders habe ich mein Wissen auch nicht erworben.

Bersi
09.12.2005, 19:44:44
a. sprich mit dem Provider, ob er die Option für Deinen Virtualhost freischalten kann.
b. falls es möglich ist, dann folgendes: verwende nie als Quelle für Include/Require einen URL. Denn genau deshalb hat der Provider die Option ausgeknipst, weil sowas eine bitterböse Hintertür ist.


Ich brauch ja nicht fopen sondern imagecreatefrompng. Und ich weiß dass die Option deshalb aus ist und NEIN der Provider ändert es leider nicht.



Das funktioniert nur deshalb, weil der Client das Bild abfordert.


Ist ja egal nur wie kann ich aus einer HTML, die per img-Tag die Bilder anzeigt, in einem PHP-Grafik-Script was auf dem gleichen Server liegt ein PNG erstellen?



Dagegen hilft Handbuchlesen. Anders habe ich mein Wissen auch nicht erworben.


Das mache ich zur Zeit wie wild, aber für mein Problem habe ich nirgends was gefunden. :(

meikel (†)
09.12.2005, 20:57:25
Ich brauch ja nicht fopen sondern imagecreatefrompng. Du brauchst in Deinem Falle die Erlaubnis, url_fopen wrapper zu nutzen.

Und ich weiß dass die Option deshalb aus ist und NEIN der Provider ändert es leider nicht.
a. ich würde den Provider wechseln.
b. cURL Extension verwenden (falls das nicht auch noch kastriert wurde): das Bild ins eigene Filesystem saugen.

Bersi
10.12.2005, 18:06:18
a. ich würde den Provider wechseln.


Wie's scheint haben so ziemlich alle Provider allow_fopen_url auf Off gesetzt. Hab nun schon 3 Provider ausprobiert und nirgends bekomm ich das Script zum laufen. Hab auch mittels ini_get geprüft ob die Option aus ist und sie war es in jedem Fall.

Kennt vielleicht jemand einen kostenlosen Provider (Traffic und Webspace ist egal), der die Option aktiviert hat?