Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我能';我似乎不知道如何登录网站并获取HTML_Php_Html_Curl - Fatal编程技术网

Php 我能';我似乎不知道如何登录网站并获取HTML

Php 我能';我似乎不知道如何登录网站并获取HTML,php,html,curl,Php,Html,Curl,这是按钮的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="user

这是按钮的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>

我们走吧
我试图制作一个简单的脚本,尝试登录,然后在登录后获取HTML

如果帐户信息无效,则HTML中现在有此字符串

你的信息不正确。再试一次

这是我到目前为止的代码

<?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;
 ?>

但不管出于什么原因,当我打开我的.php页面时,我只得到了okcupid.com的登录页面。我只是想看看帐户登录是否失败

另一个想法是尝试登录到一个页面,然后转到另一个页面,看看该页面是否加载。您只有在登录时才能访问的页面是


登录数据应设置为cookie,并在下一个请求中读取

   curl -c cookies.txt -d "username=uname&password=yourpassword" http://site/login
要设置cookie并在后续请求中使用,您可以使用以下代码

  curl -b cookies.txt http://site/newpage
在PHP中,这是如何使用curl设置cookie的

    curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFileName");
你已经做过了

对于阅读cookie,您可以使用

     curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookieFileName");
这是您更新后的登录代码

 <?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;
   ?>

对于登录后的后续请求,代码如下所示:

   <?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;
   ?>


确保为cookie文件指定了正确的路径。

Uhh。超级愚蠢的问题,我不太擅长cUrl,我如何将您提供的代码更改为PHP?好的,非常抱歉。我运行了这段代码,然后当我用FTP传输到我的服务器时,我在任何地方都看不到包含cookie.txt的文件。另外,如果我想在同一个文件中立即检查,我会把这两个东西放在同一个PHP文件中吗?有什么想法吗?我不知道怎么解决这个问题