• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private

    בקשה מימות המשיח בקשר למעבר לשרתי Private

    פורום מפתחים API
    8
    32
    792
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • מ
      ממפ @שמואל נערך לאחרונה על ידי

      @שמואל עשיתי בדיקה על אחת המחלקות ולא עובד:

      <?php
      /*================יצירת אובייקט(מופע) חדש====================*/
       
      $con = new connecting_to_yemot_api('0*********', '1212');
      /*================קבלת מספר היחידות====================*/
      $a = $con -> connecting('GetSession');
      print_r($a);
       
      /*===============================================================*/
      
      $SetSite = $_GET["SetSite"];
      	if ($SetSite == NULL) {
      	define("URL", "https://www.call2all.co.il/ym/api/");
      }
      	if ($SetSite == "private") {
      	define("URL", "https://private.call2all.co.il/ym/api/");
      }
      class BodyPost
      {
      // part "multipart/form-data"
          public static function PartPost($name, $val)
           {
               $body = 'Content-Disposition: form-data; name="' . $name . '"';
      // check instance of oFile
               if($val instanceof oFile)
                {
                    $file = $val->Name();
                    $mime = $val->Mime();
                    $cont = $val->Content();
       
                    $body .= '; filename="' . $file . '"' . "\r\n";
                    $body .= 'Content-Type: ' . $mime ."\r\n\r\n";
                    $body .= $cont."\r\n";
                } else $body .= "\r\n\r\n".$val."\r\n";
               return $body;
           }
       
          public static function Get(array $post, $delimiter = '-------------0123456789')
           {
               if(is_array($post) && !empty($post))
                {
                    $bool = true;
                    //foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
                    if($bool)
                     {
                         $ret = '';
                         foreach($post as $name=>$val)
                             $ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
                         $ret .= "--" . $delimiter . "--\r\n";
                     } else $ret = http_build_query($post);
                } else throw new \Exception('Error input param!');
               return $ret;
           }
      }
       
      class oFile
      {
           private $name;
           private $mime;
           private $content;
       
           public function __construct($name, $mime=null, $content=null)
            {
                if(is_null($content))
                 {
                     $info = pathinfo($name);
      // check is exist and readable file
                     if(!empty($info['basename']) && is_readable($name))
                      {
                          $this->name = $info['basename'];
      // get MIME
                          $this->mime = mime_content_type($name);
      // load file
                          $content = file_get_contents($name);
                          if($content!==false)
                          {
                              $this->content = $content;
                          }
                          else
                          {
                              throw new Exception('Don`t get content - "'.$name.'"');
                          }
                      }
                      else
                      {
                          throw new Exception('Error param');
                      }
                 }
                 else
                 {
                         $this->name = $name;
                         if(is_null($mime)) $mime = mime_content_type($name);
                         $this->mime = $mime;
                         $this->content = $content;
                  };
            }
       
          public function Name() { return $this->name; }
       
          public function Mime() { return $this->mime; }
       
          public function Content() { return $this->content; }
       
      }
       
      class connecting_to_yemot_api
      {
          public $token;
       
          const URL = URL;
       
          public function __construct($user_name, $password)
          {
              $body = array('username' => $user_name, 'password' => $password);
       
              $body = http_build_query($body);
       
              $opts = array('http' => array(
       
                  'method'  => 'POST',
       
                  'header'  => "Content-Type: application/x-www-form-urlencoded",
       
                  'content' => $body,
       
                  'follow_location' => false) );
       
               $context  = stream_context_create($opts);
       
               $url = self::URL.'Login';
       
                  $result = file_get_contents($url, FALSE, $context);
       
                  $result = json_decode($result);
       
                  if($result -> responseStatus == 'OK')
                  {
                      $this -> token = $result -> token;
       
                      return TRUE;
                  }
                  else
                  {
                      throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים');
                  }
          }
       
          public function __destruct()
          {
              $this -> connecting('Logout');
          }
       
          public function connecting($action, $body = array())
          {
              $delimiter = '----'.uniqid();
       
              $body['token'] = $this -> token;
       
              $body = BodyPost::Get($body, $delimiter);
       
              $opts = array('http' =>
                      array(
                          'method'  => 'POST',
                          'header'  => 'Content-Type: multipart/form-data; boundary='.$delimiter,
                          'content' => $body,
                          'follow_location' => false
                          )
                        );
              $context  = stream_context_create($opts);
       
              $url = self::URL.$action;
       
              $result = file_get_contents($url, FALSE, $context);
       
              $headers = $this -> parseHeaders($http_response_header);
       
              if($headers['Content-Type'][0] == 'application/json')
              {
                  return json_decode($result);
              }
              else
              {
                  return $result;
              }
          }
       
          private function parseHeaders($headers)
          {
              // פונקציה שמקבלת מערך של שורות הכותרות
              // הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד
       
       
              // מערך הכותרות
              $head = array();
       
              foreach( $headers as $k=>$v )
              {
                  $t = explode( ':', $v, 2 );
       
                  if( isset( $t[1] ) )
                  {
                      if($t[0] == 'Set-Cookie')
                      {
                          $CookiesArr = array();
       
                          $cookies = explode( ';', $t[1]);
       
                          foreach($cookies as $cookie)
                          {
                              $c = explode( '=', $cookie);
       
                              if( isset( $c[1] ) )
                              {
                                  $CookiesArr[ trim($c[0]) ] = trim( $c[1] );
                              }
                              else
                              {
                                  $CookiesArr[] = trim( $c[0] );
                              }
                          }
       
                          $head[ trim($t[0]) ] = $CookiesArr;
                      }
                      elseif($t[0] == 'Content-Type')
                      {
                          $arr = array();
       
                          $children = explode( ';', $t[1]);
       
                          foreach($children as $child)
                          {
                              $c = explode( '=', $child);
       
                              if( isset( $c[1] ) )
                              {
                                  $arr[ trim($c[0]) ] = trim( $c[1] );
                              }
                              else
                              {
                                  $arr[] = trim( $c[0] );
                              }
                          }
       
                          $head[ trim($t[0]) ] = $arr;
                      }
                      else
                      {
                          $head[ trim($t[0]) ] = trim( $t[1] );
                      }
                  }
                  else
                  {
                      $head[] = $v;
                      if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
                      {
                          $head['reponse_code'] = intval($out[1]);
                      }
                  }
              }
              return $head;
          }
      }
      ?>
      

      הרצתי בדפדפן את הכתובת ולא קורה כלום.
      אם אני מריץ עם המחלקה הרגילה זה עובד מצויין.

      שמואל 2 תגובות תגובה אחרונה תגובה ציטוט 0
      • שמואל
        שמואל @ממפ נערך לאחרונה על ידי

        פוסט זה נמחק!
        תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • שמואל
          שמואל @ממפ נערך לאחרונה על ידי שמואל

          @ממפ אתה לא יכול לשים את

           $con = new connecting_to_yemot_api('077777', '8888');
          

          לפני המחלקה....

          המחלקה אמורה להיות למעלה.

          לנוחות אפשר לשים אותה אפילו בקובץ נפרד

          תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • מ
            ממפ @dudu נערך לאחרונה על ידי ממפ

            @dudu מה אמור להתקבל במשתנה private כדי שהשרת יפנה אותו לכתובת הנכונה?

            D תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • D
              dudu @ממפ נערך לאחרונה על ידי

              @ממפ true

              מ תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • מ
                ממפ @dudu נערך לאחרונה על ידי

                @dudu
                יש סכוי להסבר יותר? בשרת הרגיל זה עובד.
                ניסתי לבדוק את זה על שרת פרייבט ולא עובד..
                הוספתי את זה לבדיקה (ניסיתי גם בלי זה..)

                $private = true;
                
                שמואל ש D 3 תגובות תגובה אחרונה תגובה ציטוט 0
                • שמואל
                  שמואל @ממפ נערך לאחרונה על ידי

                  @ממפ עם איזה מחלקה אתה עובד? איך קוד העתקת?

                  מ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • ש
                    שואל ברצינות @ממפ נערך לאחרונה על ידי

                    @ממפ אמר בבקשה מימות המשיח בקשר למעבר לשרתי Private:

                    @dudu
                    יש סכוי להסבר יותר? בשרת הרגיל זה עובד.
                    ניסתי לבדוק את זה על שרת פרייבט ולא עובד..
                    הוספתי את זה לבדיקה (ניסיתי גם בלי זה..)

                    $private = true;
                    

                    אם אתה מתכוון למה שאני עשיתי, אז הערך של

                    $private 
                    

                    צריך להיות www או private בהתאם לשרת

                    תגובה 1 תגובה אחרונה תגובה ציטוט 0
                    • מ
                      ממפ @שמואל נערך לאחרונה על ידי

                      @שמואל בדקתי עכשיו שוב עם מה שאתה עשית, והסתדרתי. תודה רבה.
                      באמת מעניין שעם המחלקה של מאזין נלהב זה עובד גם אם אני כותב את
                      $con = new connecting_to_yemot_api('077777', '8888');
                      בהתחלה..

                      D תגובה 1 תגובה אחרונה תגובה ציטוט 0
                      • D
                        dudu @ממפ נערך לאחרונה על ידי

                        @ממפ נראה לי שאתה יכול לשים את זה לפני המחלקה, אבל לא לפני התוספת של @שמואל כי מה שמחוץ למחלקה או לפונקציה הוא מבצע לפי הסדר, ולכן אתה צריך לעשות את זה אחרי ההגדרה של שורת הכתובת.

                        תגובה 1 תגובה אחרונה תגובה ציטוט 1
                        • D
                          dudu @ממפ נערך לאחרונה על ידי

                          @ממפ אתה אמור פשוט לכתוב ככה:

                          $con = new connecting_to_yemot_api('077777', '8888', true);
                          
                          תגובה 1 תגובה אחרונה תגובה ציטוט 0
                          • פוסט ראשון
                            פוסט אחרון