/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Kan man sætte REFERER med PHP?
Fra : Burns


Dato : 03-06-04 23:51

Jeg har tidligere haft direkte netradio links til Sky Radio og Radio2 - de
startede fint op i min mediaplayer. Nu ser det dog ud til, at dette ikke
længere kan lade sig gøre og umiddelbart vil jeg tro (uden at vide det), at
det kunne være fordi de kontrollere hvilken side man kommer fra - hvis man
kommer direkte fra, får man ikke lov at afspille.

Kan man med PHP sætte sin HTTP REFERER, for så kan jeg da hurtigt prøve at
se efter om det er dét der er problemet?



 
 
Lasse Hansen (04-06-2004)
Kommentar
Fra : Lasse Hansen


Dato : 04-06-04 00:50


> Kan man med PHP sætte sin HTTP REFERER, for så kan jeg da hurtigt prøve at
> se efter om det er dét der er problemet?


Jeg lavede dette script til try2hack:
<?php
$host = "www.try2hack.nl";
#Først domænenavnet vi vil åbne en forbindelse til.
#Vi undlader http, da forbindelsen er sat til TCP som standard.
#Samt fortæller vi at http kører på port 80, som vi definerer i vores
socket.

$port = 80;
#Her definerer vi portnummeret for den service vi nu vil forbinde til.
#På www.iana.org/assignments/port-numbers findes en daglig opdateret
oversigt.

$path = "/blablabla";
#Til sidst siden vi vil ind på.
#Hvis vi bare ønsker at tilgå domænet's forside nøjes vi med at skrive "/".

$connection = fsockopen ($host, $port, $errno, $errstr, 30);
#Vores forbindelse erklærer vi til variablen kaldet $connection. På den måde
slipper vi igen for at skrive flere gange.
#Endvidere får vi en sand eller falsk streng, om hvorvidt forbindelsen er
åben.

if (!$connection) {
print $errstr ."(".$errno.") <br>\n";
#Vi tjekker om forbindelsen ikke blev oprettet og derved falsk.
#Hvis dette er tilfældet informeres klienten herom, med en given
fejlmelding.

} else {
#Hvis forbindelsen ikke var falsk, ja så må den jo være sand. Og derfor
samler vi en streng vi sender videre til serveren.

$request = "GET ".$path." HTTP/1.0\r\n";
#Først vores definerede $path, som er siden vi spørger om tilladelse til
at se, gennem HTTP/1.0 protokollen

$request .= "User-Agent: Mozilla (Compatible; MSIE 7.66; Linux)\r\n";
#Dernæst fortæller vi hvilken klient vi bruger til at forbinde med.
#Det viser sig sørme at være MicroSoft Internet Explorer 7.66, og at vi
sidder med en linuxbuild version.

$request .= "Referer: http://www.microsoft.com/ms.htm\r\n";
#Referencen skulle også være iorden, og derfor fortæller vi at Mr. Gates
henviste os.

$request .= "Host: ".$host."\r\n";
#og for at få det hele på plads så vi ikke er gået forkert, fortæller vi
browseren at vi var gået rigtig.

$request .= "Connection: Close\r\n\r\n";
#Så lukkes forbindelsen af headers da vi har fået hvad vi skal have, og
mangler kun serverens svar på vores forespørgsel.


fputs ($connection,$request);
#Vi smider nu vores samlede forespørgsel afsted med funktionen fputs.

while (!feof($connection)) {
print fgets ($connection,128);
#Outputtet vi fik tilbage på forespøgslen sendes nu ud til os, i
læsbart format.
}
fclose ($connection);
#Da vi er færdige med at hente fra serveren, lukker vi socket
forbindelsen igen.
}
?>

Håber at dette kan hjælpe dig.

--
Lasse Hansen
- www.o-piz.dk; fordi jeg kan.
"One will be enlightened, one will face their destiny... one will see, one
will be blinded..." - Jedi Mitth'raw'nurida



Burns (04-06-2004)
Kommentar
Fra : Burns


Dato : 04-06-04 09:15

> Håber at dette kan hjælpe dig.

Det virker fint, tak. Jeg opdagede dog hurtigt efter jeg havde sendt dette
indlæg, at der må være noget galt med min mediaplayer istedet, for det
virkede OK på en anden maskine (jeg kan ikke forklare hvorfor jeg ikke
testede dette først!). Men dette eksempel er rart at have, for jeg har
tidligere tænkt på det i andre sammenhæng.



Jonas Koch Bentzen (04-06-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 04-06-04 23:33

Lasse Hansen wrote:
>
> $request = "GET ".$path." HTTP/1.0\r\n";

Nok nemmere at bruge cURL (http://dk.php.net/curl) til den slags. Også
dér kan man sætte den henvisende side (se CURLOPT_REFERER på
http://dk.php.net/manual/en/function.curl-setopt.php).

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste