Hei, i denne opplæringen oppdaterer vi vår Twitter-status via "Twitter API" ved hjelp av CodeIgniter. Jeg anbefaler at du følger trinn for trinn, i stedet for å glosse over opplæringen. La oss grave inn!
Først må vi redigere noen standardinnstillinger i CI config-delen.
Åpne Systemet / applikasjon / konfig / autoload.php og rediger følgende fra:
$ autoload ['libraries'] = array (");
til:
$ autoload ['libraries'] = array ('database');
Dette vil autoload databasen. Deretter åpne database.php og rediger databasetilkoblingsinnstillingen - navnet på
din database, bruker og passord. Som navn skal vi bruke ci_twitter_api.
Nå åpen config.php og endre base_url til CI-mappen din. Min mappe er kalt twitter_api.
I den mappen er min system mappe. Så min base_url vil være:
$ config ['base_url'] = "http: // localhost / ci / twitter_api";
Fordi vi skal jobbe med en database, trenger vi noen data for å leke med. Åpen phpmyadmin eller din
favoritt database management verktøy og opprette en ny database kalt ci_twitter_api. Nå skal vi sette opp en
nytt bord ved hjelp av følgende SQL-spørring, men oppmerksomhet, bruk ditt twitter brukernavn og passord legitimasjon.
CREATE TABLE IF NOT EXISTS 'accounts' ('id' int (11) IKKE NULL AUTO_INCREMENT, 'brukernavn' varchar (120) IKKE NULL, 'passord' varchar (32) IKKE NULL, 'aktiv' 'last_message' varchar (140) IKKE NULL, PRIMARY KEY ('id')) MOTOR = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 3; INSERT INTO 'kontoer' ('id', 'brukernavn', 'passord', 'aktivt', 'last_message') verdier (1, 'DITT BRUKERNAVN','DITT PASSORD', 1,' Ingen melding sendt. ');
Klikk på OK knappen på høyre side og spørringen skal behandles. Nå din struktur for bordet
kontoer bør se ut som bildet nedenfor.
Gå til system / applikasjon / modeller og opprett en ny fil som heter twitter_model.php.
Først vil vi erklære to globale variabler øverst.
var $ accounts_table = 'kontoer'; var $ update_url = 'http://twitter.com/statuses/update.xml';
Så $ accounts_table refererer til bordet vi opprettet like før, og $ update_url er nettadressen vi skal bruke
for å oppdatere vår status. Hvis Twitter endrer sin oppdateringsadresse, trenger du bare å redigere den en gang her i stedet for hver gang den brukes i koden.
Nå skal vi lage vår første metode som bare vil returnere den aktive brukerkontoen som er lagret i databasen,
basert på raden aktiv og verdi 1. Jeg har lagt til dette fordi noen mennesker har to eller flere Twitter
kontoer.
klasse Twitter_model utvider modell // får aktiv twitter-konto fra databasen, etter rad aktiv = 1 funksjon getActiveAccount () return $ this-> db-> get_where ($ this-> accounts_table, array ('active' => ' 1' )) -> p ();
Vi bruker ganske enkelt aktive poster
for å hente den aktive kontoen og returnere den berørte raden.
Neste skritt skal vi bygge hovedmetoden, den Oppdater metode. Dette vil bruke vår
brukernavn, passord og selvfølgelig meldingen vi vil sende og oppdatere vår status på Twitter. Bortsett fra det,
det vil tolke HTTP_CODE som returneres av Twitter for å fortelle oss om statusen ble oppdatert
vellykket eller ikke.
// oppdater twitter status og siste melding om suksess funksjon update_status ($ brukernavn, $ passord, $ melding) $ ch = curl_init ($ this-> update_url); curl_setopt ($ ch, CURLOPT_POST, 1); curl_setopt ($ ch, CURLOPT_POSTFIELDS, 'status ='. urlencode ($ melding)); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_USERPWD, $ brukernavn. ':'. $ passord); curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // Hvis vi var vellykkede, må vi oppdatere vår siste melding hvis ($ httpcode == '200') $ this-> db-> hvor ('aktiv', '1'); $ this-> db-> update ($ this-> accounts_table, array ('last_message' => $ melding)); returnere SANT; ellers returnere FALSE;
Ved første visning kan koden ovenfor se litt komplisert ut, men det er ikke så vanskelig å forstå. Den viktigste delen er
at vi bruker cURL til å kommunisere med Twitter. Det er veldig bra
bibliotek som tillater oss å sende og mottaHTTP POST data fra Twitter.
Nå da curl_init initierer en cURL-økt og tar URL-adressen som en parameter - i vårt tilfelle statusoppdateringen
URL fra Twitter API.
Med curl_setopt Vi stiller noen nødvendige alternativer for cURL-overføringen.
curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // Hvis vi var vellykkede, må vi oppdatere vår siste melding hvis ($ httpcode == '200') $ this-> db-> hvor ('aktiv', '1'); $ this-> db-> update ($ this-> accounts_table, array ('last_message' => $ melding)); returnere SANT; ellers returnere FALSE;
I denne delen utfører vi overføringen med curl_exec () og hente den returnerte HTTP_CODE
ved hjelp av curl_getinfo (CURLINFO_HTTP_CODE). Dette HTTP_CODE forteller oss om statusoppdateringen var fullført eller ikke.
Koden '200' betyr at den fungerte og oppdateringen ble gjort. Du kan se en komplett liste over HTTP-statuskoder
her.
Hvis vi får '200' returnert av Twitter, sender vi en forespørsel til vår database som oppdaterer vår last_message rad, og til slutt
vi returnerer EKTE. Hvis 200 ikke returneres, returnerer vi rett og slett FALSK.
For å fullføre vår twitter_model Vi vil lage en siste metode som vil få siste melding vi sendte. Vi trenger
Denne metoden fordi vi viser vår siste melding i en visning.
// få siste_meldingen, etter rad aktiv = 1 funksjon getLastMessage () $ this-> db-> select ('last_message'); $ last_message = $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) -> rad () -> last_message; returner htmlspecialchars ($ last_message);
Denne metoden er ganske enkel. Det velger last_message rad fra vår aktive konto og returnerer den
konvertert med htmlspecialchars til HTML-enheter.
Våre twitter_model.php nå ser slik ut:
klassen Twitter_model utvider modell var $ accounts_table = 'accounts'; var $ update_url = 'http://twitter.com/statuses/update.xml'; // få aktiv twitter-konto fra databasen, etter rad aktiv = 1 funksjon getActiveAccount () return $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) > p (); // oppdater twitter status og siste melding om suksess funksjon update_status ($ brukernavn, $ passord, $ melding) $ ch = curl_init ($ this-> update_url); curl_setopt ($ ch, CURLOPT_POST, 1); curl_setopt ($ ch, CURLOPT_POSTFIELDS, 'status ='. urlencode ($ melding)); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_USERPWD, $ brukernavn. ':'. $ passord); curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // Hvis vi var vellykkede, må vi oppdatere vår siste melding hvis ($ httpcode == '200') $ this-> db-> hvor ('aktiv', '1'); $ this-> db-> update ($ this-> accounts_table, array ('last_message' => $ melding)); returnere SANT; ellers returnere FALSE; // få siste_meldingen, etter rad aktiv = 1 funksjon getLastMessage () $ this-> db-> select ('last_message'); $ last_message = $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) -> rad () -> last_message; returner htmlspecialchars ($ last_message);
Gå nå til system / applikasjon / kontrollører og opprett en ny fil som heter twitter.php.
La oss legge til noen linjer:
klasse Twitter utvider Controller funksjon Twitter () foreldre :: Controller (); $ Dette-> last> modell ( 'twitter_model');
Dette er en enkel CI-konstruktør som laster våre twitter_model. Så det vil være tilgjengelig for oss i hele kontrolleren.
Nå kommer indeks () metode.
funksjonsindeks () $ data ['heading'] = 'Hei, send en tweet!'; $ data ['last_message'] = $ this-> twitter_model-> getLastMessage (); $ data ['active_user'] = $ this-> twitter_model-> getActiveAccount () -> brukernavn; $ this-> load-> view ('header', $ data); $ Dette-> last> view ( 'index'); $ Dette-> last> view ( 'bunntekst');
Vi sender informasjon som litt tekst, vår siste melding og brukernavnet til den aktive brukeren til $ data matrise.
Takk til vår twitter_model Det er en cinch å ta tak i den siste meldingen og det aktive brukernavnet. I hvert fall legger vi inn noen
visninger som vi vil skape etter at vi har fullført kontrollen vår. La oss bygge Oppdater metode.
// oppdatering av statusen vår på twitter (ny melding) funksjonoppdatering () hvis ($ dette-> input-> post ('send')) $ this-> load-> library ('form_validation'); $ Dette-> form_validation-> set_error_delimiters ('',''); $ this-> form_validation-> set_rules ('message', 'Message', 'trim | required | min_length [5] | max_length [140]'); hvis ($ this-> form_validation-> run () == FALSE) $ this-> index (); ellers $ message = $ this-> input-> post ('message'); // få useraccount data $ account = $ this-> twitter_model-> getActiveAccount (); $ brukernavn = $ konto-> brukernavn; $ password = $ account-> passord; // send en tweet hvis ($ this-> twitter_model-> update_status ($ brukernavn, $ passord, $ melding)) omdirigere ('twitter'); else $ data ['error'] = 'Det oppsto en feil mens du oppdaterte statusen din'; $ this-> load-> view ('header', $ data); $ Dette-> last> view ( 'feil'); $ Dette-> last> view ( 'bunntekst');
Dette kan være forvirrende igjen, men vi vil gjennomgå det delvis.
hvis ($ this-> input-> post ('submit')) $ this-> load-> bibliotek ('form_validation'); $ Dette-> form_validation-> set_error_delimiters ('',''); $ this-> form_validation-> set_rules ('message', 'Message', 'trim | required | min_length [5] | max_length [140]'); hvis ($ this-> form_validation-> run () == FALSE) $ this-> index ();
Med $ Dette-> input-> innlegget ( 'submit') Vi kontrollerer om skjemaet ble sendt - som vi vil lage senere i hovedvisningen
fil. Deretter laster vi inn form_validation bibliotek fordi vi vil sikre at visse innganger krever noen regler,
som et minimum og maksimal lengde på 5 og 140 tegn. I tillegg trimmer vi av hvite rom med trim og
setter feltet som nødvendig fordi vi ikke trenger en tom melding. Funksjonen set_rules tar som den første parameteren,
navnet fra feltet, vårt tilfelle budskap (som vil bli opprettet snart i visningen) og som andre parameter et menneske
navnet på dette feltet, som vil bli satt inn i feilmeldingen (vil bli gjort i visningsfilen).
Vi ringer $ Dette-> form_validation-> run (), som kan returnere EKTE eller FALSK. Hvis en regel vi satt ble ødelagt det
vil returnere FALSK og vi kaller bare vår indeks () metode. I visningen filer kalt av indeksen () metoden
Feilmeldinger vil bli vist etter at vi har opprettet visningene våre.
ellers $ message = $ this-> input-> post ('message'); // få useraccount data $ account = $ this-> twitter_model-> getActiveAccount (); $ brukernavn = $ konto-> brukernavn; $ password = $ account-> passord; // send en tweet hvis ($ this-> twitter_model-> update_status ($ brukernavn, $ passord, $ melding)) omdirigere ('twitter'); else $ data ['error'] = 'Det oppsto en feil mens du oppdaterte statusen din'; $ this-> load-> view ('header', $ data); $ Dette-> last> view ( 'feil'); $ Dette-> last> view ( 'bunntekst');
Takk til vår twitter_model, igjen er det så lett å hente brukernavn og passord av gjeldende aktive bruker.
Vi kunne også gjøre $ username = $ this-> twitter_model-> getActiveAccount () -> brukernavn men jeg tror for denne opplæringen dette er
litt lettere å forstå.
Ved hjelp av $ Dette-> twitter_model-> update_status () vi kaller metoden som vil "snakke" til Twitter. Det forteller Twitter vår
brukernavn, passord og vår melding. Hvis statusen ble oppdatert, videresender vi, ved hjelp av omdirigere () fra url hjelper.
Hvis noe var galt, satte vi en feilmelding og lastet noen visningsfiler, som vil bli opprettet i neste trinn :).
Kontrolleren ser nå slik ut:
klasse Twitter utvider Controller funksjon Twitter () foreldre :: Controller (); $ Dette-> last> modell ( 'twitter_model'); funksjonsindeks () $ data ['heading'] = 'Hei, send en tweet!'; $ data ['last_message'] = $ this-> twitter_model-> getLastMessage (); $ data ['active_user'] = $ this-> twitter_model-> getActiveAccount () -> brukernavn; $ this-> load-> view ('header', $ data); $ Dette-> last> view ( 'index'); $ Dette-> last> view ( 'bunntekst'); // oppdatering av vår status på twitter (ny melding) funksjonoppdatering () if ($ this-> input-> post ('send')) $ this-> load-> library ('form_validation'); $ Dette-> form_validation-> set_error_delimiters ('',''); $ this-> form_validation-> set_rules ('message', 'Message', 'trim | required | min_length [5] | max_length [140]'); hvis ($ this-> form_validation-> run () == FALSE) $ this-> index (); ellers $ message = $ this-> input-> post ('message'); // få useraccount data $ account = $ this-> twitter_model-> getActiveAccount (); $ brukernavn = $ konto-> brukernavn; $ password = $ account-> passord; // send en tweet hvis ($ this-> twitter_model-> update_status ($ brukernavn, $ passord, $ melding)) omdirigere ('twitter'); else $ data ['error'] = 'Det oppsto en feil mens du oppdaterte statusen din'; $ this-> load-> view ('header', $ data); $ Dette-> last> view ( 'feil'); $ Dette-> last> view ( 'bunntekst'); annet omdirigere ('twitter');
Nå skal vi lage våre visningsfiler. Gå til system / applikasjon / visninger og opprett følgende filer:
De header.php vil inneholde den grunnleggende html meta informasjonen, vår CSS link, og åpningskodene til våre viktigste divs,
#wrapper og #hoved.
Bruk Twitter API med CodeIgniter Vi bruker base_url () som vi konfigurert til å referere til vår CSS-fil, som vil bli opprettet i neste trinn.
De footer.php inneholder bare våre lukkekoder.
De index.php er hvor festen går.
( konto: )
'Update_form')); ?> 'melding', 'maxlength' => '140')); ?>
Alle variabler som brukes her, sendes gjennom indeks () metode fra vår kontroller. I tillegg til det,
vi bruker skjemahjelp å lage et enkelt html-skjema. Husk, jeg fortalte deg feilhåndteringen for
meldingsfeltet vil bli gjort her; form_error ( '-melding') gjør det magiske.
Under skjemaet viser vi den siste meldingen som er sendt av den aktive brukerens konto.
Endelig error.php vil bli brukt til en egendefinert feilfil hvis statusoppdateringen mislyktes.
For å gjøre det litt finere, vil vi legge til noe CSS. Gå til system/
og lag mappen css. På innsiden av den mappen opprettes en fil som heter style.css og sett inn
følgende kode.
/ * Tilbakestill CSS * / html, kropp, div, span, objekt, h1, h2, h3, h4, h5, h6, p, blockquote, pre, en, adresse, kode, img, liten, sterk, dl, dt, dd, ol, ul, li, feltsett, form, label margin: 0; polstring: 0; grense: 0; oversikt: 0; skriftstørrelse: 100%; vertikaljustering: basislinje; bakgrunn: gjennomsiktig; kropp linjehøyde: 1,5; font-familie: Arial, sans-serif; margin: 0; ol, ul, li listestil: none; list-style-type: none; .clear clear: both; / * DEFAULTS * / h3 color: # 35CCFF; font-size: 20 piksler; / * CUSTOM * / #wrapper width: 900px; margin: 0 auto; / * main * / #main margin-top: 50px; #main h3 span font-size: 14px; farge: #cccccc; #main h3 a color: #cccccc; / * form * / #update_form input width: 888px; padding: 5 px; grense: 1px solid # d3d3d3; display: block; #update_form input [type = "submit"] bredde: auto; margin-top: 10px; background-color: # 000000 ;; border: none; Farge: hvit; font-size: 12 piksler; font-vekt: bold; Markøren: pekeren; padding: 3px; div.error display: block; background-color: # FB8A8A; grense: 1px solid # FF3B3B; padding: 5 px; color: # ffffff; bredde: 50%; margin-bottom: 30px; font-vekt: bold; margin: 0 auto 10px auto; tekst-Justering: center; / * siste melding * / #last_message fieldset border: 1px dashed # d3d3d3; padding: 5 px; margin-top: 30px; #last_message feltet sett p padding: 5px; font-size: 18 piksler; font-vekt: normal; #last_message legend span font-size: 12px;
Jeg bruker Eric Meyers CSS tilbakestill for å nøytralisere visningen på alle nettlesere. Din søknad bør nå likne bildet nedenfor.
La oss teste vår friske applikasjon. Vi slipper en melding og trykker på Oppdater knapp!
Etter oppdateringen ble gjort:
La oss ta en titt på Twitter :)
hvis vi bryter en skjema validering regel ved å prøve å sende en tom melding:
Jeg håper virkelig at jeg hjalp deg litt med å lære CodeIgniter og hvordan du bruker den store Twitter API! Ville du ha gjort noe annerledes? I så fall, gi oss beskjed!