Avatar billede tetrix Nybegynder
17. juli 2008 - 16:43 Der er 14 kommentarer og
1 løsning

Åben url m/cookie

Hejsa eksperter!

Jeg søger et PHP script der åbner en url og samtidig er på en cookie.

Det kræves fordi jeg vil styre noget fra min egen hjemmeside. Jeg har selvfølgelig adgang og den cookie der kræves :-)

Nogle forslag?

/tetrix
Avatar billede fbisen Nybegynder
17. juli 2008 - 17:08 #1
Jeg ved ikke helt præcis hvad du mener?

Hvis du vil give en cookie til en browser er koden
<?php
setcookie(Navn, Værdi);
?>

Ønsker du at gå til en anden url, kan du bruge et http refresh tag i <head> sektionen.

<meta http-equiv="refresh" content="3;url=http://webdesign.about.com">
Koden vil sende personen videre efter 3 sekunder til den givne side.

Eller er det noget andet der ønskes?
Avatar billede tetrix Nybegynder
17. juli 2008 - 17:18 #2
fbisen, jeg vil via. php få scriptet til at åbne en url "usynligt".
Avatar billede fbisen Nybegynder
17. juli 2008 - 17:21 #3
PHP kører på serveren - Vil du have serveren til at hente en hjemmeside? Eller er det klienten (browseren) der skal hente en side usynligt?
Avatar billede tetrix Nybegynder
17. juli 2008 - 17:27 #4
Serveren. Det skal fungere lidt ligesom file_get_contents.
Avatar billede tetrix Nybegynder
17. juli 2008 - 17:34 #5
Dog uden at hente nogen source code, men istedet at besøge linket.
Avatar billede fbisen Nybegynder
17. juli 2008 - 17:40 #6
Jeg ved ikke hvordan du vil "besøge" en side, uden at hente koden derfra.

$http = file_get_contents("http://www.eksperten.dk/", 0);
echo($http);

Så henter du sådan set koden, men har også besøgt linket. Du kan lade være med at echo koden ud, og på den måde bliver siden besøgt (af serveren) uden at brugeren ser det.
Avatar billede tetrix Nybegynder
17. juli 2008 - 17:53 #7
Men nummer 2 er at den skal besøge den med en cookie.. altså skal have sat en header ind
Avatar billede fbisen Nybegynder
17. juli 2008 - 18:26 #8
Uden at være helt sikker på det virker, har jeg fundet følgende eksempel, som hentede siden på eksperten fint.
Husk at sæt cookiens navn og værdi.

------------------------------------
<?php

function file_post_contents($url,$headers=false) {
    $url = parse_url($url);

    if (!isset($url['port'])) {
      if ($url['scheme'] == 'http') { $url['port']=80; }
      elseif ($url['scheme'] == 'https') { $url['port']=443; }
    }
    $url['query']=isset($url['query'])?$url['query']:'';

    $url['protocol']=$url['scheme'].'://';
    $eol="\r\n";

    $headers =  "POST ".$url['protocol'].$url['host'].$url['path']." HTTP/1.0".$eol.
                "Host: ".$url['host'].$eol.
                "Referer: ".$url['protocol'].$url['host'].$url['path'].$eol.
                "Content-Type: application/x-www-form-urlencoded".$eol.
                "Content-Length: ".strlen($url['query']).$eol.
                "Cookie: ".'NAVN=VALUE'.$eol.
                $eol.$url['query'];
    $fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 30);
    if($fp) {
      fputs($fp, $headers);
      $result = '';
      while(!feof($fp)) { $result .= fgets($fp, 128); }
      fclose($fp);
      if (!$headers) {
        //removes headers
        $pattern="/^.*\r\n\r\n/s";
        $result=preg_replace($pattern,'',$result);
      }
      return $result;
    }
}

file_post_contents('http://www.eksperten.dk/index.phtml', true);
?>
Avatar billede fbisen Nybegynder
17. juli 2008 - 18:31 #9
Fandt noget bedre :) Meget mere simpelt.

$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

/* Sends an http request to www.google.com
  with additional headers shown above */
$fp = file_get_contents('http://www.google.com', false, $context);
Avatar billede jakobdo Ekspert
17. juli 2008 - 22:10 #10
Du kunne måske også bruge nogle af mine funktioner på denne side: http://www.eksperten.dk/spm/838385
Avatar billede tetrix Nybegynder
20. juli 2008 - 16:31 #11
Jakobdo, kunne du eventuelt lave et tilpasset eksempel?

Fbisen, dit simple script giver en fejl med parameters. Og det øverste virker ikke.


-tetrix
Avatar billede jakobdo Ekspert
20. juli 2008 - 17:17 #12
tetrix: Kunne du evt. prøve først og så kan jeg rette til bagefter ?
Avatar billede tetrix Nybegynder
24. juli 2008 - 17:26 #13
function sendData($method,$host,$url,$data,$cookie=array()){
 
    $out  = $method . " " . $url . " HTTP/1.1\r\n";
    $out .= "Host: $host\r\n";
    if($method == 'POST'){
        $out .= "User-Agent: PHP Script\r\n";
        $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $out .= "Content-Length: ".strlen($data)."\r\n";
    }
    if(is_array($cookie) && count($cookie)>0){
        $out .= "Cookie: ".$cookie['name']."=".$cookie['value']."\r\n";
    }
    $out .= "Connection: close\r\n\r\n";
    if(isset($data) && $method == 'POST'){
        $out .= $data;
    }

    //echo $out . '<hr />';

    $fp = fsockopen($host, 80);
    if($fp) {
        fwrite($fp, $out);
        while (!feof($fp)) {
            $buffer .= fgets($fp, 128);
        }
        fclose($fp);
        return $buffer;
    }else{
        return false;
    }
}
$cookie = "cookie";
$ret = sendData('GET','http://url/','','',$cookie);

Den skal sende GET og det hele skal være i ÉN url

fx. http://www.eksperten.dk/spm/838624?fx=fx
Avatar billede fbisen Nybegynder
23. august 2008 - 09:40 #14
Nogen fremgang?
Avatar billede tetrix Nybegynder
20. december 2008 - 16:43 #15
gammelt, lukker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester