2013-03-13 39 views
0

我目前正在處理用戶必須填寫用戶名和密碼的腳本。然後,當用戶登錄時,腳本檢查他/她的用戶名是否在我的數據庫中註冊。如果是這樣,用戶登錄我的外部網站(使用cURL),如果沒有,則用戶登錄到我無法訪問數據庫的其他網站。cURL followlocation無法正常工作

if($count==1){ 
    $curl = curl_init('http://www.myownwebsite.com/'); 
    curl_setopt ($curl, CURLOPT_POSTFIELDS, "gebruikersnaam=$myusername&wachtwoord=$mypassword"); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_exec($curl); 
} 
else { 
    $curl = curl_init('http://www.differentwebsite.com/'); 
    curl_setopt ($curl, CURLOPT_POSTFIELDS, "username=$myusername&password=$mypassword"); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_exec($curl); 
} 

,你可以看到,我的腳本保存在一個計數變量的行數,如果查詢結果1行,它會在我的網站上,如果沒有它記錄在其他網站。用戶名和密碼檢查是在用戶登錄的實際網站上完成的。

現在我的問題是,我希望它「跟隨位置」,或者說。該腳本正如現在所示,將(?)重定向到例如http://www.myownwebsite.com/checklogin.php(checklogin.php是我使用cURL的腳本)。

我試圖通過使用followlocation捲曲功能解決這一點,但這樣做,給我一個警告:

警告:curl_setopt():CURLOPT_FOLLOWLOCATION不能當啓用safe_mode設置或激活了open_basedir在設置 - ----

我使用phpinfo()檢查了我的php.ini;功能和安全模式關閉,open_basedir沒有價值,所以我不認爲這是問題。我查了一些其他可能的解決方案,但到目前爲止我沒有解決這個問題。

如果有什麼不清楚的地方,請隨時詢問。

+0

'CURLOPT_MAXREDIRS'的價值是什麼? – 2013-03-13 08:35:12

+0

腳本中沒有maxredirs,所以它可能是什麼默認值,我猜?我需要用它做什麼嗎? – 2013-03-13 08:39:21

+1

正如我所看到的..你正在使用CURLOPT_POSTFIELDS,但是你沒有設置CURLOPT_POST的值..你是否把它設置在別的地方..? – alwaysLearn 2013-03-13 08:40:10

回答

2

您無法通過向您的服務器發送POST請求登錄頁面登錄用戶。發生什麼事是你讓你的服務器登錄,而不是用戶。

此外,您無法使用PHP將POST數據重定向到用戶。你所能做的就是你可以製作一個帶有隱藏字段method="POST"action="http://www.differentwebsite.com/"的表格usernamepassword,它將在頁面加載時通過JavaScript提交。以下是您可以輸出的頁面的簡單示例。

<html> 
<head> 
<script type="text/javascript"> 
function submit_form() 
{ 
    document.myform.submit(); 
} 
</script> 
</head> 
<body onload="submit_form();"> 
    <form method="POST" name="myform" action="http://www.google.com/"> 
     <input type="hidden" name="username" value="someusername"/> 
     <input type="hidden" name="password" value="somepassword"/> 
    </form> 
</body> 
</html> 

至於爲什麼你的用戶重定向,這是由於這一事實,你跳過:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

所以輸出被直接發送給用戶。

+0

嗯,我很困惑。我如何實現這一點?添加了curl_setopt($ curl,CURLOPT_RETURNTRANSFER,true);同樣的警告。我知道只要添加RETURNTRANSFER就不應該解決它,但只是你知道的。我應該如何使用隱藏字段來實現該表單? – 2013-03-13 09:32:11

+0

@TienusMcVinger我用示例代碼更新了答案。 – Ranty 2013-03-13 16:14:51

+0

啊,是的,玩了一下後,我得到了它的工作。謝謝! – 2013-03-14 15:16:38