Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Bild anzeigen je nach datei

Layoutprobleme? - Styleswitcher!

Antwort
 
Themen-Optionen
Alt 30.12.2005, 19:12 Nach oben    #1
Garnele
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard Bild anzeigen je nach datei

Hi Leute

Ich habe ein Problem: In meinem forum möchte ich gerne Bilde direkt von einer PHP datei einbinden, also zb. so:

Zitat:
[img]http://www.meinedomain.de/album_pic.php?pic_id=12[/imq]
Das Q ist absichtlich damit kein Link erzeugt wird.

Die Forensoftware wandelt dies um in

HTML-Code:
<img src="http://www.meinedomain.de/album_pic.php?pic_id=12" />
Soweit so klar, aber ich möchte den Usern beides Anbieten: Entweder das direktverlinken des bildes, oder der "Umweg" über die PHP Datei die auch die Views zählt. Deshalb habe ich folgendes Eingebaut:

PHP-Code:
if ($_SERVER['REQUEST_URI'] == "/album_pic.php?pic_id=$pic_id")
{
  
$pic_out ALBUM_UPLOAD_PATH  $thispic['pic_filename'];
echo 
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd\"> <img src=\"/$pic_out\" border=\"0\" alt=\"Sorry, error\" vspace=\"1\" />";
}
else
{
  switch ( 
$pic_filetype )
  {
      case 
'.png':
          
header('Content-type: image/png');
          break;
      case 
'.gif':
          
header('Content-type: image/gif');
          break;
      case 
'.jpg':
          
header('Content-type: image/jpeg');
          break;
      default:
          die(
'The filename data in the DB was corrupted');
  }
 
readfile(ALBUM_UPLOAD_PATH  $thispic['pic_filename']);

Mit der if $_SERVER['REQUEST_URI'] möchte ich prüfen ob direkt auf das Bild zugegriffen wird oder über die Forumsdatei (in meinem Fall die viewtopic.php). Anschliessend wird entweder bei direktzugriff Ein HTML Code ausgegeben damit man den Namen des Bildes bzw. seine URL kopieren kann oder die Datei wird direkt ausgelesen (für die viewtopic.php). Mit der HTML ausgabe beim direktzugriff klappt das Prima aber mit der direktauslesung bei der viewtopic.php klappts nicht. Habe ich da einen Fehler drinnen? Wenn ja, wo? Oder muss ich die Sache ganz anders angehen?

Alle oben angegebenen Variablen sind natürlich definiert.


LG
Garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.12.2005, 19:56 Nach oben    #2
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 3.812
Standard

Beim "Direktverlinken" wird einfach der URL angegeben, ja? Aso ohne album_pic.php?pic_id=... .. stimmt das?

Du gelangst aber schon die den IF-Zweig, ja?
Wenn nicht, verwende doch einfach mal array_key_exists(key, array), um auf pic_id in $_GET zu überprüfen.

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.12.2005, 20:08 Nach oben    #3
Garnele
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard

Hi Ben

Nein, es wird auch die volle URL angegeben, also
Code:
http://www.meinedomain.de/album_pic.php?pic_id=12
Deshalb geht deine Idee leider nicht. Der Witz ist es wird auf dei gleiche URL zugegriffen, nur einmal direkt und einmal über die viewtopic.php. Mir kam gerade der Gedanke etwas mit dem Refferer zu machen, ginge so etwas?

LG
Garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.12.2005, 20:13 Nach oben    #4
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 3.812
Standard

Bzgl. der Arbeit mit dem Referer .. (vielleicht bekannt

12.4. Für welche Zwecke ist der Referer zu gebrauchen?
http://www.php-faq.de/q/q-http-referer-nutzen.html

Ich weiß dann auch nicht wo das Problem liegt. Sorry.
Vielleicht wer anders.

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.12.2005, 20:33 Nach oben    #5
_root
.
 
Registriert seit: 21.09.2005
Ort: CH-JP
Beiträge: 47
Standard

PHP-Code:
$url parse_url($_SERVER['HTTP_REFERER']); 
Ganz einfach so feststellen woher der Benützer kommt.

Sollte der Zugriff nicht von deinem ($url['host']) sein html anzeigen.
Sollte der Aufruf nicht von ($url['path'] == /viewtopic.php, ...) kommen html anzeiegen.

Verständlich genug, ich denke so sollte es funktionieren. Fall es noch Probleme gibt einfach Posten.
_root ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.12.2005, 20:41 Nach oben    #6
Lars
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Der Referer kann im Browser meistens ausgeschaltet werden.
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.12.2005, 21:16 Nach oben    #7
_root
.
 
Registriert seit: 21.09.2005
Ort: CH-JP
Beiträge: 47
Standard

Zitat:
Zitat von Lars
Der Referer kann im Browser meistens ausgeschaltet werden.
Java, und javaScript auch trotzdem ist es für viele Seiten eine Bedingung. Nur mit Php sehe ich keine bessere Lösung, etv. wäre .htaccess noch ne möglichkeit.
_root ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.12.2005, 22:43 Nach oben    #8
Lars
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Sessions. Aktuelle Seite in ne Session schreiben und fertig :]
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.12.2005, 11:18 Nach oben    #9
Garnele
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard

Hi Lars

Du hast mich auf die lösende Idee gebracht: Ich definiere in der viewtopic.php eine Session die anzeigt dass der User die viewtopic lädt, anschliesend prüfe ich in der pic lade Datei ob diese Session vorhanden ist, wenn ja wird das File ausgelsen und die session gelöscht, andernfalls wird die HTML ausgabe gestartet. Denkbar einfach.

LG
Garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.12.2005, 11:35 Nach oben    #10
Jann Hendrik
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 1.542
Standard

die session zu löschen kann problematisch werden, dann nämlich, wenn du noch nicht alle Bilder geladen hast und nach dem Anzeigen des ersten Bildes die session löscht und die anderen dann ohne Session darstehen...

Es sei denn du willst def. nur ein Bild anzeigen.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

die aktuelle Umfrage: Wo kauft ihr eure Literatur?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.12.2005, 12:34 Nach oben    #11
Garnele
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard

Hi

Stimmt, habs etwas verändert und jetzt funzts Problemlos:

bbcode.php:
PHP-Code:
// [img]image_url_here[/img] code..
 // Original code: $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);
    // [img]image_url_here[/img] code..
  
if (substr_count$text$_SERVER["SERVER_NAME"]) && substr_count$text"album_pic.php"))
  {
    
//
    // Define my own little Session System with site indication (Robin 31.12.2005)
    //
    
session_start();
    
$_SESSION['you_are_here'] = "viewtopic";
    
$_SESSION['count_pics'] ++;
$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);
  } 
