Hoe u uw Twitter-status kunt bijwerken met CodeIgniter

Hallo, in deze tutorial zullen we onze Twitter-status updaten via de 'Twitter API' met behulp van CodeIgniter. Ik raad aan om stap voor stap te volgen, in plaats van de zelfstudie te laten verdwijnen. Laten we ingaan!

Zelfstudiedetails

  • Programma: CodeIgniter PHP Framework
  • Versie: 1.7.1
  • Moeilijkheidsgraad: geavanceerd
  • Geschatte voltooiingstijd: 30 minuten

1. CodeIgniter configureren

In eerste instantie moeten we enkele standaardinstellingen bewerken in de CI-configuratie.

Open de system / application / config / autoload.php en bewerk het volgende van:

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

naar:

$ autoload ['libraries'] = array ('database');

Dit zal de database autoload. Open vervolgens database.php en bewerk de databaseverbindingsinstelling - de naam van
uw database, gebruiker en wachtwoord. Als naam zullen we gebruiken ci_twitter_api.

Nu open config.php en verander de base_url naar uw CI-map. Mijn map is gebeld twitter_api.
In die map is mijn systeem map. Dus mijn base_url zal zijn:

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

2. De database vullen

Omdat we met een database gaan werken, hebben we enkele gegevens nodig om mee te spelen. Open phpmyadmin of jouw
favoriete databasemanagementtool en maakt een nieuwe database genaamd ci_twitter_api. Nu gaan we een instellen
nieuwe tabel met behulp van de volgende SQL-query, maar aandacht, gebruik UW twitter gebruikersnaam en wachtwoord inloggegevens.

CREËER TAFEL ALS NIET BESTAAT 'accounts' ('id' int (11) NOT NULL AUTO_INCREMENT, 'gebruikersnaam' varchar (120) NOT NULL, 'wachtwoord' varchar (32) NOT NULL, 'active' int (11) NOT NULL, 'last_message' varchar (140) NOT NULL, PRIMARY KEY ('id')) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 3; INSERT IN 'accounts' ('id', 'gebruikersnaam', 'wachtwoord', 'actief', 'last_message') VALUES (1, 'JE GEBRUIKERSNAAM','UW WACHTWOORD', 1,' Geen bericht verzonden. ');

Klik op de OK knop aan de rechterkant en de query moet worden verwerkt. Nu je structuur voor de tafel
rekeningen moet er ongeveer zo uitzien als de afbeelding hieronder.

3. Het model bouwen

Ga naar system / application / modellen en maak een nieuw bestand met de naam twitter_model.php.

Eerst verklaren we twee globale variabelen bovenaan.

var $ accounts_table = 'accounts'; var $ update_url = 'http://twitter.com/statuses/update.xml';

Zo $ accounts_table verwijst naar de tabel die we net daarvoor hebben gemaakt, en $ update_url is de URL die we gaan gebruiken
om onze status bij te werken. Als Twitter hun update-URL wijzigt, hoeft u deze slechts één keer hier te bewerken in plaats van elke keer dat deze in de code wordt gebruikt.

Nu zullen we onze eerste methode maken die simpelweg het actieve gebruikersaccount dat in de database is opgeslagen terugstuurt,
op basis van de rij actief en waarde 1. Ik heb dit toegevoegd omdat sommige mensen twee of meer Twitter hebben
rekeningen.

 class Twitter_model breidt Model // haal de actieve twitter-account uit de database, per rij actief = 1 functie getActiveAccount () return $ this-> db-> get_where ($ this-> accounts_table, array ('active' => ') 1' )) -> rij (); 

We gebruiken eenvoudig actieve records
om het actieve account op te halen en de betreffende rij te retourneren.

