Wie man erkennt, woher Ihre Besucher sind geographisch mit PHP

Posted in PEAR, PHP von ShortLikeAFox am 13. September 2008

Wenn Sie eine Website und wollen sagen, wo Ihre Nutzer kommen aus geographisch PHP und PEAR machen dies möglich. So schalten Sie ein Gast-IP in einen physischen Standort das erste, was Sie werden tun müssen, ist vergewissern Sie sich, dass die Net_Geo PEAR-Modul. Wenn Sie nicht über die Net_Geo PEAR-Modul, Sie gehen zu müssen, verwenden Sie den PEAR-Package-Manager zu erwerben ist.

Wenn Sie glaube nicht, dass haben Sie Zugriff auf PEAR, weil Ihres Hosting-Paket, lesen Sie in dieser Erklärung, wie die Installation von PEAR auf ein Konto, das nicht, dass der Zugriff standardmäßig aktiviert. Es ist geschrieben mit GoDaddy gemeinsame Konten im Kopf, aber funktionieren sollte für die meisten Hosting-Pakete, die nicht mit PEAR eingerichtet.

Nachdem Sie haben Net_Geo-Paket installiert ist, dauert es nur ein paar Zeilen Code zu erwerben geografischen Daten:

<? php

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

?>

($ip); ?> <br/> IP: <? Php echo ($ ip);?> <br/>
($geoData[ 'LAT' ]); ?> <br/> Breite: <? Php echo ($ Geodaten [ 'LAT']);?> <br/>
($geoData[ 'LONG' ]); ?> Breite: <? Php echo ($ Geodaten [ 'LONG']);?>
<br/>
($geoData[ 'COUNTRY' ]); ?> <br/> Land: <? Php echo ($ Geodaten [ 'Land']);?> <br/>
($geoData[ 'STATE' ]); ?> <br/> Stand: <? Php echo ($ Geodaten [ 'STATE']);?> <br/>
($geoData[ 'CITY' ]); ?> <br/> Stadt: <? Php echo ($ Geodaten [ 'Stadt']);?> <br/>

Der Code bei der Arbeit:

IP: 72.14.193.67

Länge: 33,98

Länge: -118,45

Land: USA

Stand: CALIFORNIA

Stadt: Marina del Rey

Permalink | Kommentare

Wie auch Funktionieren PHP-Code in Ihrem WordPress Beiträge

Posted in WordPress, php von ShortLikeAFox am 17. August 2008

Also wollen Sie, dass der Verwendung von PHP in Ihrem WordPress Blog-Posts und Seiten. Das ist kein Problem. Nur mit <? Php ... ... ..?> Wird, um WordPress wütend, es sei denn, Sie installieren ein Plugin erste. Es gibt ein paar Plugins aus, dass es Anspruch auf diese Möglichkeit bieten, aber die ein, dass ich gefunden haben, funktioniert das Beste ist Exec-PHP. So beginnen mit PHP-Code, gehen Sie folgendermaßen vor:

  1. Download Exec-PHP
  2. Installieren Sie es wie Sie es vom Plugin (Der Link oben und Readme-Datei wird Sie durch diese)
  3. Wenn Sie sich gerade, es zu benutzen, müssen Sie schalten Sie den WYSIWYG-Editor. Um dies zu tun, gehen Sie auf Benutzer -> Dein Profil und deaktivieren Sie das Verwenden Sie den Visual-Editor beim Schreiben von Kontrollkästchen
  4. Beginnen Sie mit PHP-Code wie gewohnt: <? Php .... Code geht hier?>

Das war's auch schon!

Permalink | Kommentare

So erstellen Sie dynamisch namens Variablen mit PHP

Posted in php durch ShortLikeAFox am 17. August 2008

Also die Sie verwenden möchten dynamische Variablennamen in Ihrem Code. Kein Problem. Nehmen wir an, Sie haben 100 Variablen namens dog0, dog1, dog2, ...., Dog98, dog99. Warum würden Sie verwenden möchten 100 Variablen davon anstelle eines Arrays ist für mich, aber es spielt keine Rolle, für dieses Beispiel. So legen Sie diese Variablen in einer schnellen Schleife können Sie die folgenden Schritte aus:

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

; $ variablenname = "Hund $ i";
$ $ variablenname = $ i; / / setzt $ dog1 zu 1, $ dog2 bis 2, $ Hund 34 bis 34, etc. ....

)

Jetzt laßt uns sagen, Sie wollten für den Zugriff auf alle diese Variablen. Sie können folgende Fassung:

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

; $ variablenname = "Hund $ i";
echo ( "<br/>");
echo ( "$ variablenname:");
echo ($ $ variablenname);

)

Diese Schleife druckt:

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

etc. ... bis hin zu
dog99: 99

Permalink | Kommentare

Wie zu Intergrate ISBN Zugriff auf Ihre Webseiten mit PHP

Posted in php durch ShortLikeAFox am 12. August 2008

ISBN-Nummern oder International Standard Book Numbers sind nützlich, Kennungen, kann verwendet werden, um Informationen über einzelne Bücher. Wenn Sie möchten, dass die Integration ISBN-Lookups in Ihrem Web-Anwendungen PHP macht es machbar.

Schritt Eins: ISBNdb.com ist eine hat eine API, erlaubt es Benutzern aus der ganzen Web-to-Zugriff auf ihre Datenbank der ISBN Aufzeichnungen. Hier ist ihre eigene Beschreibung der API:

ISBNdb.com 's Remote Access Application Programming Interface (API) ist so ausgelegt, dass andere Websites und Standalone-Anwendungen verwenden die große Sammlung von Daten, die mit ISBNdb.com seit 2003. Zum Zeitpunkt des Schreibens, im Juli 2005, werden die Daten enthält fast 1800000 Bücher, fast 3000000 Mio. Bibliothek Aufzeichnungen; fast eine Million Themen; Hunderttausende von Autor und Herausgeber Datensätze analysiert die Daten der Bibliothek; mehr als 10000000 records der tatsächlichen und der historischen Preise.

Zur Verwendung dieser API müssen Sie sich zuerst registrieren. Die Registrierung dauert buchstäblich Sekunden in Anspruch nehmen. Nach dieser zu setzen, müssen Sie einen Schlüssel. Keys können Sie direkt auf die ISBN-Datenbank von Ihrem eigenen Code. Die ISBNdb.com Website macht die Errichtung Tasten einfach.

Schritt zwei: Jetzt können Sie mit dem Schreiben beginnen Code zur Interaktion mit der Datenbank. Ein Antrag für eine ISBN-Lookup wird in etwa so aussehen:

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

Sie würden den Zugang Legen Sie Ihre Schlüssel in der Ort der XXXXXX. $ IsbnQuery wäre die ISBN-Nummer Sie daran interessiert sind, in. $ isbnData ist eine XML-Datei. Für den Zugriff auf diese Daten, die Sie brauchen, um Ihren Code wissen, was es zu tun haben. Etwas davon wird:

) ; $ xmlData = @ simplexml_load_file ($ isbnData) or die ( "keine Datei geladen");

Jetzt können Sie einzelne Variablen mit Anrufe wie diese:

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

Hier ist eine komplette arbeiten Beispiel:

<? php

$ Suchbegriff = "9780684801223"; / / Die ISBN-Nummer für Ernest Hemingway's alte Mann und das Meer
$ isbnData = "http://isbndb.com/api/books.xml?access_key=XXXXXX&index1=isbn&value1 = $ Suchbegriff"; / / Denken Sie daran, zu ersetzen XXXXXX mit Ihrem eigenen Schlüssel Zugang
) ; $ xmlData = @ simplexml_load_file ($ isbnData) or die ( "keine Datei geladen");
]->Title ; $ title = $ xmlData-> BookList [0] -> BookData [0] -> Titel;
]->AuthorsText ; $ Autoren = $ xmlData-> BookList [0] -> BookData [0] -> AuthorsText;
]->PublisherText ; $ publisher = $ xmlData-> BookList [0] -> BookData [0] -> PublisherText;

); echo ( "$ Titel <br/>");
); echo ( "$ Autoren <br/>");
); echo ( "$ publisher <br/>");

/ / Dieses Beispiel druckt:
/ / Der alte Mann und das Meer
/ / Ernest Hemingway
/ / New York: Scribner Paperback Fiction, 1995.

?>

Permalink | Kommentare

Wie man Manuell Legen Sie eine Gruppe von Benutzern in eine SMF-Forum mit PHP

Posted in SMF (Simple Machine Forum), php von ShortLikeAFox am 30. Juli 2008

Dieses Tutorial setzt voraus, dass Sie vertraut sind mit meiner Post: Wie manuell Legen Sie ein Benutzer in ein SMF Forum PHP benutzen.

Vor kurzem habe ich vor der Herausforderung, bewegte 800 oder so Bands aus einer Datenbank in eine SMF-Forum. Ich vor ein paar Probleme bei der Bewegung, die ich nicht Deckung in der ersten Post:

  1. Die Band-Namen wurden nicht garantiert werden sicher für ein Zeichen für Zeichen in die SMF-Datenbank. Also eine Art von Namen ändern Funktion musste beschäftigt werden.
  2. Die Bands haben keine Passwörter. Also irgendeine Art von Passwort Generation muss beschäftigt werden.

Die Schritte Ich ging zu registrieren alle der Bands im Forum ging ein wenig davon:

Öffnen Sie die Band-Datenbank

für jede (Band) (

Passwort generieren

Umbenennen Band mit "sicheren" name

Grab-und generieren Angaben, die notwendig sind, um den Benutzer

Legen Sie Band in smf_members

Senden Sie eine E-Mail-Band mit dem Kennwort

)

Informationen, die ich zur Verfügung hatte und von der Band-Datenbank, war nützlich inbegriffen: bandName, bandEmail, und bandWebsite

Hier ist die Passwort-Funktion Generation I verwendet (blatently aus totallyphp.co.uk):

Funktion createRandomPassword () (

$ Zeichen = "abcdefghijkmnopqrstuvwxyz023456789";

() * 1000000); srand ((double) microtime () * 1000000);

$ i = 0;

$ pass = ";



while ($ i <= 7) (

33; $ num = rand ()% 33;

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

$ pass = $ pass. $ tmp;

$ i + +;

)

return $ pass;

)

Das Passwort hier ist relativ schwach, aber es war gut genug für meine Zwecke. Jedes Passwort Generation Funktion würde funktionieren hier. Ich habe mich für diese ein, weil es wäre ein Leichtes für die Mitglieder zu erinnern, wenn sie sich nicht zu ändern.

So geht's:

/ / First Verbindung mit dem Band-Datenbank
$ username = "bandUsername";
$ host = "bandHost";
$ mypassword = "bandPassword";
$ db_name = "bandDatabase";

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mypassword") or die ( "kann keine Verbindung zum Server");
("cannot select DB"); mysql_select_db ( "$ db_name") or die ( "kann nicht wählen Sie DB");

/ / Jetzt grab all die Bands aus der Datenbank
$ query = "SELECT * FROM allBands";
$ Bands = mysql_query ($ query) or die ( "Config Fehler 2222b");
$ userRows = mysql_num_rows ($ Bands);

/ / Nun können eine Verbindung zu dem SMF db
$ host = "smfhost"; / / Hostname
$ username = "smfuser; / / MySQL-Benutzernamen
$ mypassword = "smfpassword"; / / MySQL Passwort
$ db_name = "smfdatabase"; / / Name der Datenbank

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mypassword") or die ( "kann keine Verbindung zum Server");
("cannot select DB"); mysql_select_db ( "$ db_name") or die ( "kann nicht wählen Sie DB");

