Cum să vă actualizați starea Twitter cu CodeIgniter

Bună, în acest tutorial vom actualiza statutul nostru de twitter prin intermediul "Twitter API" folosind CodeIgniter. Vă recomandăm să urmați pas cu pas mai degrabă decât să luați în considerare acest tutorial. Hai să intrăm!

Detalii tutoriale

  • Program: CodeIgniter PHP Framework
  • Versiune: 1.7.1
  • Dificultate: Avansat
  • Durata estimată de finalizare: 30 de minute

1. Configurarea CodeIgniter

Mai întâi trebuie să editați câteva setări implicite în secțiunea Configurare CI.

Deschide Sistem / aplicație / config / autoload.php și editați următoarele:

$ autoload ['biblioteci'] = array (");

la:

$ autoload ['biblioteci'] = array ("baza de date");

Aceasta va autolozi baza de date. În continuare, deschideți-vă database.php și modificați setarea conexiunii bazei de date - numele
baza de date, utilizatorul și parola. Ca nume vom folosi ci_twitter_api.

Acum deschis config.php și schimbați base_url în dosarul dvs. CI. Dosarul meu este chemat twitter_api.
În acel dosar este al meu sistem pliant. Deci base_url meu va fi:

$ config ['base_url'] = "http: // localhost / ci / twitter_api";

2. Completarea bazei de date

Pentru că vom lucra cu o bază de date, vom avea nevoie de niște date cu care să ne jucăm. Deschis phpMyAdmin sau al tău
instrumentul favorit de gestionare a bazelor de date și crearea unei noi baze de date numite ci_twitter_api. Acum vom înființa o
tabel nou utilizând următoarea interogare SQL, dar Atenţie, utilizați ID-urile dvs. de utilizator și parola pentru Twitter.

CREATE TABLE DACA NU EXISTĂ "conturi" ('id' int (11) NOT NULL AUTO_INCREMENT, 'username' varchar (120) NOT NULL, 'parola' varchar (32) NOT NULL, 'last_message' varchar (140) NOT NULL, PRIMARY KEY ('id')) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 3; INSERT IN 'conturi' ('id', 'username', 'password', 'active', 'last_message') VALUES (1,NUME DE UTILIZATOR","PAROLA DVS", 1," Niciun mesaj nu a fost trimis ");

Apasă pe O.K butonul din partea dreaptă și interogarea trebuie procesată. Acum, structura ta pentru masă
conturi ar trebui să arate asemănător cu imaginea de mai jos.

3. Construirea modelului

Mergi la sistem / aplicatie / modele și să creați un nou fișier numit twitter_model.php.

Mai întâi, vom declara două variabile globale în partea de sus.

var $ accounts_table = 'conturi'; var $ actualizare_url = 'http://twitter.com/statuses/update.xml';

Asa de $ accounts_table se referă la tabelul pe care l-am creat chiar înainte, și $ update_url este urlul pe care îl vom folosi
pentru a actualiza statutul nostru. Dacă Twitter schimba adresa URL de actualizare, trebuie doar să îl editați o dată aici în loc de fiecare dată când este folosit în cod.

Acum vom crea prima noastră metodă care va returna pur și simplu contul de utilizator activ stocat în baza de date,
bazat pe rând activ și valoarea 1. Am adăugat acest lucru pentru că unii oameni au două sau mai multe Twitter-uri
conturi.

 clasa Twitter_model extinde modelul // obține contul activ twitter din baza de date, prin rândul activ = funcția getActiveAccount () return $ this-> db-> get_where ($ this-> accounts_table, array ('active' => 1' )) -> rând (); 

Pur și simplu folosim înregistrări active
pentru a prelua contul activ și pentru a returna rândul afectat.

Următorul pas, vom construi principala metodă, Actualizați metodă. Acest lucru va folosi pe noi
numele de utilizator, parola și, bineînțeles, mesajul pe care dorim să-l trimitem și actualizarea stării noastre pe Twitter. In afara de,
aceasta va interpreta HTTP_CODE care este returnat de Twitter pentru a ne spune dacă statutul a fost actualizat
cu succes sau nu.

// actualizare starea twitter și ultimul mesaj pe funcția de succes update_status ($ username, $ password, $ message) $ ch = curl_init ($ this-> update_url); curl_setopt ($ ch, CURLOPT_POST, 1); curl_setopt ($ ch, CURLOPT_POSTFIELDS, 'status =', urlencode ($ mesaj)); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_USERPWD, $ nume de utilizator. ':'. $ password); curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // dacă am reușit, trebuie să ne actualizăm ultimul mesaj dacă ($ httpcode == '200') $ this-> db-> unde ('activ', '1'); $ this-> db-> actualizare ($ this-> accounts_table, array ('last_message' => $ message)); returnează TRUE;  altceva return FALSE; 

La prima vedere, codul de mai sus poate părea puțin complicat, dar nu este greu de înțeles. Cea mai importantă parte este
că folosim cURL pentru a comunica cu Twitter. Este un minunat
bibliotecă care ne permite să trimitem și să primimHTTP POST date de pe Twitter.

Și acum curl_init inițializează o sesiune cURL și ia adresa URL ca parametru - în cazul nostru actualizarea stării
Adresa URL din Twitter API.

Cu curl_setopt am stabilit câteva opțiuni necesare pentru transferul cURL.

  • CURLOPT_POST: Am setat acest lucru la '1' pentru a folosi HTTP POST, care este la fel ca în formulele HTML.
  • CURLOPT_POSTFIELDS: Această opțiune se potrivește cu Date POST pe care dorim să o trimitem. În cazul nostru
    'status =' și al nostru mesaj. Avem nevoie să urlencode mesajul pentru a putea folosi special
    caractere ca „% & /“ .
  • CURLOPT_RETURNTRANSFER: Este important pentru noi să setăm acest lucru la "1" deoarece va returna transferul
    ca un șir. Acest șir va spune mai târziu dacă statutul a fost actualizat cu succes sau nu.
  • CURLOPT_USERPWD: Această opțiune este pentru autentificare. Pur și simplu ia numele de utilizator și parola de Twitter
    în format nume utilizator, parola.
curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // dacă am reușit, trebuie să ne actualizăm ultimul mesaj dacă ($ httpcode == '200') $ this-> db-> unde ('activ', '1'); $ this-> db-> actualizare ($ this-> accounts_table, array ('last_message' => $ message)); returnează TRUE;  altceva return FALSE; 

În această parte vom executa transferul cu curl_exec () și recuperarea returnată HTTP_CODE
utilizând curl_getinfo (CURLINFO_HTTP_CODE). Acest HTTP_CODE ne spune dacă actualizarea stadiului a fost finalizată sau nu.
Codul "200" înseamnă că a funcționat și actualizarea a fost făcută. Puteți vedea o listă completă a codurilor de stare HTTP
aici.

Dacă vom primi "200" returnate prin Twitter, trimitem o interogare către baza noastră de date care actualizează rândul nostru de ultimul mesaj și, în sfârșit
ne intoarcem ADEVĂRAT. Dacă 200 nu este returnat, pur și simplu ne întoarcem FALS.

Pentru a ne termina twitter_model vom crea o ultimă metodă care va primi ultimul mesaj noi am trimis. Avem nevoie
această metodă, deoarece vom afișa cel mai recent mesaj dintr-o vizualizare.

// obțineți ultimul mesaj, prin rând activ = 1 funcție getLastMessage () $ this-> db-> select ('last_message'); $ last_message = $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) -> rând () -> last_message; retur htmlspecialchars ($ last_message); 

Această metodă este destul de simplă. Selectează ultimul mesaj rând din contul nostru activ și îl returnează
convertit cu htmlspecialchars la entități HTML.
Al nostru twitter_model.php acum arată astfel:

 clasa Twitter_model extinde modelul var $ accounts_table = 'conturile'; var $ actualizare_url = 'http://twitter.com/statuses/update.xml'; // a lua contul twitter activ din baza de date, prin rândul activ = funcția getActiveAccount () return $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1' > rând ();  // actualizarea statusului twitter și a ultimului mesaj pe funcția de succes update_status ($ username, $ password, $ message) $ ch = curl_init ($ this-> update_url); curl_setopt ($ ch, CURLOPT_POST, 1); curl_setopt ($ ch, CURLOPT_POSTFIELDS, 'status =', urlencode ($ mesaj)); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_USERPWD, $ nume de utilizator. ':'. $ password); curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // dacă am reușit, trebuie să ne actualizăm ultimul mesaj dacă ($ httpcode == '200') $ this-> db-> unde ('activ', '1'); $ this-> db-> actualizare ($ this-> accounts_table, array ('last_message' => $ message)); returnează TRUE;  altceva return FALSE;  // a obține ultimul mesaj, de rând activ = 1 funcție getLastMessage () $ this-> db-> select ('last_message'); $ last_message = $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) -> rând () -> last_message; retur htmlspecialchars ($ last_message); 

4. Construirea controlerului

Acum du-te la sistem / aplicație / controlori și să creați un nou fișier numit twitter.php.
Să adăugăm câteva rânduri:

clasa Twitter extinde Controller function Twitter () parent :: Controller (); $ This-> a sarcinii> modelul ( 'twitter_model'); 

Acesta este un simplu constructor CI care ne încarcă twitter_model. Deci, aceasta va fi disponibilă în întregul controler.
Acum vine index() metodă.

indexul funcției () $ data ['heading'] = 'Bună ziua, trimiteți un tweet!'; $ date ['last_message'] = $ acest-> twitter_model-> getLastMessage (); $ data ['active_user'] = $ acest-> twitter_model-> getActiveAccount () -> numele de utilizator; $ this-> load-> view ('header', $ date); $ This-> a sarcinii> vedere ( 'index'); $ This-> a sarcinii> vizualizare ( 'subsol'); 

Transmitem informații cum ar fi textul, ultimul mesaj și numele de utilizator al utilizatorului activ la $ date mulțime.
Mulțumită noastră twitter_model este un cinch pentru a apuca ultimul mesaj și numele de utilizator activ. Cel puțin încărcăm niște
vizualizari pe care o vom crea după ce terminăm controlorul nostru. Să construim Actualizați metodă.

// actualizarea stării noastre pe twitter (new message) actualizare funcție () if ($ this-> input-> post ('submit')) $ this-> load-> library ('form_validation'); $ This-> form_validation-> set_error_delimiters (“
","
„); $ this-> form_validation-> set_rules ('message', 'Message', 'trim | required | min_length [5] | max_length [140]'); dacă ($ this-> form_validation-> run () == FALSE) $ this-> index (); altceva $ message = $ this-> input-> post ('message'); // a obține date de utilizator useraccount $ account = $ this-> twitter_model-> getActiveAccount (); $ username = $ account-> nume de utilizator; $ password = $ cont-> parola; // trimite un tweet dacă ($ this-> twitter_model-> update_status ($ username, $ password, $ message)) redirect ("twitter"); altceva $ data ['error'] = 'A apărut o eroare în timpul actualizării stării dvs.'; $ this-> load-> view ('header', $ date); $ This-> a sarcinii> vedere ( 'eroare'); $ This-> a sarcinii> vizualizare ( 'subsol');

Aceasta poate fi din nou confuză, dar vom trece prin ea parțial.

dacă ($ this-> input-> post ('submit')) $ this-> load-> bibliotecă ('form_validation'); $ This-> form_validation-> set_error_delimiters (“
","
„); $ this-> form_validation-> set_rules ('message', 'Message', 'trim | required | min_length [5] | max_length [140]'); dacă ($ this-> form_validation-> run () == FALSE) $ this-> index ();

Cu $ This-> introducere de text> post ( 'submit') verificăm dacă formularul a fost trimis - pe care îl vom crea mai târziu în viziunea noastră principală
fişier. După aceea, încărcăm form_validation deoarece dorim să ne asigurăm că anumite intrări necesită anumite reguli,
ca o lungime minimă și maximă de 5 și 140 de caractere. În plus, eliminăm spațiul alb cu tunde și
setarea câmpului ca necesar pentru că nu avem nevoie de un mesaj gol. Functia set_rules ca primul parametru,
numele câmpului, cazul nostru mesaj (care va fi creat în curând în vedere) și ca al doilea parametru un om
numele acestui câmp, care va fi inserat în mesajul de eroare (se va face în fișierul de vizualizare).

Noi sunam $ This-> form_validation-> run (), care se pot întoarce ADEVĂRAT sau FALS. Dacă o regulă pe care am stabilit-o a fost spartă
va reveni FALS și pur și simplu sunăm pe noi index() metodă. În fișierele de vizualizare numite de metoda index ()
mesajele de eroare vor fi afișate după ce am creat vederile noastre.

altceva $ message = $ this-> input-> post ('mesaj'); // a obține date de utilizator useraccount $ account = $ this-> twitter_model-> getActiveAccount (); $ username = $ account-> nume de utilizator; $ password = $ cont-> parola; // trimite un tweet dacă ($ this-> twitter_model-> update_status ($ username, $ password, $ message)) redirect ("twitter");  altceva $ data ['error'] = 'A apărut o eroare în timpul actualizării stării dvs.'; $ this-> load-> view ('header', $ date); $ This-> a sarcinii> vedere ( 'eroare'); $ This-> a sarcinii> vizualizare ( 'subsol'); 

Mulțumită noastră twitter_model, din nou, este atât de ușor de preluat nume de utilizator si parola din utilizatorul curent activ.
Am putea, de asemenea, facem $ username = $ this-> twitter_model-> getActiveAccount () -> numele de utilizator dar cred că pentru acest tutorial acest lucru este
un pic mai ușor de înțeles.

Utilizarea $ This-> twitter_model-> update_status () numim metoda care va "vorbi" cu Twitter. Acesta îi spune lui Twitter
nume de utilizator, parola și mesajul nostru. Dacă statutul a fost actualizat cu succes, redirecționăm, utilizând redirecţiona() de la url ajutor.

Dacă s-ar întâmpla ceva în neregulă, am setat un mesaj de eroare și încărcați câteva fișiere de vizualizare, care vor fi create în următoarea etapă :).
Controlerul arată în felul următor:

 clasa Twitter extinde Controller function Twitter () parent :: Controller (); $ This-> a sarcinii> modelul ( 'twitter_model');  indexul funcției () $ data ['heading'] = 'Salut, trimiteți un tweet!'; $ date ['last_message'] = $ acest-> twitter_model-> getLastMessage (); $ data ['active_user'] = $ acest-> twitter_model-> getActiveAccount () -> numele de utilizator; $ this-> load-> view ('header', $ date); $ This-> a sarcinii> vedere ( 'index'); $ This-> a sarcinii> vizualizare ( 'subsol');  // actualizarea statusului nostru pe twitter (nou mesaj) update function () if ($ this-> input-> post ('submit')) $ this-> load-> biblioteca ('form_validation'); $ This-> form_validation-> set_error_delimiters (“
