Hur berätta var dina besökare är geografiskt med hjälp av PHP

Publicerad i päron, php av ShortLikeAFox den 13 september 2008

Om du har en webbplats och vill berätta om dina användare kommer från geografiskt PHP och PEAR göra detta möjligt. Om du vill aktivera en gäst IP till en fysisk plats är det första du kommer att behöva göra är att se till att du har den Net_Geo PEAR-modul. Om du inte har Net_Geo PEAR-modul, du kommer att behöva använda PEAR Package Manager för att förvärva den.

Om du inte tror att du har tillgång till PEAR på grund av ditt webbhotell paket, kolla in denna förklaring om hur du installerar PEAR på ett konto som inte tillåter tillgång som standard. Det är skrivet med GoDaddys delade konton i åtanke, men bör fungera för de flesta värd paket som inte kommer med PEAR inrättas.

När du har Net_Geo paket installeras, det tar bara ett par rader kod för att förvärva geografiska data:

<? php

); require_once ( "Net / Geo.php");
]; $ ip = $ _SERVER [ 'REMOTE_ADDR'];
/ / $ ip = "64.246.30.37";
$ firstNetGeo = nya Net_Geo ();
$ geodata = $ firstNetGeo-> getRecord ($ ip);

?>

($ip); ?> <br/> IP: <? Php echo ($ ip);?> <br/>
($geoData[ 'LAT' ]); ?> <br/> Latitud: <? Php echo ($ geografisk [ "LAT"]);?> <br/>
($geoData[ 'LONG' ]); ?> Longitud: <? Php echo ($ geografisk [ 'lång']);?>
<br/>
($geoData[ 'COUNTRY' ]); ?> <br/> Land: <? Php echo ($ geografisk [ "land"]);?> <br/>
($geoData[ 'STATE' ]); ?> <br/> State: <? Php echo ($ geografisk [ 'staten']);?> <br/>
($geoData[ 'CITY' ]); ?> <br/> Stad: <? Php echo ($ geografisk [ 'kommun']);?> <br/>

Koden i arbetet:

IP: 74.125.75.19

Latitud: 33.98

Longitud: -118,45

Land: USA

Stat: California

City: Marina del Rey

| Kommentarer

Att inkludera fungerande PHP-kod på din WordPress tjänster

Publicerad i WordPress, php av ShortLikeAFox den 17 aug, 2008

Så du vill kunna använda PHP i din WordPress blogginlägg och sidor. Det är inga problem. Bara med hjälp av <? Php ... ... ..?> Kommer att göra WordPress arg om du inte installera en plugin första. Det finns några plugins där ute som hävdar att erbjuda denna möjlighet, men en som jag har hittat fungerar bäst är Exec-PHP. Om du vill börja använda PHP-kod så här:

  1. Ladda ner Exec-PHP
  2. Installera det som du skulle alla plugin (ovanstående länk och Readme-filen kommer att gå igenom detta)
  3. Om du fortfarande använder det måste du stänga av WYSIWYG redaktör. För att göra detta, gå till Användare -> din profil och avmarkera Använd visuell editor när du skriver kryssrutan
  4. Börja skriva PHP-kod som du normalt skulle: <? Php .... Kod går här?>

Det är allt till det!

| Kommentarer

Skapa och använda dynamiskt namngivna variabler med PHP

Publicerad i php av ShortLikeAFox den 17 aug, 2008

Så du vill använda dynamisk variabel namn i din kod. Inga problem. Låt säga att du har 100 variabler som heter dog0, dog1, dog2, ...., Dog98, dog99. Varför skulle du vill använda 100 variabler så här i stället för en matris är för mig obegripligt, men det spelar ingen roll för det här exemplet. Att ställa in dessa variabler i en snabb loop kan du använda följande:

0 ; $i < 100 ; $i ++ ){ for ($ i = 0; $ i <100; $ i + +) (

; $ VariableName = "hund $ i";
$ $ VariableName = $ i; / / uppsättningar $ dog1 till 1, $ dog2 till 2, $ hund 34 - 34, osv ....

)

Låt säga att du ville få tillgång till alla dessa variabler. Du kan använda följande:

0 ; $i < 100 ; $i ++ ){ for ($ i = 0; $ i <100; $ i + +) (

; $ VariableName = "hund $ i";
echo ( "<br/>");
echo ( "$ VariableName:");
echo ($ $ VariableName);

)

Denna loop skriver ut:

dog0: 0
dog1: 1
dog2: 2
dog3: 3
dog4: 4
dog5: 5
dog6: 6
dog7: 7
dog8: 8

osv ... hela vägen till
dog99: 99

| Kommentarer

Hur man Intergrate ISBN tillgång på dina webbsidor med PHP

Publicerad i php av ShortLikeAFox den 12 aug, 2008

ISBN-nummer eller International Standard Book Numbers är användbara kännetecken som kan användas för att hitta information om enskilda böcker. Om du vill integrera ISBN lookups i din webbläsares ansökningar PHP gör det UPPFYLLBAR.

Steg ett: ISBNdb.com är en har skapat ett API som gör att användare från nätet för att få tillgång till deras databas av ISBN register. Här är deras egen beskrivning av API:

ISBNdb.com är fjärråtkomst Application Programming Interface (API) är utformat för att låta andra webbplatser och fristående program använder den stora insamlingen av data som samlas in av ISBNdb.com sedan 2003. När detta dokument skrivs, i juli 2005, de uppgifter som omfattar nästan 1800000 böcker, nästan 3000000 miljoner bibliotekets register, som ligger nära en miljon frågor, och hundratusentals författare och förläggare register analyseras av bibliotekets uppgifter, mer än 10000000 registrera den faktiska och historiska priser.

Om du vill använda detta API måste du först registrera. Registreringen tar bokstavligen sekunder att slutföra. Efter detta måste du ställa upp på en knapp. Knappar kan du direkt tillgång ISBN databas från din egen kod. Den ISBNdb.com webbplats gör att inrätta nycklar lätt.

Steg två: Nu kan du börja skriva kod för att interagera med databasen. En begäran om ett ISBN lookup kommer att se ut ungefär så här:

$ isbnData = "http://isbndb.com/api/books.xml?access_key=XXXXXX&index1=isbn&value1 = $ isbnQuery";

Du skulle mata in din tillgång knapp i stället för XXXXXX. $ IsbnQuery skulle ISBN-nummer som du är intresserad $ isbnData är en XML-fil. För att komma åt denna information måste du låta din kod vet vad det handlar om. Detta något som kommer att arbeta:

) ; $ xmlData = @ simplexml_load_file ($ isbnData) eller dö ( "ingen fil laddas");

Nu kan du komma åt enskilda variabler med samtal ungefär så här:

]->Title ; $ title = $ xmData-> boklista [0] -> BookData [0] -> Titel;

Här är en komplett fungerande exempel:

<? php

$ Searchquery = "9780684801223", / / I ISBN-nummer för Ernest Hemingway: s gamle och havet
$ isbnData = "http://isbndb.com/api/books.xml?access_key=XXXXXX&index1=isbn&value1 = $ Searchquery" / / Kom ihåg att ersätta XXXXXX med din egen åtkomstnyckel
) ; $ xmlData = @ simplexml_load_file ($ isbnData) eller dö ( "ingen fil laddas");
]->Title ; $ title = $ xmlData-> boklista [0] -> BookData [0] -> Titel;
]->AuthorsText ; $ författare = $ xmlData-> boklista [0] -> BookData [0] -> AuthorsText;
]->PublisherText ; $ publicist = $ xmlData-> boklista [0] -> BookData [0] -> PublisherText;

); echo ( "$ titel <br/>");
); echo ( "$ författare <br/>");
); echo ( "$ förlaget <br/>");

/ / Detta exempel skriver ut:
/ / Den gamle och havet
/ / Ernest Hemingway
/ / New York: Scribner Pocketbok Skönlitteratur, 1995.

?>

| Kommentarer

Hur du manuellt infoga en grupp av användare i ett SMF forum använder PHP

Publicerad i SMF (Simple Machine Forum), php av ShortLikeAFox den 30 juli 2008

Denna handbok förutsätter att du känner till min post: Hur att skjuta in en användare till ett SMF Forum Använda PHP.