/ / $ vaild_chars wird das Array der zulässigen Zeichen für Benutzernamen. Ich habe mich entschieden, nur Buchstaben und Zahlen. Es gibt noch andere Zeichen, die genutzt werden könnte, dass würde nicht dazu führen, dass ein Problem, aber für Stil Gründen entschied ich mich zu gehen mit nur Buchstaben und Zahlen
$ valid_chars = "abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9";
$ valid_chars = explode ( "", $ valid_chars);

/ / Nun müssen wir Schleife durch jedes Band

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

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

/ / Extract die Band Informationen
Extrakt ($ row);
/ / Erstellen Sie ein Passwort für die Band
$ realPassword = createRandomPassword ();
/ / Habe ich mich für den Echo der bandname und Passwort als Teil meiner Debugging und so sehe ich die Funktion, wie es funktioniert
echo ( "<br/> bandName $ - $ realPassword");
$ newBand = "";
/ / Für jedes Schreiben in der Band-Namen werden wir schauen, um zu sehen, wenn sie mit einem gültigen Zeichen von $ valid_chars. Es es nicht werden wir loswerden und truncate die Band Name
($bandName); $j ++ ){ for ($ j = 0; $ j <strlen ($ bandName); $ j + +) (

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

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

)
/ / Echo ich den neuen Namen für den gleichen Grund, warum ich echo den alten Namen und das Passwort
echo ( "- $ newBand");
/ / Wir haben den neuen Band-Namen .... Lassen Sie uns jetzt beginnen buliding die info wir brauchen, um in der db ...
Mitgliedsname $ = $ newBand;
$ realname = $ newBand; / / ich den richtigen Namen und Mitglied den gleichen Namen. Die Bands können es ändern, wenn sie wollen
$ E-Mail-Adresse = $ bandEmail;
$ websiteUrl = $ bandWebsite; / / Da habe ich die Bands "Websites kann auch sein, daß Sie diese
$ websiteTitle = $ newBand;
$ is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ password = sha1 (strtolower ($ Mitgliedsname). $ realPassword); / / Das Passwort muss verschlüsselt

/ / Stellen Sie sicher, dass ihr kein Mitglied mit dem gleichen Namen in der SMF-Datenbank. Wir wollen nicht versehentlich jemand zweimal
$ query = "SELECT * FROM WHERE smf_members Mitgliedsname = '$ Mitgliedsname" ";
("Config Error 2222343242b"); $ result = mysql_query ($ query) or die ( "Config Fehler 2222343242b");
$ nrows = mysql_num_rows ($ result);

/ / Wenn das Mitglied Name ist gefunden nichts tun
if ($ nrows> 0) ()

else (

/ / Wenn der Benutzer nicht bereits für die Foren, tun Sie dies und senden Sie eine E-Mail ....
$ query = "INSERT INTO smf_members (Mitgliedsname, realname, E-Mail-Adresse, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) VALUES ( '$ Mitgliedsname', '$ realname', '$ E-Mail-Adresse', '$ is_activated', '$ ID_POST_GROUP" , '$ Password', '$ websiteUrl', '$ websiteTitle') ";

("Config Error 2232 "); $ result mysql_query = ($ query) or die ( "Config Fehler 2232");

/ / Jetzt brauchen wir, um die Band eine E-Mail
$ to = $ E-Mail-Adresse;
$ subject = "Ihre Forum-Nutzernamen und das Passwort";

/ / Von
$ header = "ab: Me <me@mysite.com>";

/ / Ihre Nachricht
$ message .= "Ihr Login und Passwort sind unten aufgeführt. Sie können entweder jederzeit ändern. Wenn Sie nicht möchten, dass die Teilnahme an unseren Foren, das ist kein Problem. Just nie Log-in und es wird wie immer nichts passiert ist . \ r \ n ";
$ message .= "Username: $ Mitgliedsname Passwort: $ realPassword \ r \ n";

/ / Senden von E-Mails
$ sentmail = mail ($ an, $ subject, $ message, $ header);
if ($ sentmail)

echo ( "- JA!");
/ / Dies ist der letzte Teil unserer echo. Die "-JA!" wird nur dann gedruckt, wenn eine E-Mail gesendet wird. Also ein voller Ausdruck Zeile wird in etwa wie folgt aus:
/ / Adam Strife - 4s6vsxag - AdamStrife - JA!

)

)
)

Permalink | Kommentare

Wie man Manuell Legen Sie ein Benutzer in ein SMF-Forum mit PHP

Posted in SMF (Simple Machine Forum), php von ShortLikeAFox auf der 28. Juli, 2008

Dieses spezifische Beispiel ist für SMF 1.1.5. Ich kann nicht garantieren, arbeitet er mit einer anderen Version.

Also Sie Simple Machine Forum Software und möchten, geben Sie manuell ein Benutzer? Kein Problem. Ich weiß, dieses Problem scheint sehr spezifisch, aber die Ideen erläutert hier angepasst werden können, um andere Arten von Foren und anderen Datenbank gefahrene Software-Pakete wie Wordpress. Bevor wir uns in genau, wie Sie dies tun können, lassen Sie uns einen Blick auf, wie einfach Machine Foren verfolgt der Nutzer. In der SMF-Datenbank gibt es eine Tabelle mit dem Namen smf_members. Die smf_members Struktur sieht wie folgt aus:

Feld Typ Null

Schlüssel Vorgabe Extra
ID_MEMBER MEDIUMINT (8) unsigned NO PRI NULL AUTO_INCREMENT
Mitgliedsname varchar (80) NO MUL
dateRegistered int (10) unsigned NO MUL 0
Stellen MEDIUMINT (8) unsigned NO MUL 0
ID_GROUP smallint (5) unsigned NO MUL 0
lngfile tinytext NO MUL
lastLogin int (10) unsigned NO MUL 0
realname tinytext NO
instantMessages smallint (5) NO 0
unreadMessages smallint (5) NO 0
buddy_list Text NO
pm_ignore_list Text NO
messageLabels Text NO
passwd varchar (64) NO
E-Mail-Adresse tinytext NO
personalText tinytext NO
Geschlecht tinyint (4) unsigned NO 0
Geburtsdatum Datum NO MUL 0001-01-01
websiteTitle tinytext NO
websiteUrl tinytext NO
Standort tinytext NO
ICQ tinytext NO
AIM varchar (16) NO
YIM varchar (32) NO
MSN tinytext NO
hideEmail tinyint (4) NO 0
showOnline tinyint (4) NO 1
timeFormat varchar (80) NO
Unterschrift Text NO
timeOffset float NO 0
Avatar tinytext NO
pm_email_notify tinyint (4) NO 0
karmaBad smallint (5) unsigned NO 0
karmaGood smallint (5) unsigned NO 0
USERTITLE tinytext NO
notifyAnnouncements tinyint (4) NO 1
notifyOnce tinyint (4) NO 1
notifySendBody tinyint (4) NO 0
notifyTypes tinyint (4) NO 2
memberIP tinytext NO
memberIP2 tinytext NO
secretQuestion tinytext NO
secretAnswer varchar (64) NO
ID_THEME tinyint (4) unsigned NO 0
is_activated tinyint (3) unsigned NO 1
validation_code varchar (10) NO
ID_MSG_LAST_VISIT int (10) unsigned NO 0
additionalGroups tinytext NO
smileySet varchar (48) NO
ID_POST_GROUP smallint (5) unsigned NO MUL 0
totalTimeLoggedIn int (10) unsigned NO 0
passwordSalt varchar (5) NO

Bereichen müssen wir beachten Sie:

  • Mitgliedsname - Self Explanitory.
  • dateRegistered - ist nicht notwendig, aber wenn nicht ausgefüllt werden das Datum registriert zeigt, wie der 31. Dezember 1969. Das Datum wird gespeichert als Epoche Zeitstempel. Ich weiß nicht, wie zur Berechnung der Zeitstempel in Ihrem Kopf? Kein Problem. Ich benutze den freien Generator finden Sie hier.
  • realname - eingefügt werden sollen. Als ich bin nicht sicher, ob ich nur wiederholen, Mitgliedername hier.
  • E-Mail-Adresse - Self Explanitory.
  • is_activated - Muss auf 1 gesetzt, da wir uns manuell aktivieren Mitglied.
  • ID_POST_GROUP - Ich werde nicht lügen. Ich bin mir nicht sicher, was das ist, aber es scheint immer so eingestellt werden, dass 4. So .... Ich habe immer setzen Sie ihn auf 4. Nicht der beste Weg zu programmieren, aber was kann man tun?
  • passwd - Das Passwort, das Sie möchten, geben den neuen Benutzer. Es ist unmöglich, herauszufinden, wie Sie ohne Blick auf die SMF-Dokumentation. Die entsprechenden Code zu verschlüsseln SMF ein Passwort für die Datenbank sieht wie folgt aus:

($memberName).$password) $ passwd = sha1 (strtolower ($ Mitgliedsname). $ password)

In den oben genannten Code-Zeile, $ password ist der Benutzer die tatsächlichen Passwort.

So geht's:

/ / First, Herstellen der Verbindung zur Datenbank SMF

$ host = "hostname"; / / Hostname
$ username = "username"; / / MySQL-Benutzernamen
$ mypassword = "password"; / / MySQL Passwort
$ db_name = "username"; / / Name der Datenbank

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mypassword") or die ( "kann keine Verbindung zum Server");
("cannot select DB"); mysql_select_db ( "$ db_name") or die ( "kann nicht wählen Sie DB");

$ Mitgliedsname = "Ironman";
$ realname = "Tony Stark";
E-Mail-Adresse $ = "ironMan@ironMan.com";
$ is_activated = 1;
$ ID_POST_GROUP = 4;

$ password = "Tony1234";

($memberName).$password); $ password = sha1 (strtolower ($ Mitgliedsname). $ password);

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

$ query = "INSERT INTO smf_members (Mitgliedsname, realname, E-Mail-Adresse, is_activated, ID_POST_GROUP, passwd, dateRegistered) VALUES ( '$ Mitgliedsname', '$ realname', '$ E-Mail-Adresse', '$ is_activated', '$ ID_POST_GROUP', ' $ password ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ result = mysql_query ($ query) or die ( "Fehler SMF 101,234");

Das war's auch schon!

Permalink | Kommentare

Wie man Thumbnail-Bilder mit PHP

Posted in Funktionen, php von ShortLikeAFox am 22. Juli 2008

So dass Sie erstellen möchten ein Miniaturbild aus einem bestimmten Bild ... PHP macht diese Aufgabe einfach. Ich zum ersten Mal schrieb die Funktion aus, um sich mit Bildern hochgeladen von Benutzer auf eine Website ich helfen verwalten. Upload von Bildern auf dieser Website können JPEG-Dateien, PNGs, oder Gifs, so musste ich eine Funktion schreiben, um sich mit allen drei. Dieser Code ist ursprünglich auf einem Funktion finden Sie unter webcheatsheet.com

So geht's:

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

/ / Parse-Pfad für den Ausbau

$ info = pathinfo ($ pathToImages. $ fname);
/ / Weiter nur dann, wenn es sich hierbei um ein JPEG-Bild
($info['extension']) == ‘jpeg’) ) if ((strtolower ($ info [ 'Erweiterung']) == 'jpg') | | (strtolower ($ info [ 'Erweiterung']) == 'jpeg'))
(

/ / Laden des Bilds und bekommen Bildgröße
$ img = imagecreatefromjpeg ( "($ pathToImages) ($ fname)");
$ width = imagesx ($ img);
$ height = imagesy ($ img);

/ / Berechnung der Thumbnail-Größe
$ new_width = $ thumbWidth;
$ new_height = floor ($ height * ($ thumbWidth / $ width));

/ / Erstellen Sie eine neue temporäre Image
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopieren und die Größe alt Bild in neues Bild
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ width, $ height);

/ / Save Thumbnail in eine Datei
imagejpeg ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