","
„); $ this-> form_validation-> set_rules ('message', 'Message', 'trim | required | min_length [5] | max_length [140]'); dacă ($ this-> form_validation-> run () == FALSE) $ this-> index (); altceva $ message = $ this-> input-> post ('message'); // a obține date de utilizator useraccount $ account = $ this-> twitter_model-> getActiveAccount (); $ username = $ account-> nume de utilizator; $ password = $ cont-> parola; // trimite un tweet dacă ($ this-> twitter_model-> update_status ($ username, $ password, $ message)) redirect ("twitter"); altceva $ data ['error'] = 'A apărut o eroare în timpul actualizării stării dvs.'; $ this-> load-> view ('header', $ date); $ This-> a sarcinii> vedere ( 'eroare'); $ This-> a sarcinii> vizualizare ( 'subsol'); altceva redirect ("twitter");

5. Crearea vederilor

Acum vom crea fișierele noastre de vizualizare. Mergi la sistem / aplicație / vizualizări și creați următoarele fișiere:

  • header.php
  • footer.php
  • index.php
  • error.php

header.php va conține informațiile de bază html meta, link-ul nostru CSS și etichetele de deschidere ale divs-urilor principale,
#wrapper și #principal.

      Folosind API-ul Twitter cu CodeIgniter   

