2012-07-06 117 views
0

我只是試圖設計一個聊天應用程序,它允許在兩個域的用戶之間進行跨域的聊天,也就是允許創建聊天室和聊天。所以,我被建議使用curl和ajax。但我不知道我該怎麼做,也不太瞭解捲曲。我知道它用於使用HTTP,各種協議在域之間傳輸文件/數據。但我有問題,如何通過登錄檢查在域之間傳輸消息。 我發現下面的代碼片段時,我GOOGLE了,但無法理解它。 CURL_SSL_VERIFYPEER是否執行域的驗證並僅重定向授權的域? 並請解釋我什麼 curl_setopt($ ch,CURLOPT_POSTFIELDS,「user_name = $ user_name & cmd = $ send_cmd & domain = $ my_domain」);聊天實現捲曲

// code snippet // 

$ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); 
     curl_setopt($ch,CURLOPT_FAILONERROR,1); 
     curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS,"user_name=$user_name&cmd=$send_cmd&domain=$my_domain"); 
     $res = curl_exec($ch); 
     curl_close($ch); 

2)我的第二個問題是我想在這裏使用會話變量,所以使用$ _SESSION。我開始知道,無論何時我們在頁面中使用會話變量,我們都需要使用session_start();但爲什麼即使我沒有在頂部使用session_start(),它也能工作? 我只是給了下面的代碼

// code // 
require_once 'db_connect.php'; 

if (isset($_SESSION ['user_id']) && !empty($_SESSION ['user_id'])) 
{ 

    echo '<p align="center">Hi, '.$_SESSION ['first_name'].'</p>'; 
    $u_name = $_SESSION['user_name']; 
    include 'home.php'; 
} 
else 
{ 
//some stmt 
} 

/*******home.php file ****/ 

<?php 
require_once 'dbconnect.php'; 
$_SESSION['username'] = $u_name; 

?> 

在上面我沒有使用任何的session_start()和我也沒有得到使用GET或POST變量,但即使然後$ u_name傳遞如何home.php頁?

3)以下語句做什麼?

echo '<link rel="stylesheet" type="text/css" href="bck_ground.css" />'; 

感謝

回答

0

我不知道什麼是「使兩個域創建聊天室聊天的用戶」是指完全是,但如果你需要跨域Ajax請求,檢查Access-Control-Allow-Origin頭。 它受到所有現代瀏覽器的支持。

如果您仍然需要支持舊瀏覽器,您可以將ajax請求從一個域代理到另一個域。至於我,你根本不需要PHP - 例如,你可以將代理規則放入.htaccess

+0

謝謝vadim,yea ....我需要跨域聊天 – preet 2012-07-06 22:17:08

+0

然後,正如我前面提到的,最簡單的代理就足夠了。在Apache上,你可以使用'mod_rewrite'來做到這一點: – Vadim 2012-07-09 10:17:51

+0

然後,正如我之前提到的,最簡單的代理就足夠了。在apache上,即使使用'mod_rewrite'也可以這樣做: 'Rewrite /router/domain.com/(.*)$ http://domain.com/$1 [P]' – Vadim 2012-07-09 11:59:23