album_pic.php:
PHP-Code:
if ($_SESSION['you_are_here'] != "viewtopic")
{
  
$pic_out ALBUM_UPLOAD_PATH  $thispic['pic_filename'];
echo 
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd\"> <img src=\"/$pic_out\" border=\"0\" alt=\"Sorry, error\" vspace=\"1\" />";
}
else if (
$_SESSION['you_are_here'] == "viewtopic" and $_SESSION['count_pics'] != 0)
{
  switch ( 
$pic_filetype )
  {
      case 
'.png':
          
header('Content-type: image/png');
          break;
      case 
'.gif':
          
header('Content-type: image/gif');
          break;
      case 
'.jpg':
          
header('Content-type: image/jpeg');
          break;
      default:
          die(
'The filename data in the DB was corrupted');
  }
 
//
 // Use my own little Session System with site indication (Robin 31.12.2005)
 //
 //session_destroy();
 
if ($_SESSION['count_pics'] ==1)
 {
   unset(
$_SESSION['you_are_here']);
 }
 
$_SESSION['count_pics'] -1;
 
 
 
readfile(ALBUM_UPLOAD_PATH  $thispic['pic_filename']);

LG
Garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 31.12.2005, 12:59 Nach oben    #12
Lars
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Ein Hoch auf Sessions! :]
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.01.2006, 14:39 Nach oben    #14
Garnele
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard

Hi

Danke für euer Lob. Wenn ich denke dass ich vor einem Jahr noch nicht einmal wusste was PHP is

LG
Garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

« Links zum Thema PHP | Exception::getFile() Problem »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
prüfen, ob eine Datei ein Bild ist Jann Hendrik PHP-Programmierung 22 21.09.2007 10:16
Bild Komponent - Bild zurecht schneiden Robinson Desktop-Applikationen und Grafik 5 31.12.2005 14:53
[PHP] Aktuell gespielten Titel von XMMS auf einer Webseite in einer Grafik anzeigen Corvin Tutorials 0 28.11.2005 17:26
Bild anzeigen und verschieben Spaceangel Desktop-Applikationen und Grafik 3 23.11.2005 12:15
Bild seperat laden und anzeigen phate Desktop-Applikationen und Grafik 0 31.05.2005 10:44


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:37 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.6.7, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44