PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 7
maksimn Отправлено: 10 Сентября, 2014 - 09:54:21 • Тема: Установка и передача cookie в заголовках • Форум: Вопросы новичков

Ответов: 1
Просмотров: 142
Здравствуйте!
Есть сервер, с которым необходимо устанавливать соединение.
После первого запроса сервер возвращает в заголовке ключ, с которым нужно будет отправлять все последующие запросы.

Вот такой заголовок приходит после первого запроса:
CODE (text):
скопировать код в буфер обмена
  1. HTTP/1.1 303 See Other
  2. Server: nginx/1.6.0
  3. Date: Tue, 09 Sep 2014 10:49:38 GMT
  4. Content-Length: 0
  5. Connection: keep-alive
  6. Set-Cookie: ring-session=cc678922-2dba-47fe-bc5c-5c7436b1496a;Path=/
  7. Location: /
  8. Access-Control-Allow-Origin: http://*****.ru



Сейчас все это работает криво.
Я ищу в заголовке ответа сервера нужную мне переменную, а потом вставляю ее в свой заголовок следующего запроса. :
PHP:
скопировать код в буфер обмена
  1. $s = fsockopen($ip, 30080, $errstr, $errno, 10);
  2.         if (!$s) {
  3.             echo "$errstr ($errno)<br />\n";
  4.         } else {
  5.                 $post_data = "username=name&password=pass";
  6.                
  7.                 $out = "POST /login HTTP/1.1\r\n";
  8.                 $out .= "Host: $ip\r\n";
  9.                 $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
  10.                 $out .= "Content-Length: ".strlen($post_data)."\r\n\r\n";
  11.                 $out .= $post_data."\r\n\r\n";
  12.                
  13.                 fputs($s, $out);
  14.                 // Бегаем по строчкам ответа
  15.                 while (!feof($s)) {
  16.                         $line = fgets($s);
  17.                         $key = "ring-session";
  18.                         // Если в строке есть ring-session - вырезаем его в переменную
  19.                         if(strstr($line, $key)){
  20.                                 preg_match('/=(.*?);/', $line, $output);
  21.                                 $rs = $output[1];
  22.                         }
  23.                 }
  24.             fclose($s);
  25.         }
  26.         if($rs){
  27.                 //тут запоминаю куку, но это не работает
  28.                 //setcookie("ring-session", $rs, time() + 30 * 24 * 60 * 60);
  29.                 $s = fsockopen($ip, 30080, $errstr, $errno, 10);
  30.                 if (!$s) {
  31.                     echo "$errstr ($errno)<br />\n";
  32.                 } else {
  33.                         $params = new stdClass;
  34.                         $params->username = "uname";
  35.                         $params->session = "sid";
  36.                        
  37.                         $post_data = json_encode(array('action' => 'login', 'params'=>$params));
  38.                        
  39.                         $out = "POST /api HTTP/1.1\r\n";
  40.                         $out .= "Host: $ip\r\n";
  41.                         $out .= "Content-Type: application/json\r\n";
  42.                         // вставляю в заголовок ключ
  43.                         $out .= "Cookie: ring-session=".$rs."\r\n";
  44.                         $out .= "Content-Length: ".strlen($post_data)."\r\n\r\n";
  45.                         $out .= $post_data."\r\n\r\n";
  46.                        
  47.                         fputs($s, $out);
  48.                         while (!feof($s)) {
  49.                                 echo fgets($s)."<br/>";
  50.                         }
  51.                     fclose($s);
  52.                 }
  53.                
  54.         }else{
  55.                 echo "Не удалось получить ключ!";
  56.         }
  57.  

Насколько я понимаю, после того как мне прилетает в заголовке строка
CODE (text):
скопировать код в буфер обмена
  1. Set-Cookie: ring-session=cc678922-2dba-47fe-bc5c-5c7436b1496a;Path=/

я должен запомнить в браузер эту куку, и в последующих запросах в моих заголовках автоматом должна быть строка
CODE (text):
скопировать код в буфер обмена
  1. Cookie:  ring-session=cc678922-2dba-47fe-bc5c-5c7436b1496a

а пока я это все руками подставляю.
Если запомнить куку в браузер, то во втором запросе в заголовок эта кука не попадает, т.к. возвращается ошибка.

п.с.
а еще почему-то очень долго проходит запрос, на каждый примерно по 1-2 минуте! может я не те методы передачи данных использую?

Спасибо!
maksimn Отправлено: 13 Декабря, 2013 - 10:21:46 • Тема: Помогите составить SQL запрос • Форум: Работа с СУБД

Ответов: 2
Просмотров: 851
Panoptik, спасибо! Все получилось!
maksimn Отправлено: 13 Декабря, 2013 - 09:20:24 • Тема: Помогите составить SQL запрос • Форум: Работа с СУБД

Ответов: 2
Просмотров: 851
Здравствуйте. Никак не получается составить правильный sql запрос.
Задача: Вывести список компаний и время пользователей авторизовавшихся последними.

Таблица Компаний
companies
id, name

Таблица Пользователей
users
id, company_id, online(timestamp)

Запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2. companies.id AS id
  3. ,companies.name AS name
  4. ,MAX(users.online) AS user_online
  5. FROM companies
  6. LEFT JOIN users ON users.company_id = companies.id


Мне возвращается только одна строка с компанией, чей пользователь заходил последним, а мне нужно чтобы был список всех компаний.
Вероятно нужно делать SELECT в SELECTе, но к сожалению таких запросов делать еще не приходилось.
Спасибо!
maksimn Отправлено: 19 Июня, 2013 - 10:56:31 • Тема: Редакторы PHP • Форум: Программное обеспечение

Ответов: 421
Просмотров: 254298
Подскажите пожалуйста программное решение для совместной работы сразу нескольких программистов. Т.е. чтобы файлы на сервере не перезаписывались, а дополнялись изменениями каждого. Спасибо.
maksimn Отправлено: 03 Февраля, 2013 - 00:33:34 • Тема: Хранение дробных чисел в MySQL • Форум: Вопросы новичков

Ответов: 3
Просмотров: 255
Мелкий,
Большое спасибо! Теперь все работает прекрасно!
maksimn Отправлено: 02 Февраля, 2013 - 16:58:27 • Тема: Хранение дробных чисел в MySQL • Форум: Вопросы новичков

Ответов: 3
Просмотров: 255
Здравствуйте!
Не могу найти в сети решения своей проблемы.
В БД хранятся данные, средние баллы.
Необходимая точность значения - 2 знака после запятой.
Тип поля FLOAT.
Данные записываются и переменной:

$gpa = round($sumpoints/count($points), 2);

Смотрю в базу данных и вижу там такие значения:
3.67
4.17
2.83
3.5


Проблемы начались при поиске по БД.
Если ищу значение с точностью до одного знака - проблем нет!
(например 3.5 находит)
Но при поиске данных с двумя знаками после запятой - результатов не выдает!
(например 4.17 уже не находит)

Изменив методом тыка тип хранения данных с FLOAT на DOUBLE уже существующих полей
я увидел что данные не те, что я записывал:
3.67 на самом деле хранится как 3.67000007629395
4.17 хранится как 4.17000007629395
2.83 хранится как 2.82999992370605
при этом 3.5 также остается 3.5

Помогите пожалуйста разобраться!
Как мне округлять и записывать данные? Где ошибка?
Спасибо!

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB