Kako ručno umetanje grupa korisnika u SMF forum koristeći PHP

Posted u SMF (Simple Machine Forum), php po ShortLikeAFox na 30. srpnja 2008

Ovaj Tutorial pretpostavlja da su upoznati s mojim post: kako se ručno Umetni Korisničke u SMF forum Korištenje PHP.

Nedavno sam izazov i suočen sele 800 ili tako bendova iz baze podataka u SMF forum. Suočila sam nekoliko problema prilikom čega je potez da nisam pokriće u prvi post:

  1. Band imena nisu bili zajamčeni biti siguran za znak po znak premjestiti u SMF bazu podataka. Tako je nekakav naziv mijenjanjem funkcija morali biti zaposlen.
  2. The bandovi nemaju lozinke. Tako neki tip lozinku naraštaj mora biti zaposlen.

Koraci ja obilazili registrirati sve od bendova na forum ode malo kao ovaj:

Otvorite Band Database

za svaku (Band) (

Izradi Lozinka

Preimenuj Band sa "sigurno" ime

Grabežljivac i generiranje informacije potrebne za umetanje korisnik

Umetni Band u smf_members

Band Pošalji e-mail s lozinkom

)

Informacije sam imao na raspolaganju bazu podataka iz benda da je korisno uključiti: bandName, bandEmail i bandWebsite

Ovdje je funkcija generiranje zaporke sam koristio (blatently oduzeo totallyphp.co.uk):

createRandomPassword funkcija () (

$ slova = "abcdefghijkmnopqrstuvwxyz023456789";

() * 1000000); srand ((dvokrevetne) microtime () * 1000000);

$ i = 0;

$ pass = ";



a ($ i <= 7) (

33; $ num = ivica ()% 33;

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

$ pass = $ pass. $ tmp;

$ i + +;

)

povratak $ pass;

)

Lozinka kreirana ovdje je relativno slab, ali je dovoljno dobar za moje potrebe. Svaka lozinka generiranje funkcija raditi će se ovdje. Izabrao sam ovaj jer bi se lako za članove zapamtiti ako su izabrali da ne promijeniti ga.

Kako to učiniti:

/ / Prvi povezati s bendom baze podataka
$ username = "bandUsername";
$ host = "bandHost";
$ MojaLozinka = "bandPassword";
$ db_name = "bandDatabase";

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ MojaLozinka") ili umrijeti ( "ne može spojiti na poslužitelj");
("cannot select DB"); mysql_select_db ( "$ db_name") ili umrijeti ( "ne mogu odabrati DB");

/ / Sada grabežljivac sve od bendova iz baze podataka
$ upit = "SELECT * FROM allBands";
$ bendova = mysql_query ($ upit) ili umrijeti ( "Config 2222b Greška");
$ userRows = mysql_num_rows ($ bendova);

/ / Sada omogućuje spajanje na SMF db
$ host = "smfhost", / / host ime
$ username = "smfuser; / / MySQL korisničko ime
$ MojaLozinka = "smfpassword", / / MySQL password
$ db_name = "smfdatabase", / / Database ime

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ MojaLozinka") ili umrijeti ( "ne može spojiti na poslužitelj");
("cannot select DB"); mysql_select_db ( "$ db_name") ili umrijeti ( "ne mogu odabrati DB");

/ / $ vaild_chars će biti niz znakova Dozvoljeno za korisnička imena. Sam odlučio dopustiti samo slova i brojki. Postoje i druge znakove da bi se mogla koristiti da ne bi uzrok problema, ali za stil razloga sam odlučio ići sa samo slova i brojeva
$ valid_chars = "abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9";
$ valid_chars = eksplodirati ( "", $ valid_chars);

/ / Sada trebamo petlja kroz svaki bend

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

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

/ / Izdvojite band informacije
ekstrakt ($ row);
/ / Stvaranje lozinke za pojas
$ realPassword = createRandomPassword ();
/ / Ja izabrati da se bandname jeka i lozinku kao dio moje ispravljanje pogrešaka i da vas mogu vidjeti kako to radi funkcija
echo ( "$ <br/> bandName - $ realPassword");
newBand $ = "";
/ / Za svako slovo u ime benda ćemo se gledati da li to odgovara važećim znakom od $ valid_chars. Ona to ne reći ćemo odstraniti ga i izrežite benda ime
($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. benda $ [$ j];

)
/ / Echo sam novi naziv za istog razloga sam jeka je staro ime i lozinku
echo ( "- $ newBand");
/ / Imamo novi Band ime .... Sada ćemo započeti buliding info trebamo umetnuti u db ...
memberName $ = $ newBand;
$ $ = realname newBand; / / ja postaviti pravo ime i naziv isto član. U bendova može promijeniti ako to žele
emailAddress $ = $ bandEmail;
websiteUrl $ = $ bandWebsite; / / Od imam bendova 'web-mjesta možda i upisati ih
websiteTitle $ = $ newBand;
$ is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ lozinka = sha1 (strtolower ($ memberName). realPassword $), / / Lozinka mora biti šifriran

/ / Provjerite jesu li njihove isn'ta člana s istim imenom u SMF bazu podataka. Mi ne želimo ući bilo tko slučajno dvaput
$ upit = "SELECT * FROM smf_members GDJE memberName = '$ memberName'";
("Config Error 2222343242b"); $ rezultat = mysql_query ($ upit) ili umrijeti ( "Config 2222343242b Greška");
$ nrows = mysql_num_rows ($ rezultat);

/ / Ako je članica ime je pronađeno ništa
if ($ nrows> 0) ()

else (

/ / Ako korisnik nije već prijavio za forume, to i poslati e-mail ....
$ upit = "INSERT U smf_members (memberName, realname, emailAddress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) vrijednosti ( '$ memberName", "$ realname", "$ emailAddress", "$ is_activated", "$ ID_POST_GROUP' , '$ Lozinka', '$ websiteUrl', '$ websiteTitle') ";

("Config Error 2232 "); $ rezultat = mysql_query ($ upit) ili umrijeti ( "Config Pogreška 2232");

/ / Sada trebamo poslati poruku e-pošte grupe
$ do = $ emailAddress;
$ subject = "forumu Vaš korisničko ime i lozinku";

/ / Od
$ zaglavlje = "iz: Me <me@mysite.com>";

/ / Vaša poruka
$ poruka .= "Vaše ime i zaporka su navedene u nastavku. Možete promijeniti ili na bilo. Ako ne želite sudjelovati u forumima, to je bez problema. Samo ne prijavite se i bit će kao ništa ikada dogodilo . \ r \ n ";
$ poruka .= "Korisničko ime: Lozinka memberName $: $ realPassword \ r \ n";

/ / Pošalji e-mail
$ poslanapošta = mail ($ do, $ subject, $ poruka, $ zaglavlje);
if ($ poslanapošta)

echo ( "- DA!");
/ / Ovo je posljednji dio naše jeka. U "-DA!" će biti samo ako je tiskana e-mail je poslan. Tako potpuni ispis linija će izgledati otprilike ovako:
/ / Adam Strife - 4s6vsxag - AdamStrife - DA!

)

)
)

Kako ručno umetanje korisnika u SMF forum koristeći PHP

Posted u SMF (Simple Machine Forum), php po ShortLikeAFox na 28. srpnja 2008

Ovo je specifičan primjer za SMF 1.1.5. Ne mogu garantirati da će raditi s bilo koje druge verzije.

Zato što pokrenete Simple Machine Forum Software i želite ručno unijeti korisnik? Nema problema. Znam taj problem čini vrlo specifičnim, ali ideja je objašnjeno ovdje se mogu prilagođenom druge vrste forumi i ostale baze podataka upravljan programskih paketa kao što su Wordpress. Prije nego što smo dobili upravo u tome, da je osmotriti kako Simple Machine Forum vodi evidenciju o korisnicima. U SMF baze podataka nalazi se tablica zove smf_members. U smf_members struktura izgleda ovako:

Polje Vrsta Null

Ključ Zadano Extra
ID_MEMBER mediumint (8) nepotpisani NE PRI NULL auto_increment
memberName varchar (80) NE Mul
dateRegistered int (10) nepotpisani NE Mul 0
komentara mediumint (8) nepotpisani NE Mul 0
ID_GROUP smallint (5) nepotpisani NE Mul 0
lngfile tinytext NE Mul
lastLogin int (10) nepotpisani NE Mul 0
realname tinytext NE
instantMessages smallint (5) NE 0
unreadMessages smallint (5) NE 0
buddy_list tekst NE
pm_ignore_list tekst NE
messageLabels tekst NE
passwd varchar (64) NE
emailAddress tinytext NE
personalText tinytext NE
spol tinyint (4) nepotpisani NE 0
Datum rođenja datum NE Mul 0001-01-01
websiteTitle tinytext NE
websiteUrl tinytext NE
mjesto tinytext NE
ICQ tinytext NE
AIM varchar (16) NE
YIM varchar (32) NE
MSN tinytext NE
hideEmail tinyint (4) NE 0
showOnline tinyint (4) NE 1
timeFormat varchar (80) NE
potpis tekst NE
timeOffset plutati NE 0
avatar tinytext NE
pm_email_notify tinyint (4) NE 0
karmaBad smallint (5) nepotpisani NE 0
karmaGood smallint (5) nepotpisani NE 0
usertitle tinytext NE
notifyAnnouncements tinyint (4) NE 1
notifyOnce tinyint (4) NE 1
notifySendBody tinyint (4) NE 0
notifyTypes tinyint (4) NE 2
memberIP tinytext NE
memberIP2 tinytext NE
secretQuestion tinytext NE
secretAnswer varchar (64) NE
ID_THEME tinyint (4) nepotpisani NE 0
is_activated tinyint (3) nepotpisani NE 1
validation_code varchar (10) NE
ID_MSG_LAST_VISIT int (10) nepotpisani NE 0
additionalGroups tinytext NE
smileySet varchar (48) NE
ID_POST_GROUP smallint (5) nepotpisani NE Mul 0
totalTimeLoggedIn int (10) nepotpisani NE 0
passwordSalt varchar (5) NE

Polja nam je potrebno obratiti pažnju na:

  • memberName - Samopomoć Explanitory.
  • dateRegistered - Nije potrebno, ali ako se ne napuni se datum prikazuje kao registrirani 31. prosinca 1969. Datum se sprema kao vremenske epohe. Ne znam kako izračunati timestamps u tvoju glavu? Nema problema. Ja koristiti besplatno generator pronaći ovdje.
  • realname - treba umetnuti. Kad nisam siguran bih samo ponoviti memberName ovdje.
  • emailAddress - Samopomoć Explanitory.
  • is_activated - Mora biti postavljen na 1 jer mi se ručno aktivirati član.
  • ID_POST_GROUP - neću lagati. Nisam siguran što je ovo, ali to uvijek izgleda kao da se postavi na 4. Dakle .... Uvijek sam ga postavite na 4. Nije najbolji način za program, ali ono što mogu učiniti?
  • passwd - Lozinka želite dati novi korisnik. Nemoguće je shvatiti kako ući bez gledate SMF dokumentaciju. Ispravna šifra za šifriranje jedan SMF lozinku za baze podataka izgleda ovako:

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

U gore liniju koda, $ lozinka je stvarni lozinku korisnika.

Kako to učiniti:

/ / Prvo, spojite se na SMF bazu podataka

$ host = "hostname", / / host ime
$ username = "korisničko ime", / / MySQL korisničko ime
$ MojaLozinka = "lozinka", / / MySQL password
$ db_name = "korisničko ime", / / Database ime

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ MojaLozinka") ili umrijeti ( "ne može spojiti na poslužitelj");
("cannot select DB"); mysql_select_db ( "$ db_name") ili umrijeti ( "ne mogu odabrati DB");

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

$ lozinka = "Tony1234";

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

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

$ upit = "INSERT U smf_members (memberName, realname, emailAddress, is_activated, ID_POST_GROUP, passwd, dateRegistered) vrijednosti ( '$ memberName', '$ realname', '$ emailAddress',' $ is_activated ',' $ ID_POST_GROUP ',' $ lozinka ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ rezultat = mysql_query ($ upit) ili umrijeti ( "Pogreška SMF 101.234");

To je sve što je na njemu!

Kako napraviti thumbnail slike koristeći PHP

Posted in funkcija, php po ShortLikeAFox dana 22. srpnja 2008

Tako želite izraditi sličice iz slika dano PHP ... čini ovaj jednostavan zadatak. Ja prvi napisao je funkcija koja se bavi ispod slike od strane korisnika na site mogu pomoći administraciju. Postavljene slike na ovoj stranici mogu jpegs, pngs, ili gifs, pa sam morao napisati funkcije za rad sa sva tri. Ovaj kod je izvorno temeljen isključivanje funkcije naći na webcheatsheet.com

Kako to učiniti:

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

/ / Analizirati put za proširenje

$ info = pathinfo ($ pathToImages. $ fname);
/ / Nastaviti samo ako je to JPEG slike
($info['extension']) == ‘jpeg’) ) if ((strtolower ($ info [ 'ekstenziju']) == 'jpg') | | (strtolower ($ info [ 'ekstenziju']) == 'jpeg'))
(

/ / Učitavanje slike i dobiti veličina slike
$ img = imagecreatefromjpeg ( "$ (pathToImages) ($ fname)");
$ width = imagesx ($ img);
visina imagesy = $ ($ img);

/ / Izračunajte sličicama veličini
new_width $ = $ thumbWidth;
new_height kat = $ ($ * visina (thumbWidth $ / $ width));

/ / Izraditi novu privremenu sliku
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiranje i veličinu slike stare u novu sliku
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, new_height $, $ width, $ visina);

/ / Spremanje u datoteku sličice
imagejpeg ($ tmp_img, "$ (pathToThumbs) ($ fname)");

)

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

/ / Učitavanje slike i dobiti veličina slike
$ img = imagecreatefromgif ( "$ (pathToImages) ($ fname)");
$ width = imagesx ($ img);
visina imagesy = $ ($ img);

/ / Izračunajte sličicama veličini
new_width $ = $ thumbWidth;
new_height kat = $ ($ * visina (thumbWidth $ / $ width));

/ / Izraditi novu privremenu sliku
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiranje i veličinu slike stare u novu sliku
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, new_height $, $ width, $ visina);

/ / Spremanje u datoteku sličice
imagegif ($ tmp_img, "$ (pathToThumbs) ($ fname)");

)

if (strtolower ($ info [ 'ekstenziju']) == "PNG")
(

/ / Učitavanje slike i dobiti veličina slike
$ img = imagecreatefrompng ( "$ (pathToImages) ($ fname)");
$ width = imagesx ($ img);
visina imagesy = $ ($ img);

/ / Izračunajte sličicama veličini
new_width $ = $ thumbWidth;
new_height kat = $ ($ * visina (thumbWidth $ / $ width));

/ / Izraditi novu privremenu sliku
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Kopiranje i veličinu slike stare u novu sliku
imagecopyresized ($ tmp_img, $ img, 0, 0, 0, 0, $ new_width, new_height $, $ width, $ visina);

/ / Spremanje u datoteku sličice
imagepng ($ tmp_img, "$ (pathToThumbs) ($ fname)");

)

)

Kako to radi

Funkcija createThumbs traje četiri argumente.

  • $ pathToImages -> Put do mape slikovne datoteke je rezervirati To bi moglo izgledati otprilike ovako: / home / sadržaj / ime / html / popis / učitavanja /
  • $ fname -> Ime datoteke: pic1.gif, johnny.jpg, etc ...
  • $ pathToThumbs -> Put do mape u koju želite na sličicu za rezervirati ne želite da se ovaj put isto kao $ pathToImages, jer sličicu će imati isto ime kao izvornu sliku.
  • $ thumbWidth -> širinu koju želite sličice da se u pikselima.

Važna napomena da je ovdje napravite je da ove funkcije nema na mjestu, osim datotečni nastavak provjerite, da biste bili sigurni da slikovne datoteke sadrže zlonamjerni ništa. Budući da se datoteke createThumbs () radi s već učitali se pretpostavlja da se datoteke su prikladne scrutinized.