Jag har nyligen inför utmaningen att flytta 800-tal band från en databas i ett SMF forum. Jag står inför ett par problem vid övergången att jag inte täcka i första inlägget:

  1. Bandet namn inte är garanterat säkra för en karaktär av karaktär flytta in i SMF databas. Så någon form av namn ändra funktion var tvungen att vara anställd.
  2. De band som inte har lösenord. Så någon typ av lösenord generation måste anställas.

De steg som jag gick om att registrera alla de band i forumet gick lite så här:

Öppna Band databas

för varje (Band) (

Skapa lösenord

Byt namn Band med "säkra" namn

Ta och generera information som behövs för att infoga användaren

Sätt Band i smf_members

Skicka Band ett e-postmeddelande med lösenord

)

Information jag hade från bandet databas som var användbara ingår: bandName, bandEmail, och bandWebsite

Här är lösenordet generation funktion jag använde (blatently tas från totallyphp.co.uk):

funktion createRandomPassword () (

$ tecken = "abcdefghijkmnopqrstuvwxyz023456789";

() * 1000000); srand ((dubbel) microtime () * 1000000);

$ i = 0;

$ pass = ";



while ($ i <= 7) (

33; $ num = rand ()% 33;

$ tmp = substr ($ tecken, $ num, 1);

$ pass = $ pass. $ tmp;

$ i + +;

)

return $ pass;

)

Lösenordet skapas här är relativt svag, men det var bra för mitt ändamål. Alla lösenord generation funktion skulle fungera bra här. Jag valde den här eftersom det skulle vara lätt för medlemmarna att komma ihåg om de valde att inte ändra det.

Hur man gör:

/ / Du först ansluta till bandet databas
$ username = "bandUsername";
$ värd = "bandHost";
$ mittlösenord = "bandPassword";
$ db_name = "bandDatabase";

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mittlösenord") eller dö ( "inte kan ansluta till servern");
("cannot select DB"); mysql_select_db ( "$ db_name") eller dö ( "kan inte välja BF");

/ / Nu är alla roffa åt sig av de band från databasen
$ query = "SELECT * FROM allBands";
$ band = mysql_query ($ query) eller dö ( "Config Error 2222b");
$ userRows = mysql_num_rows ($ band);

/ / Nu kan ansluta till SMF db
$ värd = "smfhost", / / Host namn
$ username = "smfuser, / / Mysql användarnamn
$ mittlösenord = "smfpassword", / / Mysql lösenord
$ db_name = "smfdatabase", / / Database namnet

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mittlösenord") eller dö ( "inte kan ansluta till servern");
("cannot select DB"); mysql_select_db ( "$ db_name") eller dö ( "kan inte välja BF");

/ / $ vaild_chars kommer att samlingen med tillåtna tecken för användarnamn. Jag bestämde mig för att endast tillåta bokstäver och siffror. Det finns andra tecken som kan användas för att inte utgöra något problem, men för stil skäl har jag beslutat att gå med bara bokstäver och siffror
$ valid_chars = "abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9";
$ valid_chars = explodera ( "", $ valid_chars);

