Versio

curl login

Overzicht Reageren

Michael -

Michael -

29/07/2010 19:16:00
Quote Anchor link
Hey,

Ik probeer Curl wat beter te leren kennen, maar tot nu toe gebeurt er nog niet zoveel. Ik wil graag gegevens van een ingelogde pagina afhalen zonder dat ik zelf moet inloggen. Ik heb al meerdere voorbeeldjes gevonden, maar lijken het niet te doen. Ik krijg gewoon een inlog veld of een pagina dat ik niet ben ingelogd.

Ik probeer 't nou even in 1 pagina, maar er gebeurt naar mijn idee niks. Ik heb nog even geen controle op inlog, maar hij zou toch in iedergeval moeten posten? Dus zou ik toch de melding "Er is gepost" moeten zien? Ik zie alleen een lege pagina. Iemand een idee?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$ch
= curl_init();
curl_setopt($ch, CURLOPT_URL, 'login.php');
curl_setopt($ch, CURLOPT_POST, true); // Request method op POST zetten
curl_setopt($ch, CURLOPT_POSTFIELDS, 'naam=naam&ww=ww'); //Dit zijn je postvelden, de naam is die van het html attribuut, en de value spreekt voor zichzelf
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); //Een Cookiejar aanmaken om de sessie cookie in op te slaan
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // geen output naar het scherm printen.
$output = curl_exec($ch); //uitvoeren en output opvangen
curl_close($ch);

print $output;
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
//login.php
if($_SERVER['REQUEST_MEHOD'] == 'POST')
{

    echo 'Er is gepost';
}

else
{
echo '<form method="POST" action="">
<input type="text" name="naam"/><br/>
<input type="text" name="ww"/><br/>
<input type="submit"/>
</form>'
;
}

?>
Gewijzigd op 29/07/2010 19:26:49 door Michael -
 
PHP hulp

PHP hulp

24/05/2012 08:33:21
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
- Mark -

- Mark -

29/07/2010 19:19:26
Quote Anchor link
type foutje? er staat $ouput en je print $output.
 
Michael -

Michael -

29/07/2010 19:27:31
Quote Anchor link
Inderdaad. Gewijzigd, maar pagina & broncode zijn nog steeds leeg.
 
Sam Smekens

Sam Smekens

29/07/2010 19:40:10
Quote Anchor link
kan je dan gegevens van een pagina halen zonder ingelogd te zijn?
 
- Mark -

- Mark -

29/07/2010 19:47:43
Quote Anchor link
login.php is in je normale bestand het hele adres of niet? http:// en weet ik veel waarheen?

Het is al weer een tijd geleden maar ik heb onderstaande regel erbij staan, Ik kon wel niet op elke website inloggen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, 1);

?>
 
Michael -

Michael -

29/07/2010 20:42:03
Quote Anchor link
@Mark: Geen idee of je perse de volledige url moet geven? Ik heb nu maar http://ipadres/login.php van gemaakt. Ik heb ook die followlocation regel toegevoegd, nou krijg ik drie keer het formulier, maar niet dat ie gepost heeft of zo.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<form method="POST" action="">
<input type="text" name="naam"/><br/>
<input type="text" name="ww"/><br/>
<input type="submit"/>
</form><form method="POST" action="">
<input type="text" name="naam"/><br/>
<input type="text" name="ww"/><br/>
<input type="submit"/>
</form><form method="POST" action="">
<input type="text" name="naam"/><br/>
<input type="text" name="ww"/><br/>
<input type="submit"/>
</form>
 
- Mark -

- Mark -

29/07/2010 21:42:30
Quote Anchor link
Sorry het is te lang geleden voor me om dit uit mijn hoofd op te lossen. En ik heb geen tijd om het opnieuw op te zoeken. Hopelijk kan iemand anders je helpen.
 
Michael -

Michael -

30/07/2010 02:04:44
Quote Anchor link
Volgens mij ben ik nou al een heel eind op weg. Ik ben nu in ieder geval ingelogd :-) Met cookie.txt wordt alleen niks gedaan, maar maakt niet uit.

Wat ik nu alleen wel heb is dat inloggen.php en admin.php op mijn scherm worden geopent, maar ik wil alleen een array van admin.php zodat ik hier de juiste gegevens uit kan halen. Iemand een idee?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$ch
= curl_init();
 
//link naar de webpagina die in de form-tag 'action' staat
curl_setopt($ch, CURLOPT_URL, 'http://website.ext/inloggen.php');
 
//value 1: vraag de pagina op
//value 0: download het bestand

curl_setopt ($ch, CURLOPT_POST, 1);
 
//verander deze velden in de input-names die gevraagd worden
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'gebruikersnaam=blabla&wachtwoord=blabla&inloggen=Inloggen');
 
//url naar jou lege cookie.txt file
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 0);
$store = curl_exec ($ch);
 
//link naar het bestand wat je wil downloaden na de login
curl_setopt($ch, CURLOPT_URL, 'http://website.ext/admin.php');
$content = curl_exec ($ch);
curl_close ($ch);
?>


Edit: CURLOPT_RETURNTRANSFER op 1 zetten loste mijn probleem op :-)
Gewijzigd op 31/07/2010 17:52:21 door Michael -
 
Michael -

Michael -

31/07/2010 17:54:06
Quote Anchor link
Om weer een nieuwe topic te voorkomen post ik 't hier.
Ik het script nu mooi werken. Hij logt in op mijn site inloggen.php en haalt daarna een klein gedeelte met data van admin.php. Nou deze test is voltooid wil ik 't gebruiken voor een andere website, maar hierbij werkt 't niet. Ik krijg een foutmelding "Sessieprobleem" dit dus 't enige wat ik van de site terug krijg. Iemand hier een oplossing voor?
 
Niek s

niek s

31/07/2010 18:45:32
Quote Anchor link
Waarschijnlijk faalt je login op de tweede site. Kijk even of het misschien een rechten probleem is (lokaal). Dus of cURL wel cookie files mag aanmaken.

Oh, in de code hierboven (voor zo ver die nog relevant is) zie ik dat je RETURN TRANSFER uit zet, en vervolgens wel het probeerd op te slaan in $store.. ? Klinkt een beetje onlogisch bij mij.

Wat verder nog een handige CURLOPT is, is CURLOPT_VERBOSE. Zet die naar true (of 1), en er komt debugging informatie voorbij :)
 
Michael -

Michael -

31/07/2010 19:02:35
Quote Anchor link
Bovenstaand script krijg ik 2 pagina's te zien. Eerste pagina (inloggen.php) melding "Je bent al ingelogd" en de 2e pagina mijn admin. Dat werkt dus goed (met returntransfer op 0, als ik deze op 1 zet krijg ik niks en moet ik zelf $content gaan echo'en, heb ik nu wel omdat ik alleen data van admin haal) maar wil 't nu voor een andere site gebruiken en lukt 't niet meer.

Ik heb VERBOSE toegevoegd, maar krijg geen informatie daarvan.
Ik heb nu de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$ch
= curl_init();
 
curl_setopt($ch, CURLOPT_URL, 'https://www.website.ext/login.jsp');

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 
//value 1: vraag de pagina op
//value 0: download het bestand

curl_setopt ($ch, CURLOPT_POST, 1);
 
curl_setopt ($ch, CURLOPT_POSTFIELDS, '***');
 
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 30);
//curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_VERBOSE, 1);
$store = curl_exec ($ch);

curl_setopt($ch, CURLOPT_URL, 'https://www2.website.ext/blabla.do');
$content = curl_exec ($ch);

//show information regarding the request
//print_r(curl_getinfo($ch));
//echo curl_errno($ch) . '-' . curl_error($ch);


curl_close ($ch);

print_r($content);
?>

Zover ik weet wordt cookie.txt ook niet gebruikt. Moet ik misschien zelf hier iets inzetten zodat ik 't sessieprobleem niet meer krijg?
 
Michael -

Michael -

05/08/2010 21:19:30
Quote Anchor link
bump
 



Overzicht Reageren

Get Adobe Flash player