Noi folosim base_url () pe care am configurat-o pentru a face referire la fișierul nostru CSS, care va fi creat în pasul următor.

footer.php pur și simplu conține etichetele noastre de închidere.

 

index.php este locul unde merge partidul.

 

(cont: )

'Update_form')); ?> 'mesaj', 'maxlength' => '140')); ?>
Ultimul trimis de

Toate variabilele utilizate aici sunt transmise prin index() de la controlorul nostru. În plus față de,
noi folosim formează ajutor pentru a crea un simplu format html. Amintiți-vă, v-am spus de manipulare a erorilor pentru
campul de mesaje se va face aici; form_error ( 'mesaj') face acea magie.

Sub formularul în care afișăm ultimul mesaj trimis de contul utilizatorului activ.

În cele din urmă error.php va fi folosit pentru un fișier de eroare personalizat în cazul în care actualizarea de stare a fost nereușită.

 

6. Adăugarea unor CSS

Pentru a face un pic mai frumos, vom adăuga câteva CSS. Mergi la sistem/
și creați dosarul css. În interiorul acelui dosar creați un fișier numit style.css și introduceți
următorul cod.

 / * Resetați CSS * / html, corp, div, span, obiect, h1, h2, h3, h4, h5, h6, p, blockquote, dd, ol, ul, li, câmpul, forma, eticheta marja: 0; umplutura: 0; frontieră: 0; contur: 0; font-size: 100%; aliniere verticală: linia de bază; fundal: transparent;  corp line-height: 1.5; font-family: Arial, sans-serif; margin: 0;  ol, ul, li stil: none; list-style-type: none; . clar clar: ambele;  / * DEFAULTS * / h3 culoare: # 35CCFF; font-size: 20px;  / * CUSTOM * / #wrapper lățime: 900px; marja: 0 auto;  / * principală * / #main margin-top: 50px;  #main h3 span font-size: 14px; Culoare: #cccccc;  #main h3 a culoare: #cccccc;  / * form * / #update_form intrare lățime: 888px; padding: 5px; frontieră: 1px solid # d3d3d3; display: block;  #update_form input [type = "trimite"] width: auto; margin-top: 10px; background-color: # 000000 ;; frontieră: nici una; culoare albă; font-size: 12px; font-weight: bold; cursor: pointer; padding: 3px;  div.error display: bloc; background-color: # FB8A8A; frontieră: 1px solid # FF3B3B; padding: 5px; Culoare: #FFFFFF; lățime: 50%; margin-bottom: 30px; font-weight: bold; marja: 0 auto 10px auto; text-align: center;  / * ultimul mesaj * / #last_message set de câmp border: 1px dashed # d3d3d3; padding: 5px; margin-top: 30px;  setul de câmp #last_message p padding: 5px; font-size: 18px; font-weight: normal;  spațierea legendei #last_message font-size: 12px; 

Eu folosesc resetarea CMS Eric Meyers pentru a neutraliza vizualizarea pe toate browserele. Aplicația dvs. ar trebui să se potrivească acum imaginii de mai jos.

Finala Mare

Să testăm aplicația nouă. Vom da un mesaj și apăsați pe Actualizați buton!

După actualizare a fost făcută:

Să aruncăm o privire la Twitter :)

dacă încalcăm o regulă de validare a formularului prin încercarea de a trimite un mesaj gol:

Concluzie

Sper că te-am ajutat puțin să învăț CodeIgniter și cum să folosesc marele API Twitter! Ai fi făcut ceva diferit? Dacă da, spuneți-ne!

Cod