Vinnaren i pepparkakshustävlingen!
2020-12-05, 08:38
  #1
Medlem
Hej!
Har en webbplats som jag vill bevaka. Och för att kunna det så behöver jag lite träning, så har byggt ett likadant inloggningsystem, och ska nu från en annan server ta mig in på den sidan och bevaka. Just nu försöker jag bara utföra själva inloggningen med curl. Men går så där. Jag lyckas ladda sidan i webläsaren, men sen händer inget mer, den loggar inte in. Vad gör jag för fel? Koden med curl har jag skrivet av från ett YT-klipp.

Kod:
<form action="" method="post">
<
input type="email" class="form-control" name="email_signin" id="email_signin" />
<
input type="password" class="form-control" name="password_signin" id="password_signin" />

<
button type="submit"  name="login" id="sign_in">Logga in</button>
</
form


Kod:
<?
$data 
= array(
    
"email_signin" => "olle@olle.se",
    
"password_signin" => "OLLE",
    
"form" => "submit"
);

$ch curl_init("http://www.URL/index.php");
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
curl_setopt($chCURLOPT_POSTtrue);
curl_setopt($chCURLOPT_POSTFIELDS$data);
curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt');
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);

$result curl_exec($ch);
curl_close($ch);

echo 
$result;

?>
Citera
2020-12-05, 08:56
  #2
Medlem
när du loggar in på originalsidan, har du kollat datan som skickas då så det ens stämmer överens?
Citera
2020-12-05, 09:24
  #3
Medlem
Citat:
Ursprungligen postat av ElSheddai
när du loggar in på originalsidan, har du kollat datan som skickas då så det ens stämmer överens?

Tack för ditt svar, jag är inte riktigt med på hur du menar. <form> Här uppe är från originalsidan.
Och från koden med curl är från andra serven. Och inloggningsuppgifterna i curlkoden är rätt. Skriver jag dom på originalsidan så kommer jag till en online.php. Men dit kommer jag inte med curlkoden...

Inloggningsystemet, har ändrat lite:
https://codeshack.io/secure-login-system-php-mysql/

Curl:
https://www.youtube.com/watch?v=KTcNCktDQuQ
__________________
Senast redigerad av matematikern88 2020-12-05 kl. 09:27.
Citera
2020-12-05, 09:53
  #4
Medlem
Citat:
Ursprungligen postat av matematikern88
jag är inte riktigt med på hur du menar.

Att där mest troligen är fler viktiga variabler som du behöver skicka med i $data för att den ska logga in korrekt, när du loggar in som vanligt från originalsidan kan du se hur deras POST-data ser ut, Firefox t.ex. har en Nätverksövervakare där du kan se alla GET/POST under Verktyg -> Webbutvecklare -> Nätverk
Citera
2020-12-05, 10:35
  #5
Medlem
Citat:
Ursprungligen postat av ElSheddai
Att där mest troligen är fler viktiga variabler som du behöver skicka med i $data för att den ska logga in korrekt, när du loggar in som vanligt från originalsidan kan du se hur deras POST-data ser ut, Firefox t.ex. har en Nätverksövervakare där du kan se alla GET/POST under Verktyg -> Webbutvecklare -> Nätverk

Gör som han i YT-klippet, för då gör han det du pratar om tror jag.
Och då får jag ut detta i Firefox:

email_signin "ffsdhd@drsh.se"
password_signin "sdfh"
login ""



edit, du var rätt, hade skrivet fel. "login" => "submit"
Nu kom jag in =)
Så underbart! Tack!

Är du duktig i nästa del också? Att plocka ut koden och spara och se om den har ändrats till nästa koll? som den ska göra på tid intervall.



Nu vill jag att den ska läsa om $result; var 30sekund, utan att gå tillbaka till index.php för då kommer den här sidan att utföra login igen. Och vill inte att alla mina 2000 inloggningar ska sparas hos dom, ifall dom loggar inloggningarna. Nu är jag ju inne och har min kaka. Hur borde jag göra nu?
Kod:
<?

$data 
= array(
    
"email_signin" => "@.nu",
    
"password_signin" => "OLLE",
    
"login" => "submit"
);

$ch curl_init("http://www.URL/index.php");
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
curl_setopt($chCURLOPT_POSTtrue);
curl_setopt($chCURLOPT_POSTFIELDS$data);
curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt');
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);

$result curl_exec($ch);
curl_close($ch);

echo 
$result;

?>
__________________
Senast redigerad av matematikern88 2020-12-05 kl. 11:22.
Citera
2020-12-06, 12:51
  #6
Medlem
SKetchers avatar
Citat:
Ursprungligen postat av matematikern88
Gör som han i YT-klippet, för då gör han det du pratar om tror jag.
Och då får jag ut detta i Firefox:

email_signin "ffsdhd@drsh.se"
password_signin "sdfh"
login ""



edit, du var rätt, hade skrivet fel. "login" => "submit"
Nu kom jag in =)
Så underbart! Tack!

Är du duktig i nästa del också? Att plocka ut koden och spara och se om den har ändrats till nästa koll? som den ska göra på tid intervall.



Nu vill jag att den ska läsa om $result; var 30sekund, utan att gå tillbaka till index.php för då kommer den här sidan att utföra login igen. Och vill inte att alla mina 2000 inloggningar ska sparas hos dom, ifall dom loggar inloggningarna. Nu är jag ju inne och har min kaka. Hur borde jag göra nu?
Kod:
<?

$data 
= array(
    
"email_signin" => "@.nu",
    
"password_signin" => "OLLE",
    
"login" => "submit"
);

$ch curl_init("http://www.URL/index.php");
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
curl_setopt($chCURLOPT_POSTtrue);
curl_setopt($chCURLOPT_POSTFIELDS$data);
curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt');
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);

$result curl_exec($ch);
curl_close($ch);

echo 
$result;

?>

Om vi tittar närmare på din kod så ser vi att du redan angett ett alternativ.
Du sparar dina cookies i en "cookie.txt" -fil, så dem borde ligga i den mapp där du körde PHP-scriptet.

Mer om Curl och cookies

Vi inlogging kör du CURLOPT_COOKIEJAR för att spara cookie och vid senare anrop använder du CURLOPT_COOKIEFILE för att hämta cookie-filen och därmed fortsätta vara inloggad.

Kod:
curl_setopt([$curlVariabel], CURLOPT_COOKIEFILE, '/var-min-fil-ligger-någonstans/cookies.txt');
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback