Gå til innhold

cURL POST logge inn


Anbefalte innlegg

Hei,

 

Er det noen som kan forklare meg hvorfor dette lille scriptet returnerer 'not ok'?

 

Jeg har forsøkt på flere sider, og har også laget en enkel side selv for å teste, uten hell dessverre.

<?php

if (!empty($_POST['email']) === true && !empty($_POST['passwd']) === true) {
	$email = $_POST['email'];
	$passwd = $_POST['passwd'];

	$ch = curl_init();

	curl_setopt($ch, CURLOPT_URL,"https://accounts.google.com/");
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, "Email=".$email."&Passwd=".$passwd);

	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

	$server_output = curl_exec ($ch);

	curl_close ($ch);

	if ($server_output == "OK") { echo 'ok'; } else { echo 'not ok'; }
	} else {
		echo 'Check your input';
}

?>

Må få legge til at dette ikke er laget for å logge inn på Google, det har de nok sørget for at ikke fungerer.

Endret av Dan-Levi
Lenke til kommentar
Videoannonse
Annonse

En wild guess: Hvis du navigerer til accounts.google.com så ser du at de har en del input-felter, blandt annet ett som heter "dsh" som endrer seg for hver gang. Jeg antar at dette feltet har en unik nøkkel av noe slag som forhindrer det du prøver på.

 

Jeg antar at den eneste sjansen du har er å bruke cURL til å først hente siden fra accounts.google.com, deretter parse HTML-koden, legge inn brukernavn og passord også sende alle input-feltene i retur.

 

Men det er ingen garanti for at dette vil fungere.

Endret av xibriz
Lenke til kommentar

Har du kikket på dokumentasjonen for curl_exec() hva den returnerer, og hvordan CURLOPT_RETURNTRANSFER påvirker dette?

Kan også anbefale bruk av var_dump() når du lurer på hvorfor en variabel ikke inneholder det den skal.

 

I ditt tilfelle, legg inn en var_dump($server_output); på linja før if ($server_output ...), så vil du nok fort se hvorfor du alltid får "not ok" som utskrift til skjermen.

 

Vil også nevne at følgende sammenlikning virker litt rar:

!empty($_POST['email']) === true

Funksjonen empty() returnerer alltid én av true eller false, og disse verdiene blir ikke misforstått av if-setninger, så du kan trygt skrive:

!empty($_POST['email'])

Og det vil ha akkurat samme utfall, alltid, sammenlikne med true er bare smør på flesk.

Lenke til kommentar

Vil også nevne at følgende sammenlikning virker litt rar:

!empty($_POST['email']) === true
Funksjonen empty() returnerer alltid én av true eller false, og disse verdiene blir ikke misforstått av if-setninger, så du kan trygt skrive:

!empty($_POST['email'])
Og det vil ha akkurat samme utfall, alltid, sammenlikne med true er bare smør på flesk.

 

Bare for å tilføye, hvis du absolutt vil ha med true eller false så gjør følgende, det ser bedre ut (imo)

if (empty($_POST['email']) === true) // true
if (empty($_POST['email']) !== true) // false
if (empty($_POST['email']) === false) // false
if (empty($_POST['email']) !== false) // true
Er vel strengt tatt kun nødvendig å spesifisere true eller false for funksjoner som kan returnere andre verdier som tolkes som true/false, f.eks. 1 og 0. Endret av Crowly
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...