2015-06-15 186 views
0

我想用我的大學賬號登錄科學數據庫。我想用我的php代碼來訪問數據庫。登錄頁面是: https://login.ezproxy.lib.rmit.edu.au/login並且爲了登錄,它需要用戶名和密碼。 在此頁面中,登錄表單中的操作將重定向到「/ login」目錄,我無法按照要執行的操作。 我用下面的代碼要求PHP登錄:通過php登錄

<?php 
    $failed = ""; 
    $user = "myuser"; 
    $pass = "mypass"; 
    $url = "https://login.ezproxy.lib.rmit.edu.au/login"; 

    $ch = curl_init(); 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_POST,true); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 

    //set the POST parameters 

    $data = curl_exec($ch); 
    curl_close($ch);  
    if ($data != $failed) //analyze the returned data 
    { 
     echo "Successfully logged in"; 
    } 
    else{ 
     echo "not logged in"; 
    } 
    ?> 

但是這並不好操作。感謝您的幫助。

+0

例如您打開PHP標籤 '

+0

你永遠不會告訴curl你的用戶名是什麼。你不會發布任何字段。你所做的只是一個「裸」的職位,** ** **數據。 –

回答

0

你必須做出這些改變你的腳本

  1. 你需要告訴捲曲什麼是你的用戶名和密碼。
  2. 設置捲曲餅乾

    //username and password of account 
    $username = ""; 
    $password = ""; 
    
    //set the directory for the cookie using defined document root var 
    $dir = DOC_ROOT."/ctemp"; 
    //build a unique path with every request to store 
    //the info per user with custom func. 
    $path =""; 
    
    //login form action url 
    $url="https://login.ezproxy.lib.rmit.edu.au/login"; 
    $postinfo = "user=".$username."&pass=".$password; 
    
    $cookie_file_path = $path."/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); 
    
    $html = curl_exec($ch); 
    curl_close($ch); 
    print_r($html); 
    
+1

爲什麼OP要「試試這個」?請添加一個解釋,你做了什麼,爲什麼你這樣做,不僅是爲了OP,而且是爲了未來的訪問者。 –

+0

*「試試這個」*屬於評論部分,當某些東西「不清楚」時。 - 就像@JayBlanchard所說的那樣。放在代碼中並沒有指示OP應該做什麼以及爲什麼。 –

+0

@JayBlanchard我已經更新了答案:) –