Volgende stap, we gaan de hoofdmethode bouwen, de bijwerken methode. Dit gebruikt onze
gebruikersnaam, wachtwoord en natuurlijk het bericht dat we willen verzenden en onze status op Twitter bijwerken. Afgezien daarvan,
het zal het interpreteren HTTP_CODE weergeeft die wordt geretourneerd door Twitter om ons te vertellen of de status is bijgewerkt
succesvol of niet.

// update twitter-status en laatste bericht op succesfunctie update_status ($ gebruikersnaam, $ wachtwoord, $ bericht) $ ch = curl_init ($ this-> update_url); curl_setopt ($ ch, CURLOPT_POST, 1); curl_setopt ($ ch, CURLOPT_POSTFIELDS, 'status ='. urlencode ($ message)); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_USERPWD, $ gebruikersnaam. ':'. $ wachtwoord); curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // als we succesvol waren, moeten we ons last_message bijwerken als ($ httpcode == '200') $ this-> db-> where ('active', '1'); $ this-> db-> update ($ this-> accounts_tabel, array ('last_message' => $ bericht)); return TRUE;  else return FALSE; 

In eerste instantie ziet de bovenstaande code er misschien wat ingewikkeld uit, maar het is niet zo moeilijk te begrijpen. Het belangrijkste onderdeel is
dat we cURL gebruiken om te communiceren met Twitter. Het is echt geweldig
bibliotheek waarmee we kunnen verzenden en ontvangenHTTP POST data van Twitter.

Nu dan curl_init initialiseert een cURL-sessie en neemt de URL als een parameter - in dit geval de statusupdate
URL van de Twitter API.

Met curl_setopt we stellen enkele noodzakelijke opties in voor de cURL-overdracht.

  • CURLOPT_POST: We zetten dit op '1' om HTTP POST te gebruiken, wat hetzelfde is als gebruikt in HTML-formulieren.
  • CURLOPT_POSTFIELDS: Deze optie is de bedoeling POST-gegevens die we willen verzenden. In ons geval
    'status =' en onze bericht. We moeten urlencode het bericht om speciaal te kunnen gebruiken
    karakters zoals '% & /" .
  • CURLOPT_RETURNTRANSFER: Het is belangrijk voor ons om dit op '1' in te stellen omdat het de overdracht zal terugsturen
    als een string. Die string zal ons later vertellen of de status succesvol is bijgewerkt of niet.
  • CURLOPT_USERPWD: Deze optie is voor authenticatie. Het neemt gewoon onze Twitter-gebruikersnaam en -wachtwoord in beslag
    in het formaat gebruikersnaam wachtwoord.
curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // als we succesvol waren, moeten we ons last_message bijwerken als ($ httpcode == '200') $ this-> db-> where ('active', '1'); $ this-> db-> update ($ this-> accounts_tabel, array ('last_message' => $ bericht)); return TRUE;  else return FALSE; 

In dit deel voeren we de overdracht uit met curl_exec () en het ophalen van het geretourneerde HTTP_CODE weergeeft
gebruik makend van curl_getinfo (CURLINFO_HTTP_CODE). Deze HTTP_CODE weergeeft vertelt ons of de statusupdate is voltooid of niet.
Code '200' betekent dat het werkte en dat de update was voltooid. U kunt een volledige lijst met HTTP-statuscodes bekijken
hier.

Als we '200' teruggestuurd krijgen via Twitter, sturen we een vraag naar onze database die onze laatste rij met berichten opwaardeert en tot slot
we komen terug TRUE. Als 200 niet wordt geretourneerd, keren we gewoon terug VALSE.

Om onze te voltooien twitter_model we zullen een laatste methode maken die de Laatste bericht we zonden. Wij hebben nodig
deze methode omdat we ons meest recente bericht in een weergave zullen weergeven.

// haal het last_message op, per rij actief = 1 functie getLastMessage () $ this-> db-> select ('last_message'); $ last_message = $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) -> row () -> last_message; retourneer htmlspecialchars ($ last_message); 

