2012-06-20 2 views
0

У меня есть два участка, A и B, я хотел бы иметь возможность проверенного пользователя с сайта бревна на сайт B,Php Curl Войти Cookie Как установить кук

сайт A - использует PHP;

Сайт B - использует Zend Framework.

Я хотел бы иметь iframe на сайте A в частную часть сайта B или перенаправить на сайт B , когда я делаю html-сообщение из формы на сайте A с учетными данными, которые я перенаправляю и регистрирую во всем работает, я хотел бы сделать это более надежно со стороны сервера в php. когда я отправляю сообщение с помощью php curl, пользователь не входит в систему внутри iframe, я устал перенаправлять, но снова пользователь не вошел в систему на сайте B.

Я не знаю, почему html-форма работает и php curl не делает? я должен отправить что-то еще с помощью curl, или это проблема с Zend?

----- ОК после еще нескольких поисковых запросов я сузил проблему до печенья, я считаю, что должен их установить, но я не знаю, как это сделать? это верно? как бы я решил установить их в php? или я передаю заголовок, где cookie установлен в браузере и пересылается на сайт B? если да, то как это сделать?

вот мой код.

<?php 
$data = array(
'useremail' => 'someemail', 
'password' => 'somepassword' 
); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://siteb.com/account/login"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); // Cookie management. 
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); 
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); 

$output = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 
?>  

<html> 
<body> 
<iframe src="http://SiteB.com/account/login" width="950" height="700"></iframe> 

<form action="http://SiteB.com/account/login" method="post"> 
email: <input type="text" name="useremail" value="useremail" /><br /> 
password: <input type="text" name="password" value="somepassword" /><br /> 
<input type="submit" value="Submit" /> 
</form> 
</body> 
</html> 

спасибо за ваше время и помощь.

ответ

0

Вы создали файл cookie.txt и разрешили пользователю веб-сервера писать на него?

http://siteb.com/account/login необходимо будет начать сеанс (или написать куки).

cURL будет обрабатывать остальное.

+0

On My SITEB, когда я войти в систему из SITEB на светлячок -> инструменты веб-разработчиков -> Печенье -> просмотр информации печенье я вижу мою куки, но когда я открываю cookies.sqlite я не вижу, печенье мог проблема заключается в том, чтобы мой сайтb не создавал файлы cookie правильно? – user1347693

2

«Когда я отправляю сообщение с помощью php curl, пользователь не входит в систему iframe, я устал перенаправлять, но снова пользователь не вошел на сайт B.»

my ans: Подумайте о Php-Curl как о браслере. И вы используете скрипт как другой браузер. для проверки подлинности iframe cookie необходимо установить в браузере. Когда вы аутентифицируетесь из PHP-скрипта, cookie устанавливается на PHP-curl broswer. Оба этих броузера не используют файлы cookie. Я не думаю, что вы можете заставить пользователя войти в систему так.

Используете ли вы сервер Windows или сервер Linux?

Я верю, что мне нужно установить их, но я не знаю, как это сделать? это верно? Вы делаете это правильно, посещая варианты завитка, чтобы использовать файлы cookie.

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); // Cookie management. 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 

Btw, Вы можете попробовать следующий код и проверить, если печенье% randNum% .txt генерируется в папке печенья? Btw создайте папку cookie в той же папке, что и скрипт перед выполнением. Просто чтобы убедиться, что у вас есть все файлы cookie в папке, а не распространены среди файлов сценариев.

<? 
$mypath = getcwd(); 
      $mypath = preg_replace('/\\\\/', '/', $mypath); 
      $rand = rand(1, 15000); 
      $cookie_file_path = "$mypath/cookies/cookie$rand.txt"; 
    $data = array(
    'useremail' => 'someemail', 
    'password' => 'somepassword' 
    ); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, "http://siteb.com/account/login"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); // Cookie management. 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
    curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); 

    $output = curl_exec($ch); 
    $info = curl_getinfo($ch); 
    curl_close($ch); 
?> 
+0

прямо сейчас im using wamp i попытался запустить $ mypath = getcwd(); $ mypath = preg_replace ('/ \\\\ /', '/', $ mypath); $ rand = rand (1, 15000); $ cookie_file_path = "$ mypath/cookies/cookie $ rand.txt"; , но не удалось найти файл, который я попробовал как с firefox, так и с chrome. – user1347693

+0

На моем сайтеB, когда я вхожу с сайтаB в firefox -> инструменты для веб-разработчиков -> Cookies -> просмотр информации о файлах cookie i see my cookie, но когда я открываю файлы cookie. sqlite, я не вижу, что cookie может быть проблемой с моим сайтом b, не создающим файлы cookie правильно? – user1347693

+0

Пожалуйста, проверьте мои измененные фотографии! –

Смежные вопросы