Avatar billede mrfunder Nybegynder
20. februar 2007 - 19:50 Der er 8 kommentarer og
1 løsning

Login og kør funktioner.. muligt?

Hej Eksperter..

Jeg søger informationer og viden om et bestemt script jeg vil lave.
Min server kører hver 24 time. et script, som jeg gerne vil have skal logge ind på en ANDEN server.. (det er muligt at logge ind på den anden server via browseren, og derefter hvor session er blevet oprettet kan man browse undersider.) Er dette muligt hvis den anden server bruger $HTTP_REFERER på dets login side?

Målet er at mit script logger ind for mig, og derefter åbner nogle bestemte undersider (som man kun kan åbne hvis man er logget korrekt ind med en session), og derved får jeg min daglige fordel- er dette muligt? og hvordan?

På forhånd tak :)
Avatar billede jakobdo Ekspert
21. februar 2007 - 07:54 #1
Det er muligt ja!
Hvor meget PHP kan du?

Du kan bruge eksemplet på denne side: http://dk.php.net/fsockopen

<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
  echo "$errstr ($errno)<br />\n";
} else {
  $out = "GET / HTTP/1.1\r\n";
  $out .= "Host: www.example.com\r\n";
  $out .= "Connection: Close\r\n\r\n";

  fwrite($fp, $out);
  while (!feof($fp)) {
      echo fgets($fp, 128);
  }
  fclose($fp);
}
?>

Det skal muligvis rettes til POST og ikke GET.
Men det kommer an på hvad din login side kræver.
Avatar billede mrfunder Nybegynder
21. februar 2007 - 08:08 #2
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Værten kendes ikke. in C:\Server\www\nbot.php on line 2

Warning: fsockopen() [function.fsockopen]: unable to connect to www.minside.dk/site.php?page_id=10:80 (Unknown error) in C:\Server\www\nbot.php on line 2
(86243664)
Avatar billede jakobdo Ekspert
21. februar 2007 - 08:27 #3
Så har dit webhotel ikke mulighed for at forbinde ud.
Avatar billede mrfunder Nybegynder
21. februar 2007 - 11:30 #4
HTTP/1.1 302 Object moved Connection: close Date: Wed, 21 Feb 2007 10:29:52 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET Location: /intro/ Content-Length: 128 Content-Type: text/html Set-Cookie: ASPSESSIONIDSQTBQDSR=DHAMFEHBMJMADMAGHAEBBOPC; path=/ Cache-control: private

Så har jeg endelig fået det til at virke, hvordan muligt laver jeg så en post med username xx og password 123 til sitet?
Avatar billede jakobdo Ekspert
21. februar 2007 - 11:42 #5
Prøv at se noget kode jeg tidligere har lavet her:

<?php

$user = "user1";
$pass = "pass2";
$login = "LOGIN";
$host = "www.example.dk";
$port = 80;
$path = "/login.php";

//you will need to setup an array of fields to post with
//then create the post string
$formdata = array ("user" => $user, "pass" => $pass, "login" => $login);
//build the post string
foreach($formdata AS $key => $val)
{
    $poststring .= urlencode($key) . "=" . urlencode($val) . "&";
}

// strip off trailing ampersand
$poststring = substr($poststring, 0, -1);

$fp = fsockopen($host, $port, $errno, $errstr, $timeout = 30);
if(!$fp)
{
    //error tell us
    echo "$errstr ($errno)<br />\n";
}
else
{
    //send the server request
    fputs($fp, "POST $path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($fp, "Content-length: ".strlen($poststring)."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $poststring . "\r\n\r\n");
   
    //loop through the response from the server
    while(!feof($fp))
    {
        $output .= fgets($fp, 4096);
    }
    //close fp - we are done with it
    fclose($fp);
}

if (preg_match('/PHPSESSID=(.+?);/', $output, $regs))
{
    $phpsessid = $regs[1];
}

echo "Session: " . $phpsessid . "\n";
flush();

$fp = fsockopen($host, $port, $errno, $errstr, $timeout = 30);
if (!$fp)
{
    //error tell us
    echo "$errstr ($errno)<br />\n";
}
else
{
    fputs($fp, "GET $path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    fputs($fp, "Cookie: PHPSESSID=$phpsessid\r\n");
    fputs($fp, "Connection: Close\r\n\r\n");
   
    //loop through the response from the server
    while (!feof($fp))
    {
        $output .= fgets($fp, 128);
    }
    fclose($fp);
}

echo '<pre>';
echo $output;
echo '</pre>';

?>
Avatar billede mrfunder Nybegynder
25. februar 2007 - 23:13 #6
virker fint, vær venlig at smide et svar :-)
Avatar billede jakobdo Ekspert
26. februar 2007 - 08:03 #7
Svar!
Avatar billede mrfunder Nybegynder
26. februar 2007 - 13:01 #8
supær ;-)
Avatar billede jakobdo Ekspert
26. februar 2007 - 13:10 #9
Takker for point.
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