Deze methode is vrij eenvoudig. Het selecteert de Laatste bericht roeien vanuit ons actieve account en retourneert het
geconverteerd met htmlspecialchars naar HTML-entiteiten.
Onze twitter_model.php ziet er nu zo uit:

 class Twitter_model breidt Model var $ accounts_table = 'accounts' uit; var $ update_url = 'http://twitter.com/statuses/update.xml'; // haal het actieve twitter-account uit de database, per rij active = 1 functie getActiveAccount () return $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) - > tr ();  // update twitter-status en laatste bericht op succesfunctie update_status ($ gebruikersnaam, $ wachtwoord, $ bericht) $ ch = curl_init ($ this-> update_url); curl_setopt ($ ch, CURLOPT_POST, 1); curl_setopt ($ ch, CURLOPT_POSTFIELDS, 'status ='. urlencode ($ message)); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_USERPWD, $ gebruikersnaam. ':'. $ wachtwoord); curl_exec ($ ch); $ httpcode = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); // als we succesvol waren, moeten we ons last_message bijwerken als ($ httpcode == '200') $ this-> db-> where ('active', '1'); $ this-> db-> update ($ this-> accounts_tabel, array ('last_message' => $ bericht)); return TRUE;  else return FALSE;  // get the last_message, per rij active = 1 functie getLastMessage () $ this-> db-> select ('last_message'); $ last_message = $ this-> db-> get_where ($ this-> accounts_table, array ('active' => '1')) -> row () -> last_message; retourneer htmlspecialchars ($ last_message); 

4. De controller bouwen

Ga nu naar system / application / controllers en maak een nieuw bestand met de naam twitter.php.
Laten we wat regels toevoegen:

klas Twitter breidt Controller uit function Twitter () parent :: Controller (); $ This-> load-> model ( 'twitter_model'); 

Dit is een eenvoudige CI-constructor die onze laadt twitter_model. Dus het zal voor ons beschikbaar zijn binnen de hele controller.
Nu komt het inhoudsopgave() methode.

function index () $ data ['heading'] = 'Hallo, stuur een tweet!'; $ data ['last_message'] = $ this-> twitter_model-> getLastMessage (); $ data ['active_user'] = $ this-> twitter_model-> getActiveAccount () -> gebruikersnaam; $ this-> load-> view ('header', $ data); $ This-> load-> weergave ( 'index'); $ This-> load-> weergave ( 'footer'); 

We geven informatie zoals een tekst, ons laatste bericht en de gebruikersnaam van de actieve gebruiker door aan de $ data rangschikking.
Dank aan onze twitter_model het is een makkie om het laatste bericht en de actieve gebruikersnaam te pakken. We laden er in ieder geval wat in
keer bekeken die we zullen maken nadat we onze controller hebben voltooid. Laten we het bouwen bijwerken methode.

// update van onze status op twitter (nieuw bericht) functie update () 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]'); if ($ this-> form_validation-> run () == FALSE) $ this-> index (); else $ message = $ this-> input-> post ('message'); // krijg gebruikersaccountgegevens $ account = $ this-> twitter_model-> getActiveAccount (); $ gebruikersnaam = $ account-> gebruikersnaam; $ wachtwoord = $ account-> wachtwoord; // stuur een tweet if ($ this-> twitter_model-> update_status ($ gebruikersnaam, $ wachtwoord, $ bericht)) redirect ('twitter'); else $ data ['error'] = 'Er is een fout opgetreden bij het updaten van je status'; $ this-> load-> view ('header', $ data); $ This-> load-> weergave ( 'fout'); $ This-> load-> weergave ( 'footer');

Dit kan weer verwarrend zijn, maar we zullen het stuk voor stuk doornemen.

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]'); if ($ this-> form_validation-> run () == FALSE) $ this-> index ();

