0

我只是想设计一个聊天应用程序,它允许两个域的用户之间的跨域聊天,即允许创建聊天室和聊天。所以,我被建议使用 curl 和 ajax。但我不知道我该怎么做,而且对 curl 也不太了解。我知道它用于使用 HTTP 和各种协议在域之间传输文件/数据。但我有疑问,如何通过登录检查在域之间传输消息。当我用谷歌搜索时,我发现了以下代码片段,但无法理解。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" />';

谢谢

4

1 回答 1

0

我不确定“允许两个域的用户创建聊天室和聊天”的确切含义,但如果您需要跨域 ajax 请求,请检查Access-Control-Allow-Origin标题。所有现代浏览器都支持它。

如果您仍然需要支持较旧的浏览器,您可以将 ajax 请求从一个域代理到另一个域。至于我,您根本不需要 PHP - 例如,您可以将代理规则放入其中.htaccess

于 2012-07-06T21:07:48.337 回答