Autor | Zpráva | ||
---|---|---|---|
vasam Profil |
#1 · Zasláno: 19. 5. 2009, 19:06:40
Zdravím,
řeším problém, jak načíst (např. obrázky) ze serveru, kde je použita HTTP autentikace přes .htaccess. Konkrétně mám PHP script, který se odkazuje na obrázky, jenž jsou na zaheslované subdoméně. Nechci, aby uživatel musel zadávat to heslo ručně, ale aby se za něj přihlásilo samo PHP. Předem díky za odpovědi. |
||
Aesir Profil |
#2 · Zasláno: 19. 5. 2009, 21:16:58
|
||
vasam Profil |
#3 · Zasláno: 20. 5. 2009, 09:17:45 · Upravil/a: vasam
Ano, vypadá, že přes CURL by to jít mělo, ale bohužel jsem nenašel nikde žádný funkční příklad pro snadnější pochopení, jak se používá konrétně hodnota CURLOPT_HTTPAUTH.
|
||
Majkl578 Profil |
#4 · Zasláno: 20. 5. 2009, 09:22:54
nesla by autentifikace pomoci http://user:heslo@server.tld/file.ext ?
|
||
vasam Profil |
#5 · Zasláno: 20. 5. 2009, 09:24:43
Majkl578
IE toto bohužel nepodporuje :-( |
||
Majkl578 Profil |
#6 · Zasláno: 20. 5. 2009, 09:27:15
moment, ty to chces dat primo do stranky? to se asi nevyhnes vyzrazeni hesla... to pak muzes tu autentikaci rovnou zrusit
|
||
vasam Profil |
#7 · Zasláno: 20. 5. 2009, 09:32:52
Majkl578
vím - je to jen dočasné řešení Pro klienta dělám web, který je zatím pod autentikací .htaccess (logicky, aby tam nelez nikdo cizí, když to ještě není hotové). K webu dělám redakční systém, který se odkazuje na fotky, které jsou na hlavním webu pod zámkem .htaccess-u. Nechci, aby když si bude klient zkoušet ten RS (zda mu bude vyhovovat), aby na něj při načtení fotek vyběhlo 20 přihlášení na původní web. |
||
Majkl578 Profil |
#8 · Zasláno: 20. 5. 2009, 09:34:43
vasam
neni to nahodou tak, ze pri prvnim prihlaseni se zapamatuje a dale uz neni opetovne zadani jmena a hesla pozadovano az do expirace? zda se mi ze ano |
||
vasam Profil |
#9 · Zasláno: 20. 5. 2009, 09:36:43
Majkl578
ano je, ale když je prvním spuštěním 20 fotek naráz, vyběhne 20 hlášek |
||
Aesir Profil |
#10 · Zasláno: 20. 5. 2009, 09:43:55
vasam:
„ale bohužel jsem nenašel nikde žádný funkční příklad pro snadnější pochopení, jak se používá konrétně hodnota “ Možná nějak takhle? Vycházím z běžného použití cURL, samozřejmě je to potřeba doplnit o další případné atributy, ošetření chyb apod. $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "username:password"); curl_setopt($ch, CURLOPT_URL, "http://example.com/secure"); $response = curl_exec($ch); |
||
vasam Profil |
#11 · Zasláno: 20. 5. 2009, 09:58:34
Zjistil jsem, že je nutné provést CURL na každý obrázek, napadlo mě proto toto:
<?php $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,"http://examle.com/foto/1_1.jpg"); curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); curl_setopt($ch,CURLOPT_USERPWD,"user:pwd"); curl_exec($ch); curl_close($ch); header('Content-Type: image/jpeg'); ?> Bohužel to ale nefunguje, nevím z jakého důvodu... |
||
Aesir Profil |
#12 · Zasláno: 20. 5. 2009, 10:04:47
vasam:
„Bohužel to ale nefunguje, nevím z jakého důvodu...“ Jaká je odpověď serveru na tenhle požadavek (nejlépe kompletní hlavičky)? Nejspíš bude ten požadavek potřeba doplnit o nějaké parametry, zkuste třeba odchytit hlavičky úspěšného požadavku přes prohlížeč a ten pak přesně postavit přes curl. |
||
vasam Profil |
#13 · Zasláno: 20. 5. 2009, 10:12:05
Aesir
vrátí to (asi) zdrojový kód obrázku v "textové" podobě (něco ve smyslu: "˙Ř˙ŕ�JFIF������˙Ű�C�"). Bohužel nevím, jak zjistit vrácené hlavičky (ještě jsem to nepotřeboval) :-). Napadlo mě (na základě "textového" načtení obrázku) ještě toto: $ch=curl_init(); curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); curl_setopt($ch,CURLOPT_URL,"http://examle.com/foto/1_1.jpg"); curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); curl_setopt($ch,CURLOPT_USERPWD,"user:pwd"); $obr=curl_exec($ch); curl_close($ch); header("Content-Type: image/jpeg"); imagejpeg($obr); Toto již nevypíše pro změnu nic (kromě názvu domény, ze které se script spouští). |
||
Aesir Profil |
#14 · Zasláno: 20. 5. 2009, 10:36:24
vasam:
Zkuste ještě nastavit curl_setopt($ch,CURLOPT_BINARYTRANSFER, 1); Fce imagejpeg očekává trochu jiný vstup, takže takhle to nepůjde. Pokud dostanete zpět opravu čistý zdroják toho obrázku, tak by mělo stačit poslat správnou hlavičku a vypsat obsah do prohlížeče. |
||
vasam Profil |
#15 · Zasláno: 20. 5. 2009, 10:42:18
Aesir
Díky moc z radu - takto to již funguje korektně. Musel jsem ještě ale přidat příkazy k bufferování výstupu, kvůli funkčnosti hlavičky. Výsledek tedy vypadá takto: <?php ob_start(); $ch=curl_init(); curl_setopt($ch,CURLOPT_BINARYTRANSFER,TRUE); curl_setopt($ch,CURLOPT_URL,"http://examle.com/foto/1_1.jpg"); curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); curl_setopt($ch,CURLOPT_USERPWD,"user:pwd"); $obr=curl_exec($ch); curl_close($ch); header("Content-Type: image/jpeg"); imagejpeg($obr); ob_end_flush(); ?> |
||
Časová prodleva: 15 let
|
0