Met $ This-> input-> post ( 'submit') we controleren of het formulier is ingediend - dat we later in onze hoofdweergave maken
het dossier. Daarna laden we de form_validation bibliotheek omdat we ervoor willen zorgen dat bepaalde ingangen enkele regels vereisen,
zoals een minimale en maximale lengte van 5 en 140 tekens. Daarnaast snijden we de witruimte in trimmen en
het veld instellen als verplicht omdat we geen leeg bericht nodig hebben. De functie set_rules neemt als de eerste parameter,
de naam van het van veld, onze zaak bericht (die binnenkort in de weergave wordt gemaakt) en als tweede parameter een mens
de naam voor dit veld, die in het foutbericht wordt ingevoegd (wordt in het viewbestand gedaan).

Wij bellen $ This-> form_validation-> run (), welke kan terugkeren TRUE of VALSE. Als een regel die we instellen, werd verbroken
zal terugkeren VALSE en we noemen gewoon onze inhoudsopgave() methode. In de weergavebestanden die door de methode index () worden geroepen, wordt de
foutmeldingen worden weergegeven nadat we onze views hebben gemaakt.

else $ message = $ this-> input-> post ('message'); // krijg gebruikersaccountgegevens $ account = $ this-> twitter_model-> getActiveAccount (); $ gebruikersnaam = $ account-> gebruikersnaam; $ wachtwoord = $ account-> wachtwoord; // stuur een tweet if ($ this-> twitter_model-> update_status ($ gebruikersnaam, $ wachtwoord, $ bericht)) redirect ('twitter');  else $ data ['error'] = 'Er is een fout opgetreden bij het updaten van je status'; $ this-> load-> view ('header', $ data); $ This-> load-> weergave ( 'fout'); $ This-> load-> weergave ( 'footer'); 

Dank aan onze twitter_model, opnieuw is het zo gemakkelijk om de gebruikersnaam en de wachtwoord van de huidige actieve gebruiker.
We zouden ook kunnen doen $ username = $ this-> twitter_model-> getActiveAccount () -> gebruikersnaam maar ik denk dat deze tutorial dit is
een beetje makkelijker te begrijpen.

Gebruik makend van $ This-> twitter_model-> update_status () we noemen de methode die met Twitter 'praat'. Het vertelt Twitter onze
gebruikersnaam, wachtwoord en onze boodschap. Als de status met succes is bijgewerkt, wordt omgeleid met behulp van redirect () van de url-helper.

Als er iets niet klopt, stellen we een foutmelding in en laden we enkele weergavebestanden, die in de volgende stap worden gemaakt :).
De Controller ziet er nu als volgt uit:

 klas Twitter breidt Controller uit function Twitter () parent :: Controller (); $ This-> load-> model ( 'twitter_model');  function index () $ data ['heading'] = 'Hallo, stuur een tweet!'; $ data ['last_message'] = $ this-> twitter_model-> getLastMessage (); $ data ['active_user'] = $ this-> twitter_model-> getActiveAccount () -> gebruikersnaam; $ this-> load-> view ('header', $ data); $ This-> load-> weergave ( 'index'); $ This-> load-> weergave ( 'footer');  // update van onze status op twitter (nieuw bericht) functie update () 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]'); if ($ this-> form_validation-> run () == FALSE) $ this-> index (); else $ message = $ this-> input-> post ('message'); // krijg gebruikersaccountgegevens $ account = $ this-> twitter_model-> getActiveAccount (); $ gebruikersnaam = $ account-> gebruikersnaam; $ wachtwoord = $ account-> wachtwoord; // stuur een tweet if ($ this-> twitter_model-> update_status ($ gebruikersnaam, $ wachtwoord, $ bericht)) redirect ('twitter'); else $ data ['error'] = 'Er is een fout opgetreden bij het updaten van je status'; $ this-> load-> view ('header', $ data); $ This-> load-> weergave ( 'fout'); $ This-> load-> weergave ( 'footer'); else redirect ('twitter');

5. De weergaven maken

