2016-04-13 3 views
0

Hier bekommen, ist die HTML-Code der TasteIch kann nicht scheinen, um herauszufinden, wie man eine Website anmelden und die HTML-

<form id="loginbox_form" class="okform initialized" method="post" action="https://www.okcupid.com/login"> 
    <div id="login_usernameContainer" class="inputcontainer input empty"> 
     <input id="login_username" name="username" placeholder="Your email or username"><span class="okform-feedback message empty" style="height: 0"></span> 
     <div class="icon okicon"></div> 
    </div> 
    <div id="login_passwordContainer" class="inputcontainer input empty"> 
     <input id="login_password" type="password" name="password" placeholder="Password"><span class="okform-feedback message empty" style="height: 0"></span> 
     <div class="icon okicon"></div> 
    </div> 
    <button type="submit" id="sign_in_button" class="flatbutton">Let’s go</button> 
</form> 

Ich versuche, ein einfaches Skript zu machen, um sich einzuloggen versucht, und dann wird die HTML nach eingeloggt zu sein.

Wenn die Kontoinformationen ist diese Zeichenfolge innerhalb der HTML jetzt ungültig ist

Ihre Angaben nicht korrekt war. Versuch es noch einmal.

Hier ist der Code, den ich bisher

<?php 
$username = 'FAKEUSERNAME'; 
$password = 'FAKEPASSWORD'; 
$loginUrl = 'http://www.okcupid.com/login'; 
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $loginUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'login_username='.$username.'&login_password='.$password); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$store = curl_exec($ch); 
$content = curl_exec($ch); 
curl_close($ch); 
echo $content; 
?> 

Aber aus welchem ​​Grund auch immer haben, wenn ich meine .php Seite öffnen, bekomme ich nur die Login-Seite von okcupid.com. Ich möchte nur sehen können, ob die Kontoanmeldung fehlgeschlagen ist oder nicht.

Eine andere Idee ist es, versuchen, auf einer Seite einzuloggen, und dann auf eine andere Seite gehen und sehen, ob diese Seite geladen wird. Die Seite, die Sie kann nur erhalten, während angemeldet wird, ist

http://www.okcupid.com/profile

Antwort

0

Die Login-Daten sollten in Cookie gesetzt werden und es wieder mit der nächsten Anforderung lesen.

curl -c cookies.txt -d "username=uname&password=yourpassword" http://site/login 

Cookie setzen und in den folgenden Wunsch können Sie unter Code verwenden.

curl -b cookies.txt http://site/newpage 

In PHP setzen Sie so ein Cookie mit curl.

curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFileName"); 

was bereits von Ihnen erledigt ist.

und das Cookie für das Lesen, können Sie

verwenden
 curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookieFileName"); 

Hier ist die für die Anmeldung Ihre aktualisierten Code ist

<?php 
    $username = 'FAKEUSERNAME'; 
    $password = 'FAKEPASSWORD'; 
    $loginUrl = 'http://www.okcupid.com/login'; 
    $agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $loginUrl); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'login_username='.$username.'&login_password='.$password); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
    curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $store = curl_exec($ch); 
    $content = curl_exec($ch); 
    curl_close($ch); 
    echo $content; 
    ?> 

Und für nachfolgende Anforderung nach der Anmeldung wie der Code aussehen:

<?php 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
    curl_setopt($ch, CURLOPT_URL,"http://www.okcupid.com/afterlogin.php"); 
    $content = curl_exec ($ch); 
    curl_close ($ch); 
    echo $content; 
    ?> 

Stellen Sie sicher, dass Sie einen korrekten Pfad für die Cookie-Datei angegeben haben.

+0

Uhh. Super dumme Frage, ich bin nicht so toll bei cUrl, wie würde ich den Code ändern, den Sie in PHP bereitgestellt haben? – Dgameman1

+0

Ich habe meine Antwort aktualisiert. bitte prüfe. – VipindasKS

+0

Okay, super super Entschuldigung. Ich habe diesen Code ausgeführt, und als ich dann auf meinen Server FTP ging, sah ich nirgendwo eine Datei mit cookie.txt. Wenn ich es in der gleichen Datei haben möchte, um es gleich zu überprüfen, würde ich beide Dinge in dieselbe PHP-Datei schreiben? – Dgameman1

Verwandte Themen