2012-08-10 86 views
0

我有兩個域中的兩個文件登錄與PHP另一個域捲曲

 http://example1.com/remote_login.php 

 http://example2.com/login.php 

當用戶訪問http://example1.com/remote_login.php我想要做一些remote_login.php驗證,那我以後想要發佈usernamepasswordhttp://example2.com/login.php如果結果是成功的,用戶應重定向到http://example2.com/index.php(同時我正在檢查會話http://example2.com/index.php

任何想法

Sorry for my bad english

我已經嘗試過使用curl,但它不工作就會登錄,但不能設置會話。所以用戶無法重定向到index.php

$cookie="cookie.txt"; 
$data = array(); 
$data['global_id'] = "raj"; 
$data['global_password'] = "raj"; 

foreach ($data as $key => $value){ 
    $post_items[] = $key . '=' . $value; 
} 

//create the final string to be posted using implode() 
$post_string = implode ('&', $post_items); 


$curl_connection = curl_init('http://example2.com/login.php'); 
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30); 

curl_setopt($curl_connection, CURLOPT_USERAGENT,"Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1"); 

curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($curl_connection, CURLOPT_FAILONERROR, TRUE); 
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl_connection, CURLOPT_REFERER, 'http://example2.com/login.php'); 
curl_setopt($curl_connection, CURLOPT_POST, true); 
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $data); 
curl_setopt($curl_connection, CURLOPT_HEADER, FALSE); 
curl_setopt($curl_connection, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt($curl_connection, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt($curl_connection, CURLOPT_SSLVERSION, 3); // OpenSSL issue 
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, 0); // Wildcard certificate 
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYHOST, 2); 
$result = curl_exec($curl_connection); 


if($result){ 
    header("Location: http://example2.com/index.php"); 

} 
else{ 
    echo "Login failed"; 
} 
+0

你試過了什麼? – 2012-08-10 03:53:41

+0

見編輯:....) – 2012-08-10 03:57:14

+0

我高解決方案,但其長途徑。 – 2012-08-10 04:36:39

回答

0

這是一個相當大的任務。用戶未登錄的原因是因爲會話不會在其計算機上設置,而是會在服務器上設置(如果它接受cookie)。所以你現在在做什麼是沒用的。

這樣說的話,你可以設置某種系統,每個遠程登錄都會觸發某種「驗證ID」,然後返回給該特定用戶,然後用戶被重定向到一個鏈接(validateSession.php?),傳遞特定的ID以確認身份,並且所有會話都在那裏設置...

雖然這是一項艱鉅的任務。

另請注意:除非您使用SSL防止中間人攻擊,否則這不是100%安全的。中間人攻擊是指當某個惡魔傾聽客戶端向服務器發送的內容時,反之亦然。所以如果有人拿到了這個ID,那就麻煩了。或者更糟的是,如果他們得到了用戶的用戶名的保持和傳遞....哦,孩子......

0

把你的代碼,因爲它是

改變你要跟代碼,如果($結果)

if($result){ 

<form id="myform" action="http://example2.com/index.php" method="post"> 
<input type="hidden" name="username" value=$username> 
<input type="hidden" name="password" value=$password> 
</form> 

<script type="text/javascript"> // java script 
function submitform()    // this is function send from data useing post method 
{ 
document.forms["myform"].submit(); 
alert("Value is sumitted"); 
} 
function submitform(); // calling function on page load 
</script> 

}