/ / Nu måste vi loop genom varje band

){ for ($ i = 0; $ i <$ userRows, $ i + +) (

($bands)){ if ($ row = mysql_fetch_assoc ($ band)) (

/ / Utdrag bandet uppgifter
extrakt ($ rad);
/ / Skapa ett lösenord för bandet
$ realPassword = createRandomPassword ();
/ / Jag väljer att upprepa bandname och lösenord som en del av min felsökning och så jag kan se det fungera som det fungerar
echo ( "<br/> $ bandName - $ realPassword");
$ newBand = "";
/ / För varje bokstav i bandet namn som vi ska titta för att se om det matchar ett giltigt tecken från $ valid_chars. Det är inte vi kommer att bli av med den och trunkera bandet namn
($bandName); $j ++ ){ for ($ j = 0; $ j <strlen ($ bandName), $ j + +) (

($band[$j])); $ temp = str_replace ($ valid_chars, "X", strtolower ($ bandet [$ j]));
if ($ temp == "X")

$ newBand = $ newBand. $ bandet [$ j];

)
/ / Jag upprepar det nya namnet för samma anledning vill jag upprepa det gamla och lösenord
echo ( "- $ newBand");
/ / Vi har den nya Band namn .... Nu börjar buliding den information vi behöver för att infoga i db ...
$ memberName = $ newBand;
$ realname = $ newBand, / / jag som det riktiga namnet och medlem namn samma. De band som kan ändra det om de vill
$ Epostadress = $ bandEmail;
$ websiteUrl = $ bandWebsite, / / Eftersom jag har bandets hemsida skulle lika gärna kunna skriva in dem
$ websiteTitle = $ newBand;
$ is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ lösenord = SHA1 (strtolower ($ memberName). $ realPassword), / / Lösenord måste vara krypterad

/ / Se till att deras så klart inte medlem med samma namn i SMF databas. Vi vill inte oavsiktligt kommer in någon två gånger
$ query = "SELECT * FROM smf_members VAR memberName = '$ memberName" ";
("Config Error 2222343242b"); $ result = mysql_query ($ query) eller dö ( "Config Error 2222343242b");
$ nRows = mysql_num_rows ($ resultat);

/ / Om ledamot namn finns inte göra något
if ($ nRows> 0) ()

else (

/ / Om användaren inte redan registrerat dig för det forum, göra det och skicka ett mail ....
$ query = "infoga i smf_members (memberName, realname, Epostadress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) värden (" $ memberName "," $ realname "," $ Epostadress', '$ is_activated "," $ ID_POST_GROUP " , "$ Password", "$ websiteUrl", "$ websiteTitle") ";

("Config Error 2232 "); $ result = mysql_query ($ query) eller dö ( "Config Error 2232");

/ / Nu måste vi skicka bandet ett e-postmeddelande
$ till = $ Epostadress;
$ Ämne = "Ditt forum användarnamn och lösenord";

/ / Från
$ rubrik = "från: Me <me@mysite.com>";

/ / Ditt meddelande
$ meddelande .= "Din inloggning och lösenord är listade nedan. Du kan ändra antingen när som helst. Om du inte vill delta i vårt forum, det är inga problem. Precis aldrig logga in och det blir inget hänt . \ r \ n ";
$ meddelande .= "Username: $ memberName Lösenord: $ realPassword \ r \ n";

/ / Skicka e-post
$ skickat = mail ($ till, $ ärendet, $ meddelande, $ rubrik);
if ($ skickat)

echo ( "- JA!");
/ / Detta är den sista delen av vår eko. Den "-JA!" kommer endast skrivas ut om ett e-postmeddelande skickas. Så en fullständig utskrift linje kommer att se ut ungefär så här:
/ / Adam Strife - 4s6vsxag - AdamStrife - JA!

)

)
)

| Kommentarer

Hur du manuellt infoga en användare i ett SMF forum använder PHP

Publicerad i SMF (Simple Machine Forum), php av ShortLikeAFox den 28 juli 2008

Detta konkret exempel är för SMF 1.1.5. Jag kan inte garantera att det kommer att fungera med någon annan version.

Så du kör Simple Machine Forum Software och vill ange en användare? Inga problem. Jag vet att detta problem verkar mycket specifika, men de idéer som beskrivs här kan anpassas till andra typer av forum och andra databas drivs programvarupaket som Wordpress. Innan vi får till exakt hur man gör detta, låt oss ta en titt på hur Simple Machine Forum håller reda på användarna. I SMF databas finns en tabell som kallas smf_members. Den smf_members struktur ser ut så här:

Fält Typ Null

Nyckel Standard Extra
ID_MEMBER mediumint (8) osignerade NEJ PRI NULL auto_increment
memberName Varchar (80) NEJ MUL
dateRegistered int (10) osignerade NEJ MUL 0
tjänster mediumint (8) osignerade NEJ MUL 0
ID_GROUP smallint (5) osignerade NEJ MUL 0
lngfile tinytext NEJ MUL
lastLogin int (10) osignerade NEJ MUL 0
realname tinytext NEJ
chattmeddelanden smallint (5) NEJ 0
unreadMessages smallint (5) NEJ 0
buddy_list text NEJ
pm_ignore_list text NEJ
messageLabels text NEJ
passwd Varchar (64) NEJ
Epostadress tinytext NEJ
personalText tinytext NEJ
kön tinyint (4) osignerade NEJ 0
Födelsedatum datum NEJ MUL 0001-01-01
websiteTitle tinytext NEJ
websiteUrl tinytext NEJ
plats tinytext NEJ
ICQ tinytext NEJ
AIM Varchar (16) NEJ
YIM Varchar (32) NEJ
MSN tinytext NEJ
hideEmail tinyint (4) NEJ 0
showOnline tinyint (4) NEJ 1
Tidsformat Varchar (80) NEJ
signatur text NEJ
timeOffset float NEJ 0
avatar tinytext NEJ
pm_email_notify tinyint (4) NEJ 0
karmaBad smallint (5) osignerade NEJ 0
karmaGood smallint (5) osignerade NEJ 0
usertitle tinytext NEJ
notifyAnnouncements tinyint (4) NEJ 1
notifyOnce tinyint (4) NEJ 1
notifySendBody tinyint (4) NEJ 0
notifyTypes tinyint (4) NEJ 2
memberIP tinytext NEJ
memberIP2 tinytext NEJ
secretQuestion tinytext NEJ
secretAnswer Varchar (64) NEJ
ID_THEME tinyint (4) osignerade NEJ 0
is_activated tinyint (3) osignerade NEJ 1
validation_code Varchar (10) NEJ
ID_MSG_LAST_VISIT int (10) osignerade NEJ 0
additionalGroups tinytext NEJ
smileySet Varchar (48) NEJ
ID_POST_GROUP smallint (5) osignerade NEJ MUL 0
totalTimeLoggedIn int (10) osignerade NEJ 0
passwordSalt Varchar (5) NEJ

Områden som vi måste uppmärksamma:

  • memberName - Self Explanitory.
  • dateRegistered - är inte nödvändigt, men om inte fyllt i datum registreras visas som den 31 december 1969. I dag sparas som en epok tidsstämpel. Vet inte hur man kan beräkna tidstämplar i ditt huvud? Inga problem. Jag använder den fria generator hittar du här.
  • realname - bör införas. När jag inte är säker på att jag bara upprepa memberName här.
  • Epostadress - Self Explanitory.
  • is_activated - måste sättas till 1 eftersom vi manuellt aktivera en medlem.
  • ID_POST_GROUP - Jag ska inte ljuga. Jag är inte säker på vad det är, men det verkar alltid vara inställd på 4. Så .... Jag har alltid ställa in den till 4. Inte det bästa sättet att programmera, men vad ska man göra?
  • passwd - Det lösenord du vill ge den nya användaren. Det är omöjligt att lista ut hur du in utan att titta på SMF dokumentation. Rätt kod för att kryptera ett SMF lösenord för databasen ser ut så här:

($memberName).$password) $ passwd = SHA1 (strtolower ($ memberName). $ lösenord)

I ovanstående rad kod, $ lösenord är användarens faktiska lösenord.

Hur man gör:

/ / First, ansluta till SMF databas

$ värd = "hostname", / / Host namn
$ username = "användarnamn", / / Mysql användarnamn
$ mittlösenord = "lösenord", / / Mysql lösenord
$ db_name = "användarnamn", / / Database namnet

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mittlösenord") eller dö ( "inte kan ansluta till servern");
("cannot select DB"); mysql_select_db ( "$ db_name") eller dö ( "kan inte välja BF");

$ memberName = "ironMan";
$ realname = "Tony Stark";
$ Epostadress = "ironMan@ironMan.com";
$ is_activated = 1;
$ ID_POST_GROUP = 4;

$ lösenord = "Tony1234";

($memberName).$password); $ lösenord = SHA1 (strtolower ($ memberName). $ password);

$ dateRegistered = 1216951200; / / 7-25-2008 2 AM

$ query = "infoga i smf_members (memberName, realname, Epostadress, is_activated, ID_POST_GROUP, passwd, dateRegistered) värden (" $ memberName "," $ realname "," $ Epostadress', '$ is_activated "," $ ID_POST_GROUP "," $ lösenord "," $ dateRegistered ")";
("SMF Error 101.234 "); $ result = mysql_query ($ query) eller dö ( "SMF Fel 101.234");

Det är allt till det!

| Kommentarer

Hur man gör miniatyrbilder med hjälp av PHP

Publicerad i funktioner, php av ShortLikeAFox den 22 juli 2008

Så du vill skapa en miniatyr av en viss bild ... PHP gör uppgiften lätt. Första gången jag skrev funktionen nedan för att hantera bilder som är uppladdade av användare på en plats jag hjälpa administrera. Uppladdade bilder till denna webbplats kan JPEG, pngs, eller gif-bilder, så jag var tvungen att skriva en funktion för att ta itu med alla tre. Denna kod är ursprungligen baserad på en funktion återfinns på webcheatsheet.com

Hur man gör:

funktion createThumbs ($ pathToImages, $ fname, $ pathToThumbs, $ thumbWidth)
(

/ / Analysera sökväg för utbyggnad

$ info = pathinfo ($ pathToImages. $ fname);
/ / Fortsätta endast om det är en JPEG-bild
($info['extension']) == ‘jpeg’) ) if ((strtolower ($ info [ 'förlängning']) == "jpg") | | (strtolower ($ info [ 'förlängning']) == "jpeg"))
(

/ / Load image och få bildstorlek
$ img = imagecreatefromjpeg ( "($ pathToImages) ($ fname)");
$ width = imagesx ($ img);
$ height = imagesy ($ img);

/ / Beräkna thumbnail storlek
$ new_width = $ thumbWidth;
$ new_height = floor ($ höjd * ($ thumbWidth / $ bredd));

/ / Skapa en ny tillfällig bild
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiera och ändra storlek på gamla bilden till ny bild
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ width, $ höjd);

/ / Spara miniatyrbild i en fil
imagejpeg ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

om (strtolower ($ info [ 'förlängning']) == "gif")
(

/ / Load image och få bildstorlek
$ img = imagecreatefromgif ( "($ pathToImages) ($ fname)");
$ width = imagesx ($ img);
$ height = imagesy ($ img);

/ / Beräkna thumbnail storlek
$ new_width = $ thumbWidth;
$ new_height = floor ($ höjd * ($ thumbWidth / $ bredd));

/ / Skapa en ny tillfällig bild
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiera och ändra storlek på gamla bilden till ny bild
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ width, $ höjd);

/ / Spara miniatyrbild i en fil
imagegif ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

om (strtolower ($ info [ 'förlängning']) == "png")
(

/ / Load image och få bildstorlek
$ img = imagecreatefrompng ( "($ pathToImages) ($ fname)");
$ width = imagesx ($ img);
$ height = imagesy ($ img);

/ / Beräkna thumbnail storlek
$ new_width = $ thumbWidth;
$ new_height = floor ($ höjd * ($ thumbWidth / $ bredd));

/ / Skapa en ny tillfällig bild
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiera och ändra storlek på gamla bilden till ny bild
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ width, $ höjd);

/ / Spara miniatyrbild i en fil
imagepng ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

)

Hur detta fungerar

Den fungerar createThumbs tar fyra argument.

  • $ pathToImages -> Den sökvägen till den mapp filen är i. Det kan se ut ungefär så här: / home / innehåll / användarnamn / html / lista / inlagda /
  • $ fname -> Filnamnet: pic1.gif, johnny.jpg, osv ...
  • $ pathToThumbs -> Den sökvägen till den mapp du vill att miniatyrbild att vara i. Du vill inte att detta skall vara den samma väg som $ pathToImages, eftersom miniatyrbild kommer att ha samma namn som den ursprungliga bilden.
  • $ thumbWidth -> Den bredd som du vill att minibilden för att vara i pixlar.

En viktig anmärkning att jag borde göra här är att denna funktion inte har något på plats, utom filändelsen kontrollera, för att säkerställa att bildfiler innehåller inget skadligt. Eftersom filerna createThumbs () arbetar med har redan lagt upp det antas att filerna har korrekt granskas.

Det första som createThumbs () gör är att ringa pathinfo (). pathinfo () bryter mot delar av en väg i en matris. Detta är användbart för oss, eftersom vi behöver filändelsen att kunna skapa tumnagel. Nästa createThumbs () kontroller för att se om vi har att göra med en jpeg. Om den ursprungliga filen är en jpeg createThumbs skapar en ny bild som bygger på den ursprungliga bilden med imagecreatefromjpeg (). Nästa steg är att få bredd och höjd på den här bilden (imagesx (), imagesy ()). Använda $ thumbWidth och andelen av det ursprungliga bredd och höjd createThumbs () innehåller den nya bredd och höjd på miniatyrbild. Att använda dessa nya nyckeltal createThumbs () skapar en "tom" bild som kommer att vara samma bredd och höjd på minibilden med imagecreatetruecolor (). Imagecopyresized () används för att ändra storlek på bilden och spara den i "tomma" just har skapat. imagecopyresized () kan verka som det tar en hel del parametrar, men om du tittar på den dokumentation som den är verkligen inte så komplicerat. Nu när thumbnail existerar som en sann färgbild alla createThumbs behöver göra är att konvertera filen till en jpeg. För att göra detta imagejpeg () anropas.

Det är hur det fungerar för JPEG. Det är minimala skillnader för. Pngs och. Gifs.

| Kommentarer

Hur du skriver webbläsare specifik kod med PHP

Publicerad i php av ShortLikeAFox den 21 juli 2008

Så du vill skriva kod som bara förekommer i vissa webbläsare ... Det finns flera skäl att vilja göra detta. Första gången jag personligen som behövs för att göra detta inträffade när jag försökte bädda in en mp3 på en viss sida. Av någon anledning kunde jag inte skriva koden så att mp3 skulle spela på den webbläsare jag testa på (IE, Firefox och Opera), och validera på samma gång. Om jag minns rätt, det var Internet Explorer som orsakar problemet. Lösningen jag kom fram till var att använda lite PHP för att ta reda på när användaren använder IE, och sedan bädda in mp3 i icke-giltigt nummer om så var fallet.

Denna lösning ledde till mp3 alltid spelar på rätt sätt och sidan alltid validera, eftersom W3C validator aldrig identifierar sig som IE. Detta kanske inte är de mest etiska sättet att nå W3C överensstämmelse, men det fungerar.

En annan gång jag minns att behöva skriva webbläsare särskild kod är när jag hade ett problem med Internet Explorer 6 inte visar min. Png-bilder korrekt. Jag googled runt och hittade ett par lösningar på problemet, men båda hamnade driver upp den totala lagret platser på mina sidor. I stället för felsökning av detta problem, jag gick med snabb lösning och beslöt att visa. Gifs när användaren hade IE 6. Om användaren hade en annan webbläsare som hade. Png problem jag tänkte att det var synd för honom.

Hur man gör det:

Först måste du skriva en liten rad i koden ta reda på vad din webbläsare användaren har. Här är hur man gör det med PHP:

  • 'HTTP_USER_AGENT' ]; $ visitorsOS = $ _SERVER [ "HTTP_USER_AGENT"];

Här är tre exempel på vad $ visitorsOS kan se ut

  • Mozilla/4.0 (compatible; MSIE 6.0, Windows NT 5.1; SV1;. NET CLR 1.0.3705. NET
  • Opera/9.51 (Windows NT 5.1, U, PL)
  • Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv: 1.9) Gecko/2008052906 Firefox

Den första användaren har Internet Explorer 6, den andra Opera 9.51, och den tredje Firefox.

Nu när vi vet mer information än vad vi verkligen behöver om besökarens dator behöver vi denna information till god användning. Säg att du vill skriva kod som visas endast om användaren kör någon version av Internet Explorer. I så fall skulle du göra det här:

(’MSIE’,$visitorsOS)){ om (eregi ( "MSIE", $ visitorsOS)) (

Kod som visas endast om användaren har IE

)

else (

Kod som kommer att visas i alla andra fall

)

Jag använder eregi, en skiftlägesokänsligt vanligt uttryck match i stället för ereg, en skiftlägeskänslig vanligt uttryck matchar. Jag minns inte om jag gör detta av paranoia, eller om jag faktiskt hittat ett fall där Internet Explorer identifierade sig som MSIE. I båda fallen eregi kommer inte att skada något så det är vad jag använder. Vill skriva koden för särskilda versioner av IE endast skulle kräva en liten ändring. i stället för ... (eregi ( "MSIE" ...) Jag skulle använda något liknande (eregi ( "MSIE 6.0" ...) om jag ville kod som fanns bara för MSIE 6.0.

| Kommentarer