[ img ]show_pic.php?pic=498[ /img ] funkt nicht

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
dan kirpan
Mitglied
Beiträge: 5
Registriert: 07.01.2006 17:08

[ img ]show_pic.php?pic=498[ /img ] funkt nicht

Beitrag von dan kirpan »

Hi,

diesmal hab ich etwas länger gesucht, nachdem mein letztes Prob nach wenigen Sekunden gelöst worden ist...

Ich bin dabei, ein Gallery-Tool zu proggen (siehe Signatur).
Mein Problem ist: Die Pfadnamen der Bilder können sich ändern.
Damit aber alle <img src="URL"> korrekt bleiben, werden die Pfadnamen in der db gespeichert.

Wenn jetzt aber ein User ein schönes Bild in der Thumpnail-ansicht in ein Forum posten will, wird das ohne Erfolg bleiben, wenn sich der Dateiname ändert. Und der wird sich ändern, glaubt mir...

Um dies zu umgehen hab ich ein Prog gemacht, das ein image/jpg ausgibt, mit dem Thumpnail oder einer Fehlermeldung, falls das Bild wirklich nicht mehr in der db gespeichert ist (Bilder löschen, den Fall gibts ja schließlich auch noch).

Das ganze Funktioniert ja auch schön, ABER... wenn ich bei phpBB jeniges ausprobieren möchte, dann passiert garnichts, weil:

Code: Alles auswählen

	$patterns[] = "#\[img:$uid\]([^?].*?)\[/img:$uid\]#i";
	$replacements[] = $bbcode_tpl['img'];
ja ein "?" (Fragezeichen) ausgeschlossen ist, und ich ja ein ? brauche um die PIC-ID zu übergeben.

Jetzt dachte ich mir: Cheater mit Adminzugriff: Änder doch einfach den $patterns[] um in

Code: Alles auswählen

$patterns[] = "#\[img:$uid\](.*?)\[/img:$uid\]#i";
Dann wirds schon gehen... dem ist aber nicht so... ist aber auch egal, weil es ja nicht mein Problem ist, dass es in meinem Forum geht, es soll ja in möglichst vielen Foren gehen.

Eine Idee war, alles als Sprungmarke zu übergeben (show_pic.php#498), was auch nicht geht. Dies ließe sich aber umgehen mit einem .php am ende (show_pic.php#498.php). Das .php kann ich ja im Script wieder ausfiltern... Nur ist das Problem, dass die Sprungmarke in keiner mir bekanten Variablen übergeben wird. Im $QUERY_STRING ist er auf jeden Fall nicht...

Kennt jemand eine Lösung auf das Problem?

Oder sogar eine andere, einfachere Version, welche ähnlich arbeitet?
Max
Mitglied
Beiträge: 1051
Registriert: 20.02.2003 22:22

Beitrag von Max »

dann guck dir doch mal die Lösungen, wie sie für das Album von Smartor existieren an....

öffne includes/bbcode.php

suche:

Code: Alles auswählen

// [img]image_url_here[/img] code..
		$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?)\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
ersetze mit:

Code: Alles auswählen

// [img]image_url_here[/img] code.. 
  if (substr_count( $text, $_SERVER["SERVER_NAME"]) && substr_count( $text, "album_pic.php")) 
  { 
    $text = preg_replace("#\[img\]((ht|f)tp://)([^\r\n\t<\"]*?)\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text); 
  } 
  else 
  { 
    $text = preg_replace("#\[img\]((ht|f)tp://)([^ \?&=\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text); 
  } 

Kannst ja abgucken, wie das dort gelöst wurde



Gruß Max
dan kirpan
Mitglied
Beiträge: 5
Registriert: 07.01.2006 17:08

Beitrag von dan kirpan »

Das Albom von Smartor kenne ich nicht...

wenn ich das in der bbcode.php ändere, löst dies das Problem bei einem Forum.

Bei einem anderem phpBB-Forum ist das Problem dann ja immernoch da.

Wie gesagt: es geht nicht darum, dass es in einem Forum geht, sondern es soll in allen Foren gehen.
Max
Mitglied
Beiträge: 1051
Registriert: 20.02.2003 22:22

Beitrag von Max »

dan kirpan hat geschrieben:Bei einem anderem phpBB-Forum ist das Problem dann ja immernoch da.
Genau, bei allen phpBB, die aktueller als Version 2.0.8 sind. Seit dieser Version ist das nämlich ausgeschaltet worden, dass man *.php?pic_id=yxz mit dem IMG-Tags einbinden kann.
Grund - Sicherheit!
Wenn jemand das in seinem phpBB freigibt, ist das seine Entscheidung - ich nutze lediglich den von mit geposteten Code (ist von Smartors Seite) da damit diese Freigabe auf meinen Server und eine *.php beschränkt ist.

Wenn Du das universell für phpBB tauglich haben möchtest, musst Du die Gallery dazu bringen, den Realpfad- und Namen des Bildes aufzuzeigen, so dass es als *.jpg verlinkt werden kann.



Gruß Max
dan kirpan
Mitglied
Beiträge: 5
Registriert: 07.01.2006 17:08

Beitrag von dan kirpan »

Klar könnte ich den direkten Dateinamen rausgeben.

Das Problem ist aber, wenn sich die Dateinamen ändern, was aus Script gründen alle paar h der Fall ist, geht gar nichts mehr.

Ich habe mir schon gedacht, dass der Grund Sicherheit sein könnte. Für mich ist es halt ein Problem, weil auf diese Art und Weise keine Bilder aus meiner Gallery in ein Forum gepostet werden können und länger als ein paar h dort überlebt und danach halt ein missing link ist. Kann man in PHP nicht auf die Sprungmarke zugreifen, weil wenn das ginge, dann wäre mein Problem ja gelöst. Und phpBB hätte eine weitere Sicherheitslücke ;-)

Naja, ansonsten werde ich mich wohl damit abfinden müssen, das phpBB-Foren nicht damit funktionieren. Mal schauen, ob es andere können.

PS: geht auch bei 2.0.7 schon nicht...
123teddy321
Mitglied
Beiträge: 290
Registriert: 29.07.2005 17:27
Kontaktdaten:

Beitrag von 123teddy321 »

du könntest es auch mit .htaccess und mod_rewrite machen, damit kannst du die url manipulieren!

ein beispiel:

Code der datei .htaccess:

Code: Alles auswählen

RewriteEngine on
RewriteRule show_pic,(.*).html$ show_pic.php?pic=$1
Erklärung:

ein link lautet ab nun so: show_pic,PICID.html und wird intern aber weitergeleitet auf show_pic.php?pic=PICID

so kannst du dem phpBB vorgaukeln, dass es eine html-datei wäre und so würde es auch in allen foren und überall anders auch gehen!

Hoffe du hast das verstanden :oops:

MfG
Floio

EDIT: BBcode dann so:

Code: Alles auswählen

[img]http://seite.de/show_pic,PICID.html[/IMG]
Antworten

Zurück zu „Coding & Technik“