Oprettet tir. d. 19. oktober 2010 kl. 18:56:11

SimonBStoevring
SimonBStoevring (5.185 point. Point ude: 105)
snuzzer.dk/

Log ind med cURL

Hej,

På skolen har vi en hjemmeside, som vi kan logge ind på. Fra denne side vil jeg gerne hente nogle billeder og til dette har jeg lavet et PHP-script.

Det er mig dog et problem, hvordan jeg får logget ind og jeg er ikke engang sikker på, om dette kan lade sig gøre. Jeg har dog læst mig frem til på nettet, at det burde kunne lade sig gøre at logge ind på en side med cURL, det har bare ikke haft held med. Jeg har prøvet alverdens eksempler, jeg har kunnet finde på nettet, men ingen af dem har jeg altså kunne få til at virke.

Det drejer sig om en log-ind boks hvor til der er to felter: brugernavn og kodeord. Disse hedder henholdsvis "m$Content$username2" og "m$Content$password2" på siden.
Når jeg er logget ind har jeg brug for at navigere til en underside - og stadig være logget ind.

Er dette muligt og kunne nogen måske guide mig i retning af en løsning?

Med venlig hilsen
Simon B. Støvring

Skrevet tir. d. 19. oktober 2010 kl. 21:03:29| #1

Hej Simon,

Det er muligt med curl, med smid din kode op, samt den formular du skal logge ind igennem. Jeg benytter det selv til at hente priser fra andre webshops på http://www.parfume-priser.dk

Dbh. Casper

Skrevet tir. d. 19. oktober 2010 kl. 21:42:30| #2

Hej Casper,

Det lyder rigtig godt. Mit script til at hente billederne er ikke helt færdigt endnu. Det skal lige flettes sammen med et ældre script, jeg lavede engang. Dette har jeg ikke gjort endnu, da jeg ikke rigtig har kunnet gribe det an, fordi "scriptet ikke har været logget ind", når det er blevet kørt. Der skulle dog være nok at arbejde med og det at hente billederne burde ikke være et problem.

Formularen, jeg ønsker at logge ind i, ligger her.
https://www.lectio.dk/ (...)

Jeg ønsker at hente billedet som vises ved siden af navnet ("Eleven Simon Binderup Støvring") i venstre side af skærmen. Dette gøres for samtlige elever på skolen. Lige nu vil du blot se et gråt/hvidt "dummybillede", da du ikke er logget ind.
https://www.lectio.dk/ (...)

Scriptet kan ses på
http://snuzzer.dk/ (...)

Alt det gør lige nu er at hente elevernes navn samt elevid. Derudover "lader det som om", at det henter adressen på elevens billede. Det er bevidst, at den blot henter noget af adressen på dummybilledet lige nu. Det var blot for at teste, om jeg kunne hente alle elever fra A-Å på én gang, eller om det ville være for ressourcekrævende.
Grundstenen er lagt og jeg vurderer, at når først jeg er logget ind, vil det være simpelt at hente billedernes adresse og gemme dem.

Skrevet ons. d. 20. oktober 2010 kl. 19:58:01| #3


Skrevet ons. d. 20. oktober 2010 kl. 20:48:21| #4

splazz, netop den gennemgang har jeg faktisk læst og forsøgt mig med, desværre uden held. Måske jeg skulle prøve igen. Jeg håber lidt, at Casper vil komme med et udkast eller skrive et par ord om, hvordan jeg kan gribe mit problem an.
Men du skal have mange tak for hjælpen.

Skrevet tor. d. 21. oktober 2010 kl. 11:25:38| #5

Hej,

Jeg har forsøgt med guiden, splazz henviste til.

http://snuzzer.dk/ (...)

Det er mit resultat og for mig ligner det ikke, at den er kommet med fejl. Har jeg ret i det?

http://snuzzer.dk/ (...)

Ovenstående er koden bag i.php.

Hvis det er rigtigt, det jeg har gjort, kan nogen så fortælle mig, hvordan jeg med cURL går til en anden side, når jeg er logget ind og henter kildekoden fra denne side, så jeg kan gemme billederne til serveren?

Skrevet tor. d. 21. oktober 2010 kl. 19:27:00| #6

Hej igen,

Jeg har forsøgt at logge ind, gå videre til en underside og udskrive denne sides kildekode, som den vil se ud, når man er logget ind. Desværre har jeg ikke haft held med dette.

Mit forsøg kan ses på nedenstående link.
http://snuzzer.dk/ (...)

Jeg har lagt kildekoden op her.
http://snuzzer.dk/ (...)

Det er ikke denne kildekode, jeg burde få, hvis jeg var logget ind. I så fald burde der naturligvis ikke stå "Log ind" og den burde heller ikke forsøge at vise '/lectio/img/defaultfoto_small.jpg' men derimod elevens billede.

