Jump to content
php.lv forumi

Steve

Reģistrētie lietotāji
  • Posts

    6
  • Joined

  • Last visited

Posts posted by Steve

  1. Labdien, es gribētu uzzināt kā lai es dabūju lietotāju datus no Draugiem API.

     

    Es esmu ticis tik tālu: http://www.draugiem....ja-autorizacija (3.1. Lietotāja autorizācija un profila informācijas iegūšana (pieprasījums authorize)

     

    Tur ir skaidri un gaiši rakstīts, ka pieprasījuma parametri ir:

    action: authorize

    app: aplikācijas API atslēga (32 simboli)

    code: dr_auth_code vērtība, kas tika saņemta kā GET parametrs pēc lietotāja pieteikšanās (draugiem.lv Pases aplikācijām) vai atverot aplikācijas iframe (integrētajām aplikācijām)

     

     

    Man ir gan aplikācijas API atslēga, gan dr_auth_code. Un veicu es šādu URL:

    string url = string.Format("http://api.draugiem.lv/authorize/?app=5e74cf34733eada6397320b0fba04df8&code={0}", code);
    Response: No redirect URL specified.
    

     

    Okey, dokumentācijā nekas par tādu nav rakstīts, pielikšu

    string url = string.Format("http://api.draugiem.lv/authorize/?app=5e74cf34733eada6397320b0fba04df8&code={0}&redirect=http://local.app.com:5000/connect/draugiem", code);
    Response: No auth hash specified
    

     

    Kaut ko es te nesaprotu, dokumentācijā rakstīts, ka man ir jāsūta uz http://api.draugiem.lv/authorize/ konkrēti divi GET (pat nav rakstīs, ka GET, bet mēģināju gan GET, gan POST) parametri pēc kuriem man atgriezīs lietotāja API atslēgu. Bet realitātē nekas no tā, kas tur rakstīts nestrādā. Es ceru, ka es vienkārši kaut kur nokļūdījos totāli tāpēc lūdzu palīdzību te. Draugiem API PHP bibleotēkas es izmantot nevaru, jo neizmantoju PHP, domāju lielai daļai bija pieredze ar Draugiem API un man varēsiet izskaidrot kur es kļūdos (vai kur kļūdās dokumentācija).

  2. gadījumā ja ok

    return true; un bez return

    gadījumā ja kļūda

    echo $e->getMessage();

     

    labāk būtu vai nu atgriezt true/false, vai atļaut metodei izmest exceptionu, vai ..kaut vai bez return un ar echo tur kur vajag ko userim paziņot, bet nejaukt kādā veidā metode ko atgriež vai kādu output'u veido.

    True DAT! Vienkārši kamēr es testēju es atgriežu to MSG, vēlāk, kad nogriezīšu iekš PDO warningus 'n shit es returnošu false tajā vietā. Vismaz tāds ir pagaidām plāns

  3. Ja nav žēl, lūdzu parādi, ko beigās būsi izveidojis. Gribu saprast Tavu domu gājienu.

    Jā, bez problēmām.

     

    Šī ir funkcija kategoriju klasē kura pievieno kategoriju, bet arī izmantojot logu klasi pievieno jaunu ierakstu logos.

        public static function Add($catName, $catDescr = "", $catImgURL = "", $catSubLevel = 0, $catSubID = 0)
       {
           try
           {
               $DBH = DBAccess::getDBH();
    
               //Preparing our SQL Query
               $values = array($catName, $catDescr, $catImgURL, $catSubLevel, $catSubID);
               $STH = $DBH->prepare("INSERT INTO cat (catName, catDescr, catImg, catSubLevel, catSubID)
                                     VALUES (?, ?, ?, ?, ?)");
    
               //Excecuting SQL Query
               $STH->execute($values);
    
               //Cleaning up
               $DBH = null;
               $STH = null;
    
               //Writing down log <-----------------------------
               include "mLog.php";
               Log::Add("Added category " . $catName);
    
               //Returning true for user to know that it was successful
               return true;
           }
           catch (PDOException $e)
           {
               //If we have error, we show it (it will be shown only if debug mode is enabled in db_config.php
               echo $e->getMessage();
           }
       }

     

    Šī ir funkcija, kas pievieno jaunu ierakstu logos. Šo funkciju izmanto ļoti bieži citos php failos...

        public static function Add($action)
       {
           try
           {
               $DBH = DBAccess::getDBH();
    
               //Getting user IP
               $ip = $_SERVER['REMOTE_ADDR'];
    
               //Getting time
               $time = date('Y-m-d H:i:s');
    
               //Preparing our SQL Query
               $values = array($ip, $action, $time);
               $STH = $DBH->prepare("INSERT INTO log (ip, action, time)
                                     VALUES (?, ?, ?)");
    
               //Excecuting SQL Query
               $STH->execute($values);
    
    		//Cleaning up
    		$DBH = null;
    		$STH = null;
           }
           catch (PDOException $e)
           {
               echo $e->getMessage();
           }
       }

     

    Kā redzi izpilda darbības ar datu bāzēm iekš darbībām ar datubāzēm, ja es netaisu singletonu man rodas scope errori, ja es visu laiku inkludēju dbaccess failu kurš taisa $DBH tad man taisās ļoti daudzas instances, kas nav īpaši produktīvi. Šis ir vienīgais risinājums kuru es zinu šai problēmai :)

  4. Un tev tiešām šeit vajadzīga abstrakta klase? :)

     

    Nu jā, jo man ir tā, ka vairākas klases darbojas ar DB un piem kad viena klase jau darbojas ar DB izsauc otru klasi, kura arī darbojas ar DB un tad rodas scope errori. Cik noprotu šis ir optimālākais risinājums...

  5. Pieņemsim man ir šāda singletona klase kura man vajadzīga PDO MySQL datubāzes izmantošanai, tas ir tāpēc lai netaisītu lieki pārāk daudz PDO objektus.

     

     

    Man izsauc to, ka $DBH nav nemaz nodefinēts šajā klasē, tas nozīmē, ka tas visu laiku ir = null.

    <?php
    
    abstract class Singleton
    {
       protected $DBH;
    
       public static function getInstance()
       {
    
           if ($DBH == null)
           {
               $DBH = new static();
           }
    
           return $DBH;
       }
    
    }

     

    Ja es daru šādi man tā notice nerādās, bet tad nosacījums iekš tā IF'a vienmēr izpildās, pareizi?

    <?php
    
    abstract class Singleton
    {
       protected $DBH;
    
       public static function getInstance()
       {
           $DBH = "";
    
           if ($DBH == null)
           {
               $DBH = new static();
           }
    
           return $DBH;
       }
    
    }

     

    Tad varbūt tas IF's nemaz tur nav vajadzīgs un es varu šo klasi atstāt šādu?

    <?php
    
    abstract class Singleton
    {
    
       protected $DBH;
    
       public static function getInstance()
       {
    
           $DBH = new static();
           return $DBH;
       }
    
    }

×
×
  • Create New...