mboost-dp1

PHP - Hent indhold fra side med domæne validering


Gå til bund
Gravatar #1 - Fifan
14. mar. 2012 17:27
Hey,

Er der nongen som ved om det er muligt at hente indhold fra en anden side via PHP funktionen: file_get_contents når den pågældene side som jeg skal hente indholdet fra kræver brugernavn/adgangskode.

Siden som jeg skal hente indhold fra ligger på en Windows server som kræver domæne validering.

Eksempel:

brugernavn: domæne\brugernavn
adgangskode: *****
Gravatar #2 - arne_v
14. mar. 2012 17:43
#1

Så vidt jeg ved skal du fra PHP bruge curl for at kunne bruge NTLM authentication, hvilket jeg formoder er hvad du har brug for.
Gravatar #3 - plazm
14. mar. 2012 17:46
Hvis det er HTTP Auth
Tada:
http://www.electrictoolbox.com/php-curl-sending-us...

Ellers er det ikke så svært at sende post variables også
Gravatar #4 - Fifan
14. mar. 2012 18:22
#3 Når jeg prøver HTTP Auth koden fra dit link får jeg følgende tekst på min side: Object moved to here.

Kan jeg godt sende post variabel når login formen ser sådan her ud:

http://peecee.dk/uploads/032012/login.png
Gravatar #5 - arne_v
14. mar. 2012 18:36
#4

Jeg tror altså at du skal bruge NTLM auth og ikke HTTP auth.
Gravatar #6 - Fifan
14. mar. 2012 19:23
#5 virker det ikke kun til Linux?

Det er lidt undeligt at jeg ikke får adgang via php når autmatisk bliver logget på hvis jeg manuel går ind på den pågældene side.

Jeg er allerede logget på ad'et
Gravatar #7 - arne_v
14. mar. 2012 19:35
Fifan (6) skrev:
virker det ikke kun til Linux?


????

http://en.wikipedia.org/wiki/NTLM
Gravatar #8 - plazm
14. mar. 2012 19:40
Hov for pokker, du skal self. bruge
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
evt.
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); // denne skulle gerne selv gennemskue den rigtige løsning, men hvis du er sikker på at det er NTLM, så skulle første være fin
Gravatar #9 - plazm
14. mar. 2012 19:43
"Object moved to here." lyder som et redirect, kig på $info variablen om den ikke indeholder en ny url du skal følge
Gravatar #10 - Fifan
14. mar. 2012 20:10
#9

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM); giver:

401 - Unauthorized: Access is denied due to invalid credentials.

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); giver samme resultat som CURLAUTH_BASIC i linket.

Jeg får ingen oplysninger i arrayet.

Gravatar #11 - reefermadness  
14. mar. 2012 20:26
Hvis du er i tvivl om authentication typen kan du evt. kigge på response headers fra serveren (evt. med firebug, eller andet) f.eks:

WWW-Authenticate Basic realm="hemmelig side"

(egentlig en ret sjov fejl med linket ovenfor :)
Gravatar #12 - Fifan
14. mar. 2012 20:41
#11 Mener du sådan her? I så fald giver det mig ikke rigtigt noget.

<?php
header('WWW-Authenticate: Basic realm="hemmelig side"');

$url = "http://url.dk";
$username = "brugernavn";
$password = "****";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
echo $output;
echo $info;
?>
Gravatar #13 - Fifan
14. mar. 2012 20:50
Jeg får desuden intet ud af at jeg tilføjer linien 'object not found' til url'en

/default.aspx?AspxAutoDetectCookieSupport=1
Gravatar #14 - Daniel-Dane
14. mar. 2012 21:01
Fifan (12) skrev:
#11 Mener du sådan her? I så fald giver det mig ikke rigtigt noget.


http://peecee.dk/uploads/032012/headers.png
Gravatar #15 - reefermadness  
14. mar. 2012 21:01
#12 - Nej jeg mener at du skal kigge på svaret når du f.eks taster urlen i din browser .. Det kan du gøre med de fleste developer tools til diverse browsere.

mere præcis er det WWW-Authenticate headeren du skal kigge efter.
Gravatar #16 - reefermadness  
14. mar. 2012 21:17
Har du prøvet bare at bruge file_get_contents?


echo file_get_contents('http://'. urlencode($domain.'\\'.$user).
':'.$password.'@server.dk/hemmeligt');

Virker fint hos mig, godt nok mod en Basic auth hvor brugernavnet har et backslash..
Gravatar #17 - reefermadness  
14. mar. 2012 21:30
Ved nærmere eftertanke vil ovenstående nok ikke virke, men som andre siger kunne object moved indikere at der er tale om et header redirect, som curl måske ikke er sat op til at følge ?
Gravatar #18 - Fifan
14. mar. 2012 21:41
Okay, jeg får følgende header:
http://peecee.dk/uploads/032012/dump.png

Gravatar #19 - plazm
14. mar. 2012 21:52
Jeg har fundet noget kode på php.net som jeg har modificeret lidt, prøv om det ikke virker
http://pastebin.com/eHNEnS75

du skal så bare kalde get_url med de første 3 parametre
Gravatar #20 - plazm
14. mar. 2012 22:06
hov, det kan være man burde sende auth info videre til de recursive kald hvis det ikke virker, er ikk helt sikker på hvordan den håndterer et login :)
Gravatar #21 - Fifan
15. mar. 2012 17:01
Jeg har fået det til at virke nu ved hjælp af NTLM Auth Modulet til Apache samt Curl koden fra @plazm.

Tak for hjælpen.

Gravatar #22 - plazm
16. mar. 2012 19:40
Super :)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login