douci4026 2014-07-09 15:59
浏览 99
已采纳

无法通过curl进行身份验证

I've been unable to authenticate using curl to: https://www.eyez-on.com/EZMAIN/login.php Here's my code (based on question Login to remote site with PHP cURL):

<?php


echo date('l jS \of F Y h:i:s A');
echo "<br>";

//username and password of account
$username = trim($values["email@domain.com"]);
$password = trim($values["mypassword"]);



//login form action url
$url="https://www.eyez-on.com/EZMAIN/login.php"; 
$postinfo = "email=".$username."&password=".$password;

$cookie_file_path = "/cookie/cookie.txt";

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
//set the cookie the site has for certain features, this is optional
curl_setopt($ch, CURLOPT_COOKIE, "cookiename=0");
curl_setopt($ch, CURLOPT_USERAGENT,
    "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
curl_exec($ch);

//page with the content I want to grab
curl_setopt($ch, CURLOPT_URL, "https://www.eyez-on.com/EZMAIN/account.php");
//do stuff with the info with DomDocument() etc

$html = curl_exec($ch);

echo $html;

curl_close($ch);

?>

I'm wondering if the problem is that the login page form has method GET. Here's a segment of the source of the login page:

    <form action="" method="get" id="login">
        <fieldset>
            <legend>Login</legend>
            <ul>
                <li>
                    <label for="email"><span class="required">User Account</span></label>
                    <input id="email" name="email" class="text required email" type="text" />
                    <label for="email" class="error">This must be a valid email address</label>
                </li>

                <li>
                    <label for="password"><span class="required">Password</span></label>
                    <input name="password" type="password" class="text required" id="password" minlength="4" maxlength="20" />
                </li>


            </ul>
        </fieldset>

        <fieldset class="submit">
                                <input type="submit" class="button" value="Login..." />
        </fieldset>

        <div class="clear"></div>
    </form>

My ultimate goal is once logged in, go to one of my account pages, get some data and create a php variable with the data. The /cookie directory is read/write able by everyone and the cookie.txt file gets written - so that's not the problem. I've worked on this for days............any help would be appreciated.

  • 写回答

1条回答 默认 最新

  • dtvp3625 2014-07-09 18:49
    关注

    Quick tip: use your network tab in chrome so you can see what the form is posting to. This form for example doesn't post to itself but it's posting to https://www.eyez-on.com/EZMAIN/processLogIn.php

    You'll have to make 2 curl calls. The first to the processlogin page, posting your credentials. The variables it takes are email and password, then store the information to a cookie jar and include the cookie jar in your next curl call.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题