Jeg har oprettet cookie.txt i samme mappe, som scriptet ligger i og givet denne fil rettighederne 777.

Er der nogen, der har tid til at kigge på min kildekode og sige mig, hvad jeg kan have gjort forkert?

Skrevet lør. d. 23. oktober 2010 kl. 12:04:01| #7

Hej,

Med hjælp fra Casper, er det lykkedes mig at komme lidt nærmere et færdigt resultat. Scriptet virker dog ikke helt endnu - den er stadig ikke logget ind, men jeg tror, at dette skyldes, at scriptet kun gemmer to ud af seks cookies i cookie.txt. Logger jeg ind via min browser, gemmes der seks cookies på computeren, men scriptet gemmer altså kun seks.

Er der nogen, der har et bud på, hvorfor scriptet ikke gemmer alle? Eller om det er et andet sted, der er noget i vejen?

$curl_connection = curl_init();    // establish connection

// cURL options
curl_setopt($curl_connection, CURLOPT_URL, 'https://www.lectio.dk/ (...));
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);    // does not trigger error when no SSL certificate
curl_setopt($curl_connection, CURLOPT_POST, 1);

// data to submit to remote form
$post_data['m$Content$username2'] = '2008zsbs';    //username removed
$post_data['m$Content$password2'] = 'medion1113';    // password removed

// format data to string (eg. key1=value1&key2=value2)
foreach($post_data as $key => $value) {
    $post_items[] = $key . '=' . $value;
}
$post_string = implode('&', $post_items);

// cURL options
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);    // post $post_string
curl_setopt($curl_connection, CURLOPT_COOKIEFILE, realpath('cookie.txt'));    // save cookie in cookie.txt
curl_setopt($curl_connection, CURLOPT_COOKIEJAR, realpath('cookie.txt'));    // save cookie in cookie.txt
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, true);    // follow directions from remote sites header
curl_setopt($curl_connection, CURLOPT_HEADER, true);
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);    // timeout 30 sec
curl_setopt($curl_connection, CURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');    // simulated browser
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);    // force cURL to not display the output but return as a string
curl_exec($curl_connection);
curl_close($curl_connection);

// print_r(curl_getinfo($curl_connection)); // print error check
// echo '<hr />'.curl_errno($curl_connection).'-'.curl_error($curl_connection); // print error numbers

// $result = curl_exec($curl_connection);    // execute
// curl_close($curl_connection);    // close connection

// go to other page
$curl_connection = curl_init();
curl_setopt($curl_connection, CURLOPT_URL, 'https://www.lectio.dk/ (...));
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);    // does not trigger error when no SSL certificate
curl_setopt($curl_connection, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
curl_setopt($curl_connection, CURLOPT_COOKIEJAR, realpath('cookie.txt'));
curl_setopt($curl_connection, CURLOPT_HEADER, true);
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);    // timeout 30 sec
curl_setopt($curl_connection, CURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');    // simulated browser
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);    // force cURL to not display the output but return as a string
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);    // follow directions from remote sites header

$result = curl_exec($curl_connection);    // execute
curl_close($curl_connection);    // close connection
echo $result;    // print source

Skrevet lør. d. 23. oktober 2010 kl. 12:13:32| #8

Hov, jeg kom til at lægge brugernavn og kodeord ved. Koden er nu rettet.

Skrevet søn. d. 24. oktober 2010 kl. 19:30:01| #9

Jeg er stadig på bar bund.

Kan det have noget med opbygningen af sidens formular at gøre?

Skrevet søn. d. 24. oktober 2010 kl. 19:44:51| #10

Altså om noget af dette er af betydning.

<form name="aspnetForm" method="post" action="SkemaNy.aspx?type=elev&amp;elevid=1628118635" onsubmit="java script:return WebForm_OnSubmit();" onkeypress="java script:return WebForm_FireDefaultButton(event, 's_m_defaultformbtn')" id="aspnetForm" autocomplete="off">

Skrevet man. d. 25. oktober 2010 kl. 21:30:13| #11

Det lader til, at nogle cookies - eller i hvert fald cookien 'isloggedin3' bliver sat gennem JavaScript.

Kan jeg gøre noget mod dette?

Skrevet ons. d. 10. november 2010 kl. 14:14:23| #12


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Brugerliste med link til profil

Oprettet den 26. maj 2012 kl. 14.29
sayn giver 30 point for svar | Giv et svar »

php curl driller

Oprettet den 26. maj 2012 kl. 08.31
PHPnQrd giver 200 point for svar | Giv et svar »

Array i array

Oprettet den 25. maj 2012 kl. 08.32
sebster giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger