10
Дек
2015

Авторизация CURL php

У меня два сайта и хочу сделать одновременную авторизацию,

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

Авторизацию через CURL я уже сделал. Но когда делаю клики по сайту, на котором авторизовался через CURL, то авторизация пропадает.. Я так понимаю это из-за куков.. Сейчас Они на просто записываются в файл cookies.txt...

Можно ли их как-то из файла перенести в браузер ?

П,С Я только изучаю php .. Поэтому хотелось бы знать логична ли моя идея и если да, то как решить ?

вот код авторизации

<?php

// функции для cms

class work_init_moduls
  {
   
   function __construct()
     {
      
     }
   
   static public function get_num_modul($name_modul)
     {
      global $list_modules;
      $num_modul = 0;
      
      if ( !empty($list_modules[$name_modul]) )
        {
         $num_modul = $list_modules[$name_modul][5];
        }
      
      return ($num_modul);
     }
   
   static public function get_name_modul($num_modul)
     {
      global $list_modules;
      $name_modul = 0;
      
      foreach ($list_modules as $one_modul )
        {
         if ( $one_modul[5] == $num_modul )
           $name_modul = $one_modul[0];
        }
      
      return ($name_modul);
     }
   
  }

function forming_signature_email()
  {
   global $masConfig;
   $t = trim($masConfig["EMAIL_ADMIN_SIGNATURE"]);
   
   if ( $t ) $t = "<br><br>".$t;
   
   return ($t);
  }


// класс для работы с сессией пользователя на сайте