Nu zullen we onze weergavebestanden maken. Ga naar system / application / x bekeken en maak de volgende bestanden:

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

De header.php bevat de basis html-meta-informatie, onze CSS-link en de openingstags van onze hoofdafdelingen,
#wikkel en #hoofd.

      De Twitter API gebruiken met CodeIgniter   

Wij gebruiken base_url () die we hebben geconfigureerd om te verwijzen naar ons CSS-bestand, dat in de volgende stap zal worden gemaakt.

De footer.php bevat gewoon onze afsluitende tags.

 

De index.php is waar het feest gaat.

 

( account: )

'Update_form')); ?> 'message', 'maxlength' => '140')); ?>
Laatste verstuurd door

Alle variabelen die hier worden gebruikt, worden doorgegeven inhoudsopgave() methode van onze controller. Naast dat,
we gebruiken de vorm helper om een ​​eenvoudig html-formulier te maken. Denk eraan, ik heb je de foutafhandeling voor de
berichtveld zal hier worden gedaan; form_error ( 'e-mail') doet die magie.

Onder het formulier geven we het laatste bericht weer dat is verzonden door het account van de actieve gebruiker.

Eindelijk, de error.php wordt gebruikt voor een aangepast foutbestand in het geval dat de statusupdate niet succesvol was.

 

6. Een beetje CSS toevoegen

Om het een beetje mooier te maken, zullen we wat CSS toevoegen. Ga naar systeem/
en maak de map css. Maak binnen die map een bestand met de naam style.css en invoegen
de volgende code.

 / * CSS * / html, body, div, span, object, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, adres, code, img, small, strong, dl, dt, resetten dd, ol, ul, li, fieldset, vorm, label margin: 0; opvulling: 0; rand: 0; overzicht: 0; tekengrootte: 100%; vertical-align: basislijn; achtergrond: transparant;  body line-height: 1.5; lettertype-familie: Arial, sans-serif; margin: 0;  ol, ul, li list-style: none; list-style-type: none;  .helder duidelijk: beide;  / * DEFAULTS * / h3 color: # 35CCFF; font-size: 20px;  / * CUSTOM * / #wrapper width: 900px; marge: 0 auto;  / * main * / #main margin-top: 50px;  #main h3 span font-size: 14px; kleur: #cccccc;  #main h3 a color: #cccccc;  / * form * / #update_form input width: 888px; padding: 5px; rand: 1px vast # d3d3d3; display: block;  #update_form invoer [type = "submit"] width: auto; margin-top: 10px; background-color: # 000000 ;; border: none; kleur wit; font-size: 12px; font-weight: bold; cursor: wijzer; padding: 3px;  div.error display: block; background-color: # FB8A8A; rand: 1px vast # FF3B3B; padding: 5px; color: #ffffff; width: 50%; margin-bottom: 30px; font-weight: bold; marge: 0 auto 10px auto; text-align: center;  / * laatste bericht * / #last_message fieldset border: 1px dashed # d3d3d3; padding: 5px; margin-top: 30px;  #last_message fieldset p opvulling: 5px; font-size: 18px; font-weight: normal;  #last_bericht legenda-spanwijdte font-size: 12px; 

Ik gebruik Eric Meyers CSS-reset om de weergave in alle browsers te neutraliseren. Uw applicatie zou nu de onderstaande afbeelding moeten hebben.

De grote finale

Laten we onze nieuwe toepassing testen. We plaatsen een bericht en drukken op bijwerken knop!

Nadat de update is gemaakt:

Laten we een kijkje nemen op Twitter :)

als we een formuliervalidatieregel overtreden door te proberen een leeg bericht te verzenden:

Conclusie

Ik hoop echt dat ik je een beetje heb geholpen met het leren van CodeIgniter en het gebruik van de geweldige Twitter API! Zou je iets anders hebben gedaan? Zo ja, laat het ons weten!