if (strtolower ($ info [ 'Erweiterung']) == 'gif')
(

/ / Laden des Bilds und bekommen Bildgröße
$ img = imagecreatefromgif ( "($ pathToImages) ($ fname)");
$ width = imagesx ($ img);
$ height = imagesy ($ img);

/ / Berechnung der Thumbnail-Größe
$ new_width = $ thumbWidth;
$ new_height = floor ($ height * ($ thumbWidth / $ width));

/ / Erstellen Sie eine neue temporäre Image
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopieren und die Größe alt Bild in neues Bild
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ width, $ height);

/ / Save Thumbnail in eine Datei
imagegif ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

if (strtolower ($ info [ 'Erweiterung']) == 'png')
(

/ / Laden des Bilds und bekommen Bildgröße
$ img = imagecreatefrompng ( "($ pathToImages) ($ fname)");
$ width = imagesx ($ img);
$ height = imagesy ($ img);

/ / Berechnung der Thumbnail-Größe
$ new_width = $ thumbWidth;
$ new_height = floor ($ height * ($ thumbWidth / $ width));

/ / Erstellen Sie eine neue temporäre Image
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopieren und die Größe alt Bild in neues Bild
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, $ new_height, $ width, $ height);

/ / Save Thumbnail in eine Datei
imagepng ($ tmp_img, "($ pathToThumbs) ($ fname)");

)

)

Wie das funktioniert

Die Funktion createThumbs nimmt vier Argumente.

  • $ pathToImages -> Der Pfad zu dem Ordner, die Image-Datei ist in. Es könnte in etwa so aussehen: / home / content / username / html / Liste / uploads /
  • $ fname -> Der Dateiname: pic1.gif, johnny.jpg, etc. ...
  • $ pathToThumbs -> Der Pfad zu dem Ordner, den Sie wollen, dass die Thumbnail-Bild, um es zu werden in. Sie nicht möchten, dass es sich hierbei um den gleichen Weg wie $ pathToImages, weil die Thumbnail-Bild wird die den gleichen Namen wie das ursprüngliche Bild.
  • $ thumbWidth -> Die Breite, dass Sie den Daumennagel, um zu werden, in Pixel.

Ein wichtiger Hinweis, dass ich hier machen sollte ist, dass diese Funktion hat nichts im Ort, andere als die Dateierweiterung prüfen, um sicherzustellen, dass die Bild-Dateien enthalten nichts schädliche. Da die Dateien createThumbs () arbeitet mit bereits hochgeladen wird davon ausgegangen, dass die Dateien wurden ordnungsgemäß geprüft.

Das erste, was createThumbs () tut, ist Call-pathinfo (). pathinfo () bricht die Teile von einem Pfad in ein Array. Dies ist nützlich für uns, denn wir brauchen die Datei-Erweiterung zu schaffen, richtig auf das Vorschaubild. Weiter createThumbs () prüft, um zu sehen, ob es sich um ein jpeg. Wenn die Original-Datei ist eine JPEG-createThumbs schafft ein neues Bild basiert auf dem ursprünglichen Bild mit imagecreatefromjpeg (). Der nächste Schritt ist, um die Breite und Höhe dieses Bild (imagesx (), imagesy ()). Mit $ thumbWidth und das Verhältnis der ursprünglichen Breite und Höhe createThumbs () setzt die neue Breite und Höhe des Thumbnail. Mit Hilfe dieser neuen Verhältnisse createThumbs () erzeugt eine "leere" Bild, wird die gleiche Breite und Höhe des Thumbnail mit imagecreatetruecolor (). Imagecopyresized () wird verwendet, um die Größe des Bildes und speichern Sie sie in die "leere" gerade erstellt haben. imagecopyresized () mag, wie es dauert eine Menge von Parametern, aber wenn Sie einen Blick auf die Dokumentation ist es wirklich nicht so kompliziert. Nun, da die Thumbnail existiert als True Color Bild createThumbs alle Bedürfnisse zu tun ist, konvertiert die Datei in eine jpeg. Um dies zu tun imagejpeg () aufgerufen wird.