class session_auth_user
  {
   
   function __construct()
     {
      
     }
   
   static public function set_session($data_user, $on_memory)
     {
      
      // добаляем в сессию данные
      $_SESSION["time_avt"]=$GLOBALS["timeGlobal"];
      
      $_SESSION["id_user"] = $data_user["id_user"];
      $_SESSION["name_user_avt"] = $data_user["name_user"];
      $_SESSION["passw_user_avt"] = $data_user["password_user"];
      $_SESSION["email_user_avt"] = $data_user["email_user"];
      
      $_SESSION["access_admin_avt"] = $data_user["access_admin"];
      $_SESSION["s_data_authorize_user"] = $data_user;
      
      // добаляем в глобальные переменные данные
      $GLOBALS["user_to_site"] = true;
      $GLOBALS["name_user_to_site"] = $data_user["name_user"];
      $GLOBALS["passw_user_to_site"] = $data_user["password_user"];
      $GLOBALS["id_user_to_site"] = $data_user["id_user"];
      $GLOBALS["email_user_to_site"] = $data_user["email_user"];
      $GLOBALS["access_admin"] = $data_user["access_admin"];
      $GLOBALS["data_authorize_user"] = $data_user;
      
      if ( $on_memory )
        {
         self::set_cookie_memory($data_user);
        }
      
     }
   
   static public function check_auth_user()
     {
      
      $GLOBALS["user_avtoriz"]=true;//авторизация на сайте включена (глобальная переменная для других модулей)
      
      $check_access = 0;
      $num_user = 0;
      $time_session = 0;
      $data_user = false;
      
      $time_tek=$GLOBALS["timeGlobal"];
      $clear_session = false;
      $on_memory_session = false;
      
      if ( isset($_SESSION["id_user"]) && isset($_SESSION["time_avt"]) 
        && is_numeric($_SESSION["id_user"]) && is_numeric($_SESSION["time_avt"]) )
        {
         //сессия определена
         $time_session = $_SESSION['time_avt'];
         $num_user = $_SESSION["id_user"];
         
         $data_user = self::check_num_user($num_user);
         
         if ( !$data_user )
           {
            $num_user = 0;
            $time_session = 0;
            $data_user = false;
           }
         
        }
      
      if ( $num_user > 0 )
        {
         if ( ( $time_tek-$time_session ) > TIME_SESSION_AVTORIZ )
           {
            //время сессии вышло
            $check_access = 0;
            $clear_session = true;
            $num_user = 0;
            $data_user = false;
            $time_session = 0;
            
           }
        }
      
      if ( $num_user == 0 )
        {
         $data_user_ck = self::check_user_cookie_memory();
         
         if ( $data_user_ck != false )
           {
            $data_user = $data_user_ck;
            //self::set_session($data_user,true);
            $num_user = $data_user["id_user"];
            $time_session = time();
            $clear_session = false;
            $on_memory_session = true;
            self::save_time_authoriz_user("",$num_user);
           }
        }
      
      if ( $clear_session )
        {
         self::clear_session(false);//удаляем сессию
        }
       elseif ( $num_user && $time_session && $data_user )
         {
          
          self::set_session($data_user,$on_memory_session);
          
         }
      
      return ( $num_user > 0 ? $data_user : false );
     }
   
   static public function check_num_user($id_user)
     {
      $data_user=false;
      
      $db_query="select * from ".DB_PREF."users "
        ." where id_user='".codeText($id_user)."' " //."and BINARY password_user='".md5($password_user)."' "
        ." and ( access_user='on' or access_admin = 'sadmin' ) ";
      list($kolvo,$data_user)=db_work::query_select_one_assoc($db_query);
      
      
      if ($kolvo != 1)
        {
         $data_user = false;
        }
      
      return ($data_user);
     }
   
   static public function check_user_cookie_memory()
     {
      $data = false;
      if ( isset($_COOKIE["memoryauth"]) )
        {
         $mas_data = explode(":",base64_decode($_COOKIE["memoryauth"]));
         $error = false;
         if ( sizeof($mas_data) == 2 && $mas_data[0] && $mas_data[1] && is_numeric($mas_data[0]) )
           {
            $data_user_db = self::check_num_user($mas_data[0]);
            if ( $data_user_db )
              {
               $sk = md5("luHTUge7djyYT883Ytu06hTGHIdbvmBJGKjg75fJGf5t" . md5($data_user_db["password_user"]."g39dkjgkd93kdfj39dkjf83jdkeJKHGkj7y"));
               if ( $sk == $mas_data[1] )
                 {
                  $data = $data_user_db;
                 }
                else
                  {
                   $error = true;
                  }
              }
             else
               {
                $error = true;
               }
           }
          else
            {
             $error = true;
            }
         
         if ( $error )
           {
            //удаляем куку
            self::set_cookie_memory(false);
           }
        }
      
      return ($data);
     }
   
   static public function clear_session($delete_cookie_memory = true)
     {
      if (isset($_SESSION['id_user']))
        {
         //session_destroy();
         unset($_SESSION['time_avt']);
         unset($_SESSION['id_user']);
         
        }
      
      if ( $delete_cookie_memory )
        {
         self::set_cookie_memory(false);
        }
     }
   
   static public function set_cookie_memory($data_user)
     {
      // если $data_user -> false , то удаляем куку
      $time_c = time()+3600*24*100;
      if ( $data_user == false )
        {
         $v = "";
         $time_c = 1000;
        }
       else
         $v = base64_encode($data_user["id_user"].":".md5("luHTUge7djyYT883Ytu06hTGHIdbvmBJGKjg75fJGf5t" . md5($data_user["password_user"]."g39dkjgkd93kdfj39dkjf83jdkeJKHGkj7y")));
      
      setcookie("memoryauth",$v,$time_c,"/");
      
     }
   
   static public function init_authoriz_user_sc()
     {
      
      $GLOBALS["user_avtoriz"]=false;//авторизация пользователей на сайте (false - нет, true - да)
      $GLOBALS["user_to_site"]=false;//авторизован ли пользователь на сайте (false - нет, true - да)
      $GLOBALS["name_user_to_site"]="";//имя авторизованного пользователя
      $GLOBALS["passw_user_to_site"]="";//зачение md5(пароль пользователя)
      $GLOBALS["id_user_to_site"]=-1;//уникальный номер пользователя - поле id_user таблицы users
      $GLOBALS["email_user_to_site"]="";//e-mail пользователя авторизованного на сайте
      $GLOBALS["access_admin"] = "";
      $GLOBALS["data_authorize_user"] = false;
      
      self::check_auth_user();
      
     }
   
   static public function save_time_authoriz_user($name_user,$id_user = false)
     {
      $db_query="update ".DB_PREF."users set date_visit=".$GLOBALS["timeGlobal"]." where ".( $id_user ? " id_user = ".$id_user." " : " name_user='".$name_user."' ");
      $q_result = db_work::query($db_query);
     }
   
  }

код curl

<?php

$url = "http://www.sait.ru/registr/enter/";
$referer = "http://www.cat.hr00.ru/";
$user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
$post = "name_user=admin&password_user=123456sa&memory_authoriz=on&submit_avtoriz=Войти&control_avtoriz=send_avtoriz";
$header [] = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
$header [] = "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8";
$header [] = "Accept-Charset: Windows-1251, utf-8, *;q=0.1";
$header [] = "Accept-Encoding: deflate, identity, *;q=0";


$user_cookie = "cookies.txt";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
//curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
//curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);
curl_close($ch);

echo $result;

?>

Источник: https://ru.stackoverflow.com/questions/473438/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-curl-php

Share

Тебе может это понравится...