Prva stvar createThumbs () to je poziv pathinfo (). pathinfo () prijeloma dijelova put u niz. To je korisno za nas, jer mi je potrebno datotečni nastavak za pravilno izraditi sličice. Sljedeća createThumbs () provjerava da li je riječ o jpeg. Ako je originalni datoteke je JPEG createThumbs stvara novu sliku na temelju izvorne slike s imagecreatefromjpeg (). Sljedeći korak je da bi dobili širinu i visinu slike (imagesx (), imagesy ()). Korištenje $ thumbWidth i omjer originalne širine i visine createThumbs () postavlja nove širine i visine sličice. Upotreba ove nove Pokazivači createThumbs () stvara "prazne" snimke koje će biti iste širine i visine sličice sa imagecreatetruecolor (). Imagecopyresized () se koristi za veličinu slika i spremiti ga u "prazno" upravo stvorili. imagecopyresized () može činiti kao da se puno parametara, ali ako vas pogledajte dokumentaciju ga stvarno nije to komplicirano. A da sličice postoji kao istinski boje slike createThumbs sve treba učiniti je pretvoriti datoteku u jpeg. Da biste to učinili imagejpeg () se zove.

To je način na koji funkcioniraju djela za jpegs. Tu su minimalne razlike. Pngs i. Gifs.

Kako napisati preglednik specifični kod sa PHP

Posted in PHP po ShortLikeAFox na 21. srpnja 2008

Tako želite napisati kod koji se pojavljuje samo na određenim preglednicima ... Postoji niz razloga da želite to učiniti. Prvi put sam osobno potreban za to odvijalo dok sam bio pokušava ugraditi MP3 na određenu stranicu. Za nekog razloga ne bih mogao pisati kod, tako da bi mp3 igrati na preglednike sam na probu (IE, Firefox, i Opera), i potvrditi u isto vrijeme. Ako se sjećam točno, to je bio Internet Explorer koja je uzrok tog problema. Rješenje sam došao gore sa bilo da koriste malo PHP kako bi saznali kada korisnik je koristeći IE, i onda ugraditi u mp3-u nisu valjani broj, ako je to slučaj.

Ovo rješenje je dovelo do mp3 uvijek svira točno i uvijek provjeri na stranici, jer je W3C validator ne identificira kao IE. To možda neće biti najveći etički način da dođete do W3C poštovanje, ali to radi.

Drugi put Sjećam se trebaju pisati preglednik određene kod je kad sam ima problema sa IE 6 ne prikazujete moje. PNG slike pravilno. Ja googled okolo i našao nekoliko rješenja problema, ali ih oboje zavrsilo messing up cjelokupni sloj lokacije na moje stranice. Umjesto da se problem rješavanje problema, ja ode sa brzo rješenje i odlučio prikazati. Gifs kada je korisnik imao IE 6. Ako je korisnik imao drugog preglednika koji je imao. Png problema sam shvaćen da je previše loše za njega.

Kako to učiniti:

Prvo morate napisati malo linija koda na lik iz Vašeg preglednika što korisnik ima. Evo kako to učiniti s PHP:

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

Slijede tri primjera $ visitorsOS što može izgledati

  • Mozilla/4.0 (kompatibilan; 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

Prvi korisnik je Internet Explorer 6, drugi Opera 9.51, a treći Firefox.

Sada znamo da se više informacija nego što zaista trebate o posjetitelja računala nam je potrebno da se te informacije koristiti na dobro. Recimo da želite napisati kod koji će se pojaviti samo ako je korisnik prikazuju bilo koju verziju programa Internet Explorer. U tom slučaju biste to učinili:

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

Kod koji će se pojaviti samo ako je korisnik odnosno

)

else (

Kod koji će se pojaviti u svim drugim slučajevima

)

Koristim eregi, a case insensitive Regularni izraz utakmicu umjesto ereg je case sensitive Regularni izraz utakmicu. Ne sjećate li ja to iz parnoja, ili ako sam zapravo našao u kojem slučaju Internet Explorera identificiran kao msie. U oba slučaja eregi neće boljeti nešto tako da se što ću koristiti. Žele pisati kod za određene verzije IE bi samo zahtijevaju malo promijeniti. umjesto ... (eregi ( 'MSIE' ...) bih koristiti nešto poput (eregi ( "MSIE 6.0 '...) ako sam htjela da se samo pojavio kod za MSIE 6.0.


Next entries »