PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HTTP Authentifizierung mit PHP - Probleme mit Internet Explorer


Treize
17.04.2006, 22:18:03
Hallo zusammen,

ich hoffe, Ihr könnt mir auch dieses Mal helfen... habe schon alles mögliche ausprobiert, aber meine Ideen scheitern spätestens im Internet Explorer...

Folgendes Problem:
Ein Mitglied ist auf Server A im per .htaccess geschützten Bereich angemeldet und betrachtet die Seite thumbnails.php. Die dort eingebundenen Thumbnails stammen (aus Speicherplatzgründen) von Server B, ebenfalls aus einem .htaccess geschützten Bereich und werden per

...
echo '<img src="inc/get_m_img.php?galerie='.$galerie.'&img_nr='.$datei.'" alt="foto_blablabla">';
...
//get_m_img.php
<?php
header("Content-type: image/jpeg");
$img = imagecreatefromjpeg("http://user:passwort@members.server_b.de/thumbs/$_GET[galerie]/$_GET[img_nr]");
imagejpeg($img);
?>

angezeigt, funktioniert wunderbar...
Beim Klick auf ein Thumbnail wird öffnet sich die Datei foto_einzel.php auf Server A, wo u.a. das Foto in Originalgröße von Server B mit der gleichen Technik wie bei den Thumbnails eingebunden wird - leider funktioniert diese Technik nur für Bilder bis 500kb, bei größeren Fotos erscheint lediglich der Alternativ-Text des Fotos.

Da die Fotos halt so groß sind, habe ich andere Möglichkeiten ausprobiert, um das Foto zur Anzeige zu bringen, u.a. folgende Weiterleitung, d.h. Klick auf ein Thumbnail ruft eine Datei auf, die u.a. folgende Zeile enthält

header("Location: http://user:passwort@members.server_b.de/foto_einzel.php");

um ohne get_m_img.php die großen Fotos auf Server B direkt einbinden zu können...
...leider scheiterten alle meine Versuche letztendlich daran, daß der Internet Explorer (im Gegensatz zu meinem Firefox) bei 'direkten' Aufrufen mit "http://user:passwort@..." nicht tut - eine Lösung konnte ich im Web trotz intensiver Suche nicht finden...

Habt Ihr noch eine Idee, wie ich dieses Problem lösen kann? Freue mich über jeden Tipp!

Danke und viele Grüße
Sylvia

Serp
18.04.2006, 01:18:59
Hm... Vielleicht einfach mit readfile() statt erst ein Bild erzeugen und das dann ausgeben lassen? Wenn du den Header gesetzt hast müsste das doch eigentlich klappen, oder?

xabbuh
18.04.2006, 09:47:53
<?php
header("Content-type: image/jpeg");
$img = imagecreatefromjpeg("http://user:passwort@members.server_b.de/thumbs/$_GET[galerie]/$_GET[img_nr]");
imagejpeg($img);
?>

Dein Problem an dieser Stelle ist, dass du bei größeren Bildern durch die Verwendung der GD-Funktionen das memory_limit überschreitest. Die Lösung ist wie von serp schon erwähnt die Benutzung von readfile() statt der GD-Funktionen.

...leider scheiterten alle meine Versuche letztendlich daran, daß der Internet Explorer (im Gegensatz zu meinem Firefox) bei 'direkten' Aufrufen mit "http://user:passwort@..." nicht tut - eine Lösung konnte ich im Web trotz intensiver Suche nicht finden...
Da gibt es wohl auch keine Lösung, da der Internet Explorer seit einigen Version (oder Sicherheitspatches ?) nicht mehr die Übergabe von Benutzername und Passwort zur Authentifizierung über den URL unterstützt.

Treize
18.04.2006, 23:07:56
Hallo ihr zwei,

danke für die schnelle Antwort und die zusätzlichen Infos - mit readfile() war mein Problem sofort und auf einfache Weise gelöst...

Viele Grüße
Sylvia

Ducky
24.04.2006, 10:59:29
Hallo.

Eine sehr gute Alternative zu readfile() wäre fpassthru()
welche dir dann auch bandweitenbeschränktes Übertragen ermöglicht.

Schau dir mal die UCN an:
http://de2.php.net/fpassthru
http://de2.php.net/manual/de/printwn/function.fpassthru.php

Tschüü.
/edit:
Das bandweitenbeschränkte Übertragen würde dir folgendes ermöglichen:
Angenommen du hast Bilder die "interlaced" gespeichert sind. Dieser Interlace-Effekt
kommt dann bei entsprechend abgeschwächter Übertragung voll zur Geltung;
eben so wie in den alten Tagen als wir noch alle analog surften.

Ich erinner mich noch sehr gut das ein alter Freund meinerseits auf diesen
Interlace-Effekt voll abgefahren ist (und mir zeitweise die Ohren vollgeschwatzt hatte).