Das ist, wie die Funktion arbeitet für JPEG-Dateien. Es gibt minimale Unterschiede für. PNGs und. Gifs.

Permalink | Kommentare

How to Write Browser-spezifischen Code mit PHP

Posted in php durch ShortLikeAFox am 21. Juli 2008

So dass Sie schreiben wollen, Code, der nur auf bestimmte Browser ... Es gibt eine Reihe von Gründen zu wollen, dies zu tun. Das erste Mal, dass ich persönlich notwendig, dies zu tun aufgetreten war, wenn ich versuchen, ein mp3 auf eine bestimmte Seite. Aus irgendeinem Grund konnte ich nicht schreiben, den Code so, dass die mp3 spielen würde auf der Browser I Test auf (IE, Firefox und Opera), und Validierung zur gleichen Zeit. Wenn ich mich richtig erinnere, war es, dass Internet Explorer wurde, die das Problem verursacht. Die Lösung kam ich mit war, ein wenig PHP, um herauszufinden, wenn der Anwender wurde mit IE, und dann einbetten die mp3 in Nicht-Code gültig, wenn dies der Fall war.

Diese Lösung führte zu der MP3-Wiedergabe immer korrekt und die Seite immer zu validieren, weil die W3C-Validator nie identifiziert sich als IE. Diese sind vielleicht nicht die meisten ethischen Weg zu erreichen Einhaltung der W3C, aber es funktioniert.

Ein weiteres Mal, wenn ich daran erinnern, das zu schreiben Browser-spezifischen Code ist, wenn ich hatte ein Problem mit IE 6 nicht meine Anzeige. PNG-Bilder korrekt. Ich googeln um und fanden ein paar Lösungen für das Problem, aber beide von ihnen endete Messing bis die gesamte Schicht Standorten auf meinen Seiten. Statt der Fehlersuche, dass Problem, ich ging mit dem Quick-Lösung und beschloss, Display angezeigt. Gifs, wenn der Benutzer hatte IE 6. Wenn der Benutzer hatte einen anderen Browser, der hatte. Png Probleme, die ich gestaltet, dass war zu schlecht für ihn.

So geht's:

Zunächst müssen Sie schreiben ein wenig Code-Zeile, um herauszufinden, was Ihre Browser-Benutzer hat. Hier ist, wie man das mit PHP:

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

Hier sind drei Beispiele für das, was $ visitorsOS aussehen kann

  • 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; en-US; rv: 1.9) Gecko/2008052906 Firefox

Der erste Benutzer hat Internet Explorer 6, die zweite Oper 9,51, und der dritte Firefox.

Jetzt, da wir wissen, mehr Informationen, als wir wirklich brauchen, über die Besucher des Computers müssen wir setzen, dass die Informationen für einen guten Zweck. Nehmen wir an, wir schreiben wollen, Code, werden nur angezeigt, wenn der Benutzer ausgeführt wird jeder beliebigen Version von Internet Explorer. In diesem Fall würden Sie dies tun:

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

Code, wird nur angezeigt, wenn Benutzer hat IE

)

else (

Code, der angezeigt werden soll in allen anderen Fällen

)

Ich benutze eregi, ein Groß-und Kleinbuchstaben regulären Ausdruck übereinstimmen statt ereg, ein Groß-und Kleinschreibung regulären Ausdruck übereinstimmen. Ich kann mich nicht erinnern, wenn ich das aus Paranoia, oder wenn ich tatsächlich einen Fall, in dem Internet Explorer identifiziert sich als MSIE. In jedem Fall eregi wird nicht weh tun alles, damit es ist das, was ich nutzen. Wollen, schreiben Sie den Code für bestimmte Versionen von IE würde nur eine kleine Änderung. statt ... (eregi ( "MSIE" ...) Ich würde so etwas wie (eregi ( "MSIE 6.0" ...), wenn ich wollte, dass nur Code erschien für MSIE 6.0.

